home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / OB3.2D3.DMS / in.adf / Interfaces / AmigaGuide.mod next >
Encoding:
Text File  |  1993-05-23  |  11.5 KB  |  309 lines

  1. (*
  2. (*  $VER: AigaGuide.mod 39.108 (23.05.93)
  3. **      derived from
  4. **        amigaguide.h 39.3 (04.09.92)
  5. **      (Includes Release 39.108)
  6. **
  7. **      (C) Copyright 1991-1993 Commodore-Amiga, Inc.
  8. **          All Rights Reserved
  9. **
  10. **      (C) Copyright Oberon Interface 1993 by hartmut Goebel
  11. *)          All Rights Reserved
  12. *)
  13.  
  14. MODULE AmigaGuide;
  15.  
  16. IMPORT
  17.   d  * := Dos,
  18.   e  * := Exec,
  19.   I  * := Intuition,
  20.   rx * := Rexx,
  21.   u  * := Utility;
  22.  
  23. (*-------------------------------------------------------------------------*)
  24. CONST
  25.   amigaguideName * = "amigaguide.library";
  26.  
  27. TYPE
  28.   AmigaGuideHostPtr  * = UNTRACED POINTER TO AmigaGuideHost;
  29.   AmigaGuideMsgPtr   * = UNTRACED POINTER TO AmigaGuideMsg;
  30.   ContextTablePtr    * = UNTRACED POINTER TO ContextTable;
  31.   MethodPtr          * = UNTRACED POINTER TO Method;
  32.   Msg                * = MethodPtr;                   (* The official name *)
  33.     OpFindHostPtr    * = UNTRACED POINTER TO OpFindHost;
  34.     OpNodeIOPtr      * = UNTRACED POINTER TO OpNodeIO;
  35.     OpExpungeNodePtr * = UNTRACED POINTER TO OpExpungeNode;
  36.   NewAmigaGuidePtr   * = UNTRACED POINTER TO NewAmigaGuide;
  37.   XRefPtr            * = UNTRACED POINTER TO XRef;
  38.  
  39. CONST
  40.  
  41. (* AmigaGuideMsg.type *)
  42.   apshToolID       * = 11000;
  43.  
  44.   startupMsgID     * = apshToolID + 1;   (* Startup message *)
  45.   loginToolID      * = apshToolID + 2;   (* Login a tool SIPC port *)
  46.   logoutToolID     * = apshToolID + 3;   (* Logout a tool SIPC port *)
  47.   shutdownMsgID    * = apshToolID + 4;   (* Shutdown message *)
  48.   activateToolID   * = apshToolID + 5;   (* Activate tool *)
  49.   deactivateToolID * = apshToolID + 6;   (* Deactivate tool *)
  50.   activeToolID     * = apshToolID + 7;   (* Tool Active *)
  51.   inactiveToolID   * = apshToolID + 8;   (* Tool Inactive *)
  52.   toolStatusID     * = apshToolID + 9;   (* Status message *)
  53.   toolCmdID        * = apshToolID + 10;  (* Tool command message *)
  54.   toolCmdReplyID   * = apshToolID + 11;  (* Reply to tool command *)
  55.   shutdownToolID   * = apshToolID + 12;  (* Shutdown tool *)
  56.  
  57.  
  58. (* Attributes accepted by GetAmigaGuideAttr() *)
  59.   agaDummy    * = u.user;
  60.  
  61.   path      * = agaDummy + 1;
  62.   xrefList  * = agaDummy + 2;
  63.   activate  * = agaDummy + 3;
  64.   context   * = agaDummy + 4;
  65.   helpGroup * = agaDummy + 5;    (* (ULONG) Unique identifier *)
  66.  
  67. TYPE
  68.   AGContext  * = UNTRACED POINTER TO STRUCT END;
  69.  
  70.   AmigaGuideMsg * = STRUCT (msg * : e.Message)
  71.     type    * : LONGINT;         (* Type of message *)
  72.     data    * : e.APTR;          (* Pointer to message data *)
  73.     dSize   * : LONGINT;         (* Size of message data *)
  74.     dType   * : LONGINT;         (* Type of message data *)
  75.     priRet  * : LONGINT;         (* Primary return value *)
  76.     secRet  * : LONGINT;         (* Secondary return value *)
  77.     system1 * : e.APTR;
  78.     system2 * : e.APTR;
  79.   END;
  80.  
  81. (* Allocation description structure *)
  82.   NewAmigaGuide * = STRUCT
  83.     lock       * : d.FileLockPtr;    (* Lock on the document directory *)
  84.     name       * : e.STRPTR;         (* Name of document file *)
  85.     screen     * : I.ScreenPtr;      (* Screen to place windows within *)
  86.     pubScreen  * : e.STRPTR;         (* Public screen name to open on *)
  87.     hostPort   * : e.STRPTR;         (* Application's ARexx port name *)
  88.     clientPort * : e.STRPTR;         (* Name to assign to the clients ARexx port *)
  89.     baseName   * : e.STRPTR;         (* Base name of the application *)
  90.     flags      * : LONGSET;          (* Flags *)
  91.     context    * : ContextTablePtr;  (* NIL terminated context table *)
  92.     node       * : e.STRPTR;         (* Node to align on first (defaults to Main) *)
  93.     line       * : LONGINT;          (* Line to align on *)
  94.     extens     * : u.TagListPtr;     (* Tag array extension *)
  95.     client     * : e.APTR;           (* Private! MUST be NULL *)
  96.   END;
  97.  
  98.  
  99. (* The ContextTable in NewAmigaGuide is an array of e.STRPTRs, terminated
  100.  * by a NIL pointer.
  101.  * This definition keeps the array character, but can't be allocated
  102.  * directly with NEW()!
  103.  *)
  104.   ContextTable * = ARRAY MAX(INTEGER) OF e.STRPTR;
  105.  
  106.  
  107. CONST
  108.  
  109. (* public Client flags (NewAmigaGuide.flags) *)
  110.   loadIndex  * = 0;     (* Force load the index at init time *)
  111.   loadAll    * = 1;     (* Force load the entire database at init *)
  112.   cacheNode  * = 2;     (* Cache each node as visited *)
  113.   cacheDB    * = 3;     (* Keep the buffers around until expunge *)
  114.   unique     * = 15;    (* Unique ARexx port name *)
  115.   noActivate * = 16;    (* Don't activate window *)
  116.   sysGads    * = 31;
  117.  
  118.  
  119. (* Callback function ID's *)
  120.   open  * = 0;
  121.   close * = 1;
  122.  
  123.  
  124. (* Callback error codes *)
  125.   notEnoughMemory  * = 100;
  126.   cantOpenDataBase * = 101;
  127.   cantFindNode     * = 102;
  128.   cantOpenNode     * = 103;
  129.   cantOpenWindow   * = 104;
  130.   invalidCommand   * = 105;
  131.   cantComplete     * = 106;
  132.   portClosed       * = 107;
  133.   cantCreatePort   * = 108;
  134.   keywordNotFound  * = 113;
  135.  
  136.  
  137. TYPE
  138.  
  139. (* Cross reference node *)
  140.   XRef * = STRUCT (node * : e.Node)
  141.     pad  * : INTEGER;     (* Padding *)
  142.     df   * : e.APTR;      (* Document defined in ('DocFilePtr') *)
  143.     file * : e.STRPTR;    (* Name of document file *)
  144.     name * : e.STRPTR;    (* Name of item *)
  145.     line * : LONGINT;     (* Line defined at *)
  146.   END;
  147.  
  148.  
  149. CONST
  150.  
  151.   XRSize * = SIZE (XRef);    (* A neato... *)
  152.  
  153. (* Types of cross reference nodes *)
  154.   generic  * = 0;
  155.   function * = 1;
  156.   command  * = 2;
  157.   include  * = 3;
  158.   macro    * = 4;
  159.   struct   * = 5;
  160.   field    * = 6;
  161.   typedef  * = 7;
  162.   define   * = 8;
  163.  
  164.  
  165. TYPE
  166.  
  167. (* Callback handle *)
  168.   AmigaGuideHost * = STRUCT (dispatcher * : u.Hook)
  169.     reserved   * : LONGINT;   (* Must be 0 *)
  170.     flags      * : LONGSET;
  171.     useCnt     * : LONGINT;   (* Number of open nodes *)
  172.     systemData * : e.APTR;    (* Reserved for system use *)
  173.     userData   * : e.APTR;    (* Anything you want... *)
  174.   END;
  175.  
  176.  
  177. CONST
  178.  
  179. (* methods *)
  180.   findNode  * = 1;
  181.   openNode  * = 2;
  182.   closeNode * = 3;
  183.   expunge   * = 10;   (* Expunge DataBase *)
  184.  
  185.  
  186. TYPE
  187.  
  188. (* Basetype of the command structures *)
  189.   Method * = STRUCT
  190.     ID * : LONGINT;
  191.   END;
  192.  
  193.  
  194. (* Method 'findNode' *)
  195.   OpFindHost * = STRUCT (method * : Method)
  196.     attrs * : u.TagListPtr;    (*  R: Additional attributes *)
  197.     node  * : e.STRPTR;        (*  R: Name of node *)
  198.     toc   * : e.STRPTR;        (*  W: Table of Contents *)
  199.     title * : e.STRPTR;        (*  W: Title to give to the node *)
  200.     next  * : e.STRPTR;        (*  W: Next node to browse to *)
  201.     prev  * : e.STRPTR;        (*  W: Previous node to browse to *)
  202.   END;
  203.  
  204.  
  205. (* Methods 'openNode', 'closeNode' *)
  206.   OpNodeIO * = STRUCT (method * : Method)
  207.     attrs     * : u.TagListPtr;    (*  R: Additional attributes *)
  208.     node      * : e.STRPTR;        (*  R: Node name and arguments *)
  209.     fileName  * : e.STRPTR;        (*  W: File name buffer *)
  210.     docBuffer * : e.STRPTR;        (*  W: Node buffer *)
  211.     buffLen   * : LONGINT;         (*  W: Size of buffer *)
  212.     flags     * : LONGSET;         (* RW: Control flags *)
  213.   END;
  214.  
  215.  
  216. CONST
  217.  
  218. (* NodeIO.flags *)
  219.   keep      * = 0;    (* Don't flush this node until database is closed. *)
  220.   reserved1 * = 1;    (* Reserved for system use *)
  221.   reserved2 * = 2;    (* Reserved for system use *)
  222.   ascii     * = 3;    (* Node is straight ASCII *)
  223.   reserved3 * = 4;    (* Reserved for system use *)
  224.   clean     * = 5;    (* Remove the node from the database *)
  225.   done      * = 6;    (* Done with node *)
  226.  
  227. (* NodeIO.attrs (Tag IDs) *)
  228.   screen    * = u.user + 1;    (* Screen that window resides in *)
  229.   pens      * = u.user + 2;    (* Pen array (from DrawInfo) *)
  230.   rectangle * = u.user + 3;    (* Window box *)
  231.  
  232.  
  233. TYPE
  234.  
  235. (* Method 'expunge' *)
  236.   OpExpungeNode * = STRUCT (method * : Method)
  237.     attrs * : u.TagListPtr;    (*  R: Additional attributes *)
  238.   END;
  239.  
  240.  
  241. (*-------------------------------------------------------------------------*)
  242.  
  243. VAR
  244.   base * : e.LibraryPtr;
  245.  
  246.  
  247. PROCEDURE AGARexxHost          *{base,-30}(rmsg{8}    : rx.RexxMsgPtr;
  248.                                            result{9}  : e.STRPTR);
  249. PROCEDURE LockAmigaGuideBase   *{base,-36}(handle{8}  : AGContext): LONGINT;
  250. PROCEDURE UnlockAmigaGuideBase *{base,-42}(key{0}     : LONGINT);
  251. PROCEDURE OpenAmigaGuideA      *{base,-54}(nag{8}     : NewAmigaGuide;
  252.                                            tagList{9} : ARRAY OF u.TagItem): AGContext;
  253. PROCEDURE OpenAmigaGuide       *{base,-54}(nag{8}     : NewAmigaGuide;
  254.                                            tag1{9}    : u.Tag): AGContext;
  255. PROCEDURE OpenAmigaGuideAsyncA *{base,-60}(nag{8}     : NewAmigaGuide;
  256.                                            attrs{0}   : ARRAY OF u.TagItem): AGContext;
  257. PROCEDURE OpenAmigaGuideAsync  *{base,-60}(nag{8}     : NewAmigaGuide;
  258.                                            tag1{0}..  : u.Tag): AGContext;
  259. PROCEDURE CloseAmigaGuide      *{base,-66}(handle{8}  : AGContext);
  260. PROCEDURE AmigaGuideSignal     *{base,-72}(handle{8}  : AGContext): LONGSET;
  261. PROCEDURE GetAmigaGuideMsg     *{base,-78}(handle{8}  : AGContext): AmigaGuideMsgPtr;
  262. PROCEDURE ReplyAmigaGuideMsg   *{base,-84}(msg{8}     : AmigaGuideMsgPtr);
  263. PROCEDURE SetAmigaGuideContextA*{base,-90}(handle{8}  : AGContext;
  264.                                            id{0}      : LONGINT;
  265.                                            tagList{1} : ARRAY OF u.TagItem): BOOLEAN;
  266. PROCEDURE SetAmigaGuideContext *{base,-90}(handle{8}  : AGContext;
  267.                                            id{0}      : LONGINT;
  268.                                            tag1{1}..  : u.Tag): BOOLEAN;
  269. PROCEDURE SendAmigaGuideContextA*{base,-96}(handle{8} : AGContext;
  270.                                            tagList{0} : ARRAY OF u.TagItem): BOOLEAN;
  271. PROCEDURE SendAmigaGuideContext*{base,-96}(handle{8}  : AGContext;
  272.                                            tag1{0}..  : u.Tag): BOOLEAN;
  273. PROCEDURE SendAmigaGuideCmdA   *{base,-102}(handle{8} : AGContext;
  274.                                             cmd{0}    : ARRAY OF CHAR;
  275.                                             tagList{1}: ARRAY OF u.TagItem): BOOLEAN;
  276. PROCEDURE SendAmigaGuideCmd    *{base,-102}(handle{8} : AGContext;
  277.                                             cmd{0}    : ARRAY OF CHAR;
  278.                                             tag1{1}   : u.Tag): BOOLEAN;
  279. PROCEDURE SetAmigaGuideAttrsA  *{base,-108}(handle{8} : AGContext;
  280.                                             tagList{9}: ARRAY OF u.TagItem): LONGINT;
  281. PROCEDURE SetAmigaGuideAttrs   *{base,-108}(handle{8} : AGContext;
  282.                                             tag1{9}.. : u.Tag): LONGINT;
  283. PROCEDURE GetAmigaGuideAttr    *{base,-114}(tag{0}    : u.Tag;
  284.                                             handle{8} : AGContext;
  285.                                             VAR storage{9}: e.APTR): LONGINT;
  286. PROCEDURE AddAmigaGuideHostA   *{base,-138}(hook{8}   : u.HookPtr;
  287.                                             name{0}   : ARRAY OF CHAR;
  288.                                             tagList{9}: ARRAY OF u.TagItem): AmigaGuideHostPtr;
  289. PROCEDURE AddAmigaGuideHost    *{base,-138}(hook{8}   : u.HookPtr;
  290.                                             name{0}   : ARRAY OF CHAR;
  291.                                             tag1{9}.. : u.Tag): AmigaGuideHostPtr;
  292. PROCEDURE RemoveAmigaGuideHostA *{base,-144}(hh{8}    : AmigaGuideHostPtr;
  293.                                             tagList{9}: ARRAY OF u.TagItem): LONGINT;
  294. PROCEDURE RemoveAmigaGuideHost *{base,-144}(hh{8}     : AmigaGuideHostPtr;
  295.                                             tag1{9}.. : u.Tag): LONGINT;
  296. PROCEDURE GetAmigaGuideString  *{base,-210}(id{0}     : LONGINT): e.STRPTR;
  297.  
  298. (*-------------------------------------------------------------------------*)
  299.  
  300. (* $StackChk- $RangeChk- $NilChk- $OvflChk- $ReturnChk- $CaseChk- *)
  301.  
  302. BEGIN
  303.   base := e.OpenLibrary (amigaguideName, 33);
  304. CLOSE
  305.   IF base # NIL THEN e.CloseLibrary (base); END;
  306.  
  307. END AmigaGuide.
  308.  
  309.