home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / M2V11-1.LHA / modula / amiga / AmigaGuide.def < prev    next >
Encoding:
Text File  |  1993-11-10  |  9.2 KB  |  285 lines

  1. DEFINITION FOR LIBRARY MODULE AmigaGuide ;
  2.  
  3. FROM SYSTEM    IMPORT ADDRESS, STRING, LONGSET ;
  4. FROM Utility    IMPORT TagItemPtr, Tag, TAG_USER, HookPtr, Hook ;
  5. FROM Exec    IMPORT Node, Message, LibraryPtr ;
  6. FROM Dos    IMPORT FileLockPtr ;
  7. FROM Intuition    IMPORT ScreenPtr ;
  8.  
  9. TYPE
  10.   XRefPtr        = POINTER TO XRef ;
  11.   AmigaGuideMsgPtr    = POINTER TO AmigaGuideMsg ;
  12.   NewAmigaGuidePtr    = POINTER TO NewAmigaGuide ;
  13.   AmigaGuideHostPtr    = POINTER TO AmigaGuideHost ;
  14.   opFindHostPtr        = POINTER TO opFindHost ;
  15.   opNodeIOPtr        = POINTER TO opNodeIO ;
  16.   opExpungeModePtr    = POINTER TO opExpungeNode ;
  17.  
  18. CONST
  19.   APSH_TOOL_ID        = 11000 ;
  20.   StartupMsgID        = APSH_TOOL_ID+1 ;    (* Startup message       *)
  21.   LoginToolID        = APSH_TOOL_ID+2 ;    (* Login a tool SIPC port  *)
  22.   LogoutToolID        = APSH_TOOL_ID+3 ;    (* Logout a tool SIPC port *)
  23.   ShutdownMsgID        = APSH_TOOL_ID+4 ;    (* Shutdown message       *)
  24.   ActivateToolID    = APSH_TOOL_ID+5 ;    (* Activate tool       *)
  25.   DeactivateToolID    = APSH_TOOL_ID+6 ;    (* Deactivate tool       *)
  26.   ActiveToolID        = APSH_TOOL_ID+7 ;    (* Tool Active           *)
  27.   InactiveToolID    = APSH_TOOL_ID+8 ;    (* Tool Inactive       *)
  28.   ToolStatusID        = APSH_TOOL_ID+9 ;    (* Status message       *)
  29.   ToolCmdID        = APSH_TOOL_ID+10 ;    (* Tool command message       *)
  30.   ToolCmdReplyID    = APSH_TOOL_ID+11 ;    (* Reply to tool command   *)
  31.   ShutdownToolID    = APSH_TOOL_ID+12 ;    (* Shutdown tool       *)
  32.  
  33. (* Attributes accepted by GetAmigaGuideAttr() *)
  34.   AGA_Dummy        = TAG_USER ;
  35.   AGA_Path        = AGA_Dummy+1 ;
  36.   AGA_XRefList        = AGA_Dummy+2 ;
  37.   AGA_Activate        = AGA_Dummy+3 ;
  38.   AGA_Context        = AGA_Dummy+4 ;
  39.  
  40.   AGA_HelpGroup        = AGA_Dummy+5 ;
  41.   (* (ULONG) Unique identifier *)
  42.  
  43.   AGA_Reserved1        = AGA_Dummy+6 ;
  44.   AGA_Reserved2        = AGA_Dummy+7 ;
  45.   AGA_Reserved3        = AGA_Dummy+8 ;
  46.  
  47.   AGA_ARexxPort        = AGA_Dummy+9 ;
  48.     (* MsgPortPtr ) Pointer to the ARexx message port (V40) *)
  49.  
  50.   AGA_ARexxPortName    = AGA_Dummy+10 ;
  51.    (* (STRING) Used to specify the ARexx port name (V40) (not copied) *)
  52.  
  53.  
  54. TYPE
  55.   AMIGAGUIDECONTEXT = ADDRESS ;
  56.  
  57. TYPE
  58.   AmigaGuideMsg = RECORD
  59.     agm_Msg     : Message ; (* Embedded Exec message structure    *)
  60.     agm_Type    : LONGINT ; (* Type of message            *)
  61.     agm_Data    : ADDRESS ; (* Pointer to message data        *)
  62.     agm_DSize   : LONGINT ; (* Size of message data        *)
  63.     agm_DType   : LONGINT ; (* Type of message data        *)
  64.     agm_Pri_Ret : LONGINT ; (* Primary return value        *)
  65.     agm_Sec_Ret : LONGINT ; (* Secondary return value        *)
  66.     agm_System1 : ADDRESS ;
  67.     agm_System2 : ADDRESS ;
  68.   END ;
  69.  
  70. (* Allocation description structure *)
  71.  
  72.   NewAmigaGuide = RECORD
  73.     nag_Lock       : FileLockPtr;(* Lock on the document directory         *)
  74.     nag_Name        : STRING ;     (* Name of document file             *)
  75.     nag_Screen       : ScreenPtr ; (* Screen to place windows within         *)
  76.     nag_PubScreen  : STRING ;     (* Public screen name to open on         *)
  77.     nag_HostPort   : STRING ;     (* Application's ARexx port name         *)
  78.     nag_ClientPort : STRING ;     (* Name to assign to the clients ARexx port *)
  79.     nag_BaseName   : STRING ;     (* Base name of the application         *)
  80.     nag_Flags       : LONGSET ;     (* Flags                     *)
  81.     nag_Context       : POINTER TO ARRAY OF STRING ;
  82.     nag_Node       : STRING ;     (* Node to align on first (defaults to Main)*)
  83.     nag_Line       : LONGINT ;     (* Line to align on                 *)
  84.     nag_Extens       : TagItemPtr; (* Tag array extension                 *)
  85.     nag_Client       : ADDRESS ;     (* Private! MUST be NULL             *)
  86.   END ;
  87.  
  88. (* public Client flags *)
  89. CONST
  90.   HTF_LOAD_INDEX = {0}  ;    (* Force load the index at init time      *)
  91.   HTF_LOAD_ALL   = {1}  ;    (* Force load the entire database at init *)
  92.   HTF_CACHE_NODE = {2}  ;     (* Cache each node as visited          *)
  93.   HTF_CACHE_DB     = {3}  ;     (* Keep the buffers around until expunge  *)
  94.   HTF_UNIQUE     = {15} ;    (* Unique ARexx port name          *)
  95.   HTF_NOACTIVATE = {16} ;    (* Don't activate window          *)
  96.  
  97.   HTFC_SYSGADS     = 080000000H ;
  98.  
  99. (* Callback function ID's *)
  100.   HTH_OPEN     = 0 ;
  101.   HTH_CLOSE     = 1 ;
  102.  
  103.   HTERR_NOT_ENOUGH_MEMORY    = 100 ;
  104.   HTERR_CANT_OPEN_DATABASE    = 101 ;
  105.   HTERR_CANT_FIND_NODE        = 102 ;
  106.   HTERR_CANT_OPEN_NODE        = 103 ;
  107.   HTERR_CANT_OPEN_WINDOW    = 104 ;
  108.   HTERR_INVALID_COMMAND        = 105 ;
  109.   HTERR_CANT_COMPLETE        = 106 ;
  110.   HTERR_PORT_CLOSED        = 107 ;
  111.   HTERR_CANT_CREATE_PORT    = 108 ;
  112.   HTERR_KEYWORD_NOT_FOUND    = 113 ;
  113.  
  114. TYPE
  115.   AMIGAGUIDEHOST = AmigaGuideHostPtr ;
  116.  
  117. (* Cross reference node *)
  118. TYPE
  119.   XRef = RECORD
  120.     xr_Node : Node ;       (* Embedded node        *)
  121.     xr_Pad  : CARDINAL ;   (* Padding            *)
  122.     xr_DF   : ADDRESS ;       (* Document defined in    *)
  123.     xr_File : STRING ;       (* Name of document file    *)
  124.     xr_Name : STRING ;       (* Name of item        *)
  125.     xr_Line : LONGINT ;       (* Line defined at        *)
  126.   END ;
  127.  
  128. CONST
  129.   XRSIZE = SIZE( XRef ) ;
  130.  
  131. (* Types of cross reference nodes *)
  132.   XR_GENERIC    = 0 ;
  133.   XR_FUNCTION    = 1 ;
  134.   XR_COMMAND    = 2 ;
  135.   XR_INCLUDE    = 3 ;
  136.   XR_MACRO    = 4 ;
  137.   XR_STRUCT    = 5 ;
  138.   XR_FIELD    = 6 ;
  139.   XR_TYPEDEF    = 7 ;
  140.   XR_DEFINE    = 8 ;
  141.  
  142. (* Callback handle *)
  143. TYPE
  144.   AmigaGuideHost = RECORD
  145.     agh_Dispatcher : Hook    ; (* Dispatcher          *)
  146.     agh_Reserved   : LONGINT ; (* Must be 0          *)
  147.     agh_Flags       : LONGSET ;
  148.     agh_UseCnt       : LONGINT ; (* Number of open nodes      *)
  149.     agh_SystemData : ADDRESS ; (* Reserved for system use *)
  150.     agh_UserData   : ADDRESS ; (* Anything you want..      *)
  151.   END ;
  152.  
  153. (* Methods *)
  154. CONST
  155.   HM_FINDNODE    = 1  ;
  156.   HM_OPENNODE    = 2  ;
  157.   HM_CLOSENODE    = 3  ;
  158.   HM_EXPUNGE    = 10 ; (* Expunge DataBase *)
  159.  
  160. (* HM_FINDNODE *)
  161. TYPE
  162.   opFindHost = RECORD
  163.     MethodID  : LONGINT ;
  164.     ofh_Attrs : TagItemPtr ;
  165.                  (*  R: Additional attributes        *)
  166.     ofh_Node  : STRING ; (*  R: Name of node            *)
  167.     ofh_TOC   : STRING ; (*  W: Table of Contents         *)
  168.     ofh_Title : STRING ; (*  W: Title to give to the node    *)
  169.     ofh_Next  : STRING ; (*  W: Next node to browse to        *)
  170.     ofh_Prev  : STRING ; (*  W: Previous node to browse to    *)
  171.   END ;
  172.  
  173. (* HM_OPENNODE, HM_CLOSENODE *)
  174.  
  175.   opNodeIO = RECORD
  176.     MethodID      : LONGINT ;
  177.     onm_Attrs      : TagItemPtr ; (*  R: Additional attributes    *)
  178.     onm_Node      : STRING ;     (*  R: Node name and arguments *)
  179.     onm_FileName  : STRING ;     (*  W: File name buffer    *)
  180.     onm_DocBuffer : STRING ;     (*  W: Node buffer        *)
  181.     onm_BuffLen   : LONGINT ;     (*  W: Size of buffer        *)
  182.     onm_Flags      : LONGSET ;     (* RW: Control flags        *)
  183.   END ;
  184.  
  185. (* onm_Flags *)
  186. CONST
  187.   HTNF_KEEP     = {0} ;    (* Don't flush this node until database is *)
  188.                 (* closed.                   *)
  189.   HTNF_RESERVED1 = {1} ;    (* Reserved for system use           *)
  190.   HTNF_RESERVED2 = {2} ;    (* Reserved for system use           *)
  191.   HTNF_ASCII     = {3} ;    (* Node is straight ASCII           *)
  192.   HTNF_RESERVED3 = {4} ;    (* Reserved for system use           *)
  193.   HTNF_CLEAN     = {5} ;    (* Remove the node from the database       *)
  194.   HTNF_DONE     = {6} ;    (* Done with node               *)
  195.  
  196. (* onm_Attrs *)
  197.   HTNA_Dummy     = TAG_USER ;
  198.   HTNA_Screen     = HTNA_Dummy+1 ; (* struct ScreenPtr Screen that window   *)
  199.                     (* resides in                   *)
  200.   HTNA_Pens     = HTNA_Dummy+2 ; (* Pen array (from DrawInfo)           *)
  201.   HTNA_Rectangle = HTNA_Dummy+3 ; (* Window box                   *)
  202.  
  203.   HTNA_HelpGroup = HTNA_Dummy+5 ; (* (ULONG) unique identifier           *)
  204.  
  205.  
  206. (* HM_EXPUNGE *)
  207. TYPE
  208.   opExpungeNode = RECORD
  209.     MethodID  : LONGINT ;
  210.     oen_Attrs : TagItemPtr ;    (*  R: Additional attributes *)
  211.   END ;
  212.  
  213.  
  214. (*--- functions in V40 or higher (Release 3.1) ---*)
  215.  
  216. (* Public entries *)
  217.  
  218. VAR
  219.   AmigaGuideBase : LibraryPtr ;
  220.  
  221. PROCEDURE LockAmigaGuideBase( handle : ADDRESS ) : LONGINT ;
  222. PROCEDURE UnlockAmigaGuideBase( key : LONGINT ) ;
  223.  
  224. PROCEDURE OpenAmigaGuideA( nag  : NewAmigaGuidePtr ;
  225.                 attr : TagItemPtr ) : ADDRESS ;
  226.  
  227. PROCEDURE OpenAmigaGuide( nag  : NewAmigaGuidePtr ;
  228.                   tag1 : Tag ; .. ) : ADDRESS ;
  229.  
  230. PROCEDURE OpenAmigaGuideAsyncA( nag   : NewAmigaGuidePtr ;
  231.                 attrs : TagItemPtr ) : ADDRESS ;
  232.  
  233. PROCEDURE OpenAmigaGuideAsync( nag  : NewAmigaGuidePtr ;
  234.                    tag1 : Tag ; .. ) : ADDRESS ;
  235.  
  236. PROCEDURE CloseAmigaGuide ( cl : ADDRESS ) ;
  237. PROCEDURE AmigaGuideSignal( cl : ADDRESS ) : LONGINT ;
  238. PROCEDURE GetAmigaGuideMsg( cl : ADDRESS ) : AmigaGuideMsgPtr ;
  239.  
  240. PROCEDURE ReplyAmigaGuideMsg( amsg : AmigaGuideMsgPtr ) ;
  241.  
  242. PROCEDURE SetAmigaGuideContextA( cl    : ADDRESS ;
  243.                  id    : LONGINT ;
  244.                  attrs    : TagItemPtr ) : LONGINT ;
  245.  
  246. PROCEDURE SetAmigaGuideContext( cl   : ADDRESS ;
  247.                 id   : LONGINT ;
  248.                 tag1 : Tag ; .. ) : LONGINT ;
  249.  
  250. PROCEDURE SendAmigaGuideContextA( cl : ADDRESS ; attrs : TagItemPtr ) : LONGINT;
  251. PROCEDURE SendAmigaGuideContext( cl : ADDRESS ; tag1 : Tag ; .. ) : LONGINT ;
  252.  
  253. PROCEDURE SendAmigaGuideCmdA( cl    : ADDRESS ;
  254.                   cmd   : STRING ;
  255.                   attrs : TagItemPtr ) : LONGINT ;
  256.  
  257. PROCEDURE SendAmigaGuideCmd( cl   : ADDRESS ;
  258.                  cmd  : STRING  ;
  259.                  tag1 : Tag ; .. ) : LONGINT  ;
  260.  
  261. PROCEDURE SetAmigaGuideAttrsA( cl : ADDRESS ; attrs : TagItemPtr ) : LONGINT ;
  262. PROCEDURE SetAmigaGuideAttrs( cl : ADDRESS ; tag1 : Tag ; .. ) : LONGINT ;
  263.  
  264. PROCEDURE GetAmigaGuideAttr( tag : Tag ;
  265.                  cl  : ADDRESS ;
  266.                  storage : ADDRESS ) : LONGINT ;
  267.  
  268. PROCEDURE LoadXRef( lock : FileLockPtr ; name : STRING ) : LONGINT ;
  269. PROCEDURE ExpungeXRef( ) ;
  270.  
  271. PROCEDURE AddAmigaGuideHostA( h     : HookPtr ;
  272.                   name  : STRING ;
  273.                   attrs : TagItemPtr ) : ADDRESS ;
  274.  
  275. PROCEDURE AddAmigaGuideHost( h    : HookPtr ;
  276.                  name : STRING ;
  277.                  tag1 : Tag ; .. ) : ADDRESS ;
  278.  
  279. PROCEDURE RemoveAmigaGuideHostA( hh : ADDRESS ; attrs : TagItemPtr ) : LONGINT ;
  280. PROCEDURE RemoveAmigaGuideHost( hh : ADDRESS ; tag1 : Tag ; .. ) : LONGINT ;
  281.  
  282. PROCEDURE GetAmigaGuideString( id : LONGINT ) : STRING ;
  283.  
  284. END AmigaGuide.
  285.