home *** CD-ROM | disk | FTP | other *** search
- (**************************************************************************
-
- $RCSfile: AmigaGuide.mod $
- Description: Interface to amigaguide.library
-
- Created by: fjc (Frank Copeland)
- $Revision: 3.2 $
- $Author: fjc $
- $Date: 1994/08/08 01:13:39 $
-
- Includes Release 40.15
-
- (C) Copyright 1990-1993 Commodore-Amiga, Inc.
- All Rights Reserved
-
- Oberon-A Interface Copyright © 1994, Frank Copeland.
- This file is part of the Oberon-A Interface.
- See Oberon-A.doc for conditions of use and distribution.
-
- *************************************************************************)
-
- MODULE AmigaGuide;
-
- (*
- ** $C- CaseChk $I- IndexChk $L+ LongAdr $N- NilChk
- ** $P- PortableCode $R- RangeChk $S- StackChk $T- TypeChk
- ** $V- OvflChk $Z- ZeroVars
- *)
-
- IMPORT E := Exec, U := Utility, D := Dos, I := Intuition, SYS := SYSTEM;
-
-
- TYPE
-
- (**-- Pointer declarations ---------------------------------------------*)
-
- AmigaGuideMsgPtr * = CPOINTER TO AmigaGuideMsg;
- ContextTablePtr * = CPOINTER TO ContextTable;
- NewAmigaGuidePtr * = CPOINTER TO NewAmigaGuide;
- XRefPtr * = CPOINTER TO XRef;
- AmigaGuideHostPtr * = CPOINTER TO AmigaGuideHost;
- MsgPtr * = CPOINTER TO Msg;
- OpFindHostPtr * = CPOINTER TO OpFindHost;
- OpNodeIOPtr * = CPOINTER TO OpNodeIO;
- OpExpungeNodePtr * = CPOINTER TO OpExpungeNode;
-
-
- (**-- Library definitions ----------------------------------------------*)
-
- CONST
-
- apshToolId * = 11000;
- startupMsgId * = apshToolId+1; (* Startup message *)
- loginToolId * = apshToolId+2; (* Login a tool SIPC port *)
- logoutToolId * = apshToolId+3; (* Logout a tool SIPC port *)
- shutdownMsgId * = apshToolId+4; (* Shutdown message *)
- activateToolId * = apshToolId+5; (* Activate tool *)
- deactivateToolId * = apshToolId+6; (* Deactivate tool *)
- activeToolId * = apshToolId+7; (* Tool Active *)
- inactiveToolId * = apshToolId+8; (* Tool Inactive *)
- toolStatusId * = apshToolId+9; (* Status message *)
- toolCmdId * = apshToolId+10; (* Tool command message *)
- toolCmdReplyId * = apshToolId+11; (* Reply to tool command *)
- shutdownToolId * = apshToolId+12; (* Shutdown tool *)
-
- (* Attributes accepted by GetAmigaGuideAttr() *)
- agaDummy * = U.tagUser;
- agaPath * = agaDummy+1;
- agaXRefList * = agaDummy+2;
- agaActivate * = agaDummy+3;
- agaContext * = agaDummy+4;
-
- agaHelpGroup * = agaDummy+5; (* E.ULONG: Unique identifier *)
-
- agaReserved1 * = agaDummy+6;
- agaReserved2 * = agaDummy+7;
- agaReserved3 * = agaDummy+8;
-
- agaARexxPort * = agaDummy+9;
- (* E.MsgPortPtr: Pointer to the ARexx message port (V40) *)
-
- agaARexxPortName * = agaDummy+10;
- (* E.STRPTR: Used to specify the ARexx port name (V40) (not copied) *)
-
- TYPE
-
- AmigaGuideContext * = CPOINTER TO RECORD END;
-
- AmigaGuideMsg * = RECORD (E.Message) (* Embedded Exec message structure *)
- agmType * : E.ULONG; (* Type of message *)
- data * : E.APTR; (* Pointer to message data *)
- dSize * : E.ULONG; (* Size of message data *)
- dType * : E.ULONG; (* Type of message data *)
- priRet * : E.ULONG; (* Primary return value *)
- secRet * : E.ULONG; (* Secondary return value *)
- system1 * : E.APTR;
- system2 * : E.APTR;
- END;
-
- (* Allocation description structure *)
-
- ContextTable * = ARRAY 32767 OF E.STRPTR;
-
- NewAmigaGuide * = RECORD
- lock * : D.FileLockPtr; (* Lock on the document directory *)
- name * : E.STRPTR; (* Name of document file *)
- screen * : I.ScreenPtr; (* Screen to place windows within *)
- pubScreen * : E.STRPTR; (* Public screen name to open on *)
- hostPort * : E.STRPTR; (* Application's ARexx port name *)
- clientPort * : E.STRPTR; (* Name to assign to the clients ARexx port *)
- baseName * : E.STRPTR; (* Base name of the application *)
- flags * : SET; (* Flags *)
- context * : ContextTablePtr; (* NULL terminated context table *)
- node * : E.STRPTR; (* Node to align on first (defaults to Main) *)
- line * : LONGINT; (* Line to align on *)
- extens * : U.TagListPtr; (* Tag array extension *)
- client : E.APTR; (* Private! MUST be NULL *)
- END;
-
- CONST
-
- (* public Client flags *)
-
- loadIndex * = 0; (* Force load the index at init time *)
- loadAll * = 1; (* Force load the entire database at init *)
- cacheNode * = 2; (* Cache each node as visited *)
- cacheDb * = 3; (* Keep the buffers around until expunge *)
- unique * = 15; (* Unique ARexx port name *)
- noActivate * = 16; (* Don't activate window *)
-
- sysGads * = 31;
-
- (* Callback function ID's *)
- hOpen * = 0;
- hClose * = 1;
-
- errNotEnoughMemory * = 100;
- errCantOpenDatabase * = 101;
- errCantFindNode * = 102;
- errCantOpenNode * = 103;
- errCantOpenWindow * = 104;
- errInvalidCommand * = 105;
- errCantComplete * = 106;
- errPortClosed * = 107;
- errCantCreatePort * = 108;
- errKeywordNotFound * = 113;
-
- TYPE
-
- (* Cross reference node *)
- XRef * = RECORD (E.Node) (* Embedded node *)
- pad * : E.UWORD; (* Padding *)
- df * : E.APTR (*DocFilePtr*); (* Document defined in *)
- file * : E.STRPTR; (* Name of document file *)
- xrName * : E.STRPTR; (* Name of item *)
- line * : LONGINT; (* Line defined at *)
- END;
-
- CONST
-
- xrSize * = SIZE (XRef);
-
- (* Types of cross reference nodes *)
- xrGeneric * = 0;
- xrFunction * = 1;
- xrCommand * = 2;
- xrInclude * = 3;
- xrMacro * = 4;
- xrStruct * = 5;
- xrField * = 6;
- xrTypedef * = 7;
- xrDefine * = 8;
-
- TYPE
-
- (* Callback handle *)
-
- AmigaGuideHost * = RECORD (U.Hook) (* Dispatcher *)
- reserved * : E.ULONG; (* Must be 0 *)
- flags * : SET;
- useCnt * : E.ULONG; (* Number of open nodes *)
- systemData : E.APTR; (* Reserved for system use *)
- userData * : E.APTR; (* Anything you want... *)
- END;
-
- CONST
-
- (* Methods *)
- hmFindnode * = 1;
- hmOpennode * = 2;
- hmClosenode * = 3;
- hmExpunge * = 10; (* Expunge DataBase *)
-
- TYPE
-
- Msg * = RECORD
- methodID * : E.ULONG;
- END;
-
- (* hmFindnode *)
- OpFindHost * = RECORD (Msg)
- attrs - : U.TagListPtr; (* R: Additional attributes *)
- node - : E.STRPTR; (* R: Name of node *)
- TOC * : E.STRPTR; (* W: Table of Contents *)
- title * : E.STRPTR; (* W: Title to give to the node *)
- next * : E.STRPTR; (* W: Next node to browse to *)
- prev * : E.STRPTR; (* W: Previous node to browse to *)
- END;
-
- (* hmOpennode, hmClosenode *)
- OpNodeIO * = RECORD (Msg)
- attrs - : U.TagListPtr; (* R: Additional attributes *)
- node - : E.STRPTR; (* R: Node name and arguments *)
- fileName * : E.STRPTR; (* W: File name buffer *)
- docBuffer * : E.STRPTR; (* W: Node buffer *)
- buffLen * : E.ULONG; (* W: Size of buffer *)
- flags * : SET; (* RW: Control flags *)
- END;
-
- CONST
-
- (* OpNodeIO.flags *)
- nKeep * = 0; (* Don't flush this node until database is
- * closed. *)
- nReserved1 * = 1; (* Reserved for system use *)
- nReserved2 * = 2; (* Reserved for system use *)
- nAscii * = 3; (* Node is straight ASCII *)
- nReserved3 * = 4; (* Reserved for system use *)
- nClean * = 5; (* Remove the node from the database *)
- nDone * = 6; (* Done with node *)
-
- (* OpNodeIO.attrs *)
- naDummy * = U.tagUser;
- naScreen * = naDummy+1; (* I.ScreenPtr: Screen that window resides in *)
- naPens * = naDummy+2; (* Pen array (from DrawInfo) *)
- naRectangle * = naDummy+3; (* Window box *)
-
- naHelpGroup * = naDummy+5; (* E.ULONG: unique identifier *)
-
- TYPE
-
- (* hmExpunge *)
- OpExpungeNode * = RECORD (Msg)
- attrs - : U.TagListPtr; (* R: Additional attributes *)
- END;
-
- (**-- Library Base variable --------------------------------------------*)
-
- CONST
-
- name * = "amigaguide.library";
-
- TYPE
-
- AmigaGuideBasePtr* = CPOINTER TO AmigaGuideBase;
- AmigaGuideBase* = RECORD (E.Library) END;
-
- VAR
-
- base* : AmigaGuideBasePtr;
-
-
- (**-- Library Functions ------------------------------------------------*)
-
- (*--- functions in V40 or higher (Release 3.1) ---*)
-
- (* Public entries *)
-
- LIBCALL (base : AmigaGuideBasePtr) LockAmigaGuideBase *
- ( handle [8] : AmigaGuideContext )
- : LONGINT;
- -36;
- LIBCALL (base : AmigaGuideBasePtr) UnlockAmigaGuideBase *
- ( key [0] : LONGINT );
- -42;
- LIBCALL (base : AmigaGuideBasePtr) OpenAmigaGuideA *
- ( VAR nag [8] : NewAmigaGuide;
- attrs [9] : ARRAY OF U.TagItem )
- : AmigaGuideContext;
- -54;
- LIBCALL (base : AmigaGuideBasePtr) OpenAmigaGuide *
- ( VAR nag [8] : NewAmigaGuide;
- attrs [9]..: U.Tag )
- : AmigaGuideContext;
- -54;
- LIBCALL (base : AmigaGuideBasePtr) OpenAmigaGuideAsyncA *
- ( VAR nag [8] : NewAmigaGuide;
- attrs [0] : ARRAY OF U.TagItem )
- : AmigaGuideContext;
- -60;
- LIBCALL (base : AmigaGuideBasePtr) OpenAmigaGuideAsync *
- ( VAR nag [8] : NewAmigaGuide;
- attrs [0]..: U.Tag )
- : AmigaGuideContext;
- -60;
- LIBCALL (base : AmigaGuideBasePtr) CloseAmigaGuide *
- ( cl [8] : AmigaGuideContext );
- -66;
- LIBCALL (base : AmigaGuideBasePtr) AmigaGuideSignal *
- ( cl [8] : AmigaGuideContext )
- : E.ULONG;
- -72;
- LIBCALL (base : AmigaGuideBasePtr) GetAmigaGuideMsg *
- ( cl [8] : AmigaGuideContext )
- : AmigaGuideMsgPtr;
- -78;
- LIBCALL (base : AmigaGuideBasePtr) ReplyAmigaGuideMsg *
- ( amsg [8] : AmigaGuideMsgPtr );
- -84;
- LIBCALL (base : AmigaGuideBasePtr) SetAmigaGuideContextA *
- ( cl [8] : AmigaGuideContext;
- id [0] : E.ULONG;
- attrs [1] : ARRAY OF U.TagItem )
- : BOOLEAN;
- -90;
- LIBCALL (base : AmigaGuideBasePtr) SetAmigaGuideContext *
- ( cl [8] : AmigaGuideContext;
- id [0] : E.ULONG;
- attrs [1] ..: U.Tag )
- : BOOLEAN;
- -90;
- LIBCALL (base : AmigaGuideBasePtr) SendAmigaGuideContextA *
- ( cl [8] : AmigaGuideContext;
- attrs [0] : ARRAY OF U.TagItem )
- : BOOLEAN;
- -96;
- LIBCALL (base : AmigaGuideBasePtr) SendAmigaGuideContext *
- ( cl [8] : AmigaGuideContext;
- attrs [0]..: U.Tag )
- : BOOLEAN;
- -96;
- LIBCALL (base : AmigaGuideBasePtr) SendAmigaGuideCmdA *
- ( cl [8] : AmigaGuideContext;
- cmd [0] : ARRAY OF CHAR;
- attrs [1] : ARRAY OF U.TagItem )
- : BOOLEAN;
- -102;
- LIBCALL (base : AmigaGuideBasePtr) SendAmigaGuideCmd *
- ( cl [8] : AmigaGuideContext;
- cmd [0] : ARRAY OF CHAR;
- attrs [1]..: U.Tag )
- : BOOLEAN;
- -102;
- LIBCALL (base : AmigaGuideBasePtr) SetAmigaGuideAttrsA *
- ( cl [8] : AmigaGuideContext;
- attrs [9] : ARRAY OF U.TagItem )
- : LONGINT;
- -108;
- LIBCALL (base : AmigaGuideBasePtr) SetAmigaGuideAttrs *
- ( cl [8] : AmigaGuideContext;
- attrs [9]..: U.Tag )
- : LONGINT;
- -108;
- LIBCALL (base : AmigaGuideBasePtr) GetAmigaGuideAttr *
- ( tag [0] : U.Tag;
- cl [8] : AmigaGuideContext;
- VAR storage [9] : ARRAY OF SYS.BYTE )
- : LONGINT;
- -114;
- LIBCALL (base : AmigaGuideBasePtr) LoadXRef *
- ( lock [8] : D.FileLockPtr;
- name [9] : ARRAY OF CHAR )
- : LONGINT;
- -126;
- LIBCALL (base : AmigaGuideBasePtr) ExpungeXRef * ();
- -132;
- LIBCALL (base : AmigaGuideBasePtr) AddAmigaGuideHostA *
- ( h [8] : U.HookPtr;
- name [0] : ARRAY OF CHAR;
- attrs [9] : ARRAY OF U.TagItem )
- : AmigaGuideHostPtr;
- -138;
- LIBCALL (base : AmigaGuideBasePtr) AddAmigaGuideHost *
- ( h [8] : U.HookPtr;
- name [0] : ARRAY OF CHAR;
- attrs [9]..: U.Tag )
- : AmigaGuideHostPtr;
- -138;
- LIBCALL (base : AmigaGuideBasePtr) RemoveAmigaGuideHostA *
- ( hh [8] : AmigaGuideHostPtr;
- attrs [9] : ARRAY OF U.TagItem )
- : LONGINT;
- -144;
- LIBCALL (base : AmigaGuideBasePtr) RemoveAmigaGuideHost *
- ( hh [8] : AmigaGuideHostPtr;
- attrs [9]..: U.Tag )
- : LONGINT;
- -144;
- LIBCALL (base : AmigaGuideBasePtr) GetAmigaGuideString *
- ( id [0] : LONGINT )
- : E.STRPTR;
- -210;
-
- (**-- Library Base variable --------------------------------------------*)
-
- (**-----------------------------------*)
- PROCEDURE* CloseLib ();
-
- BEGIN (* CloseLib *)
- IF base # NIL THEN E.base.CloseLibrary (base) END
- END CloseLib;
-
- (**-----------------------------------*)
- PROCEDURE OpenLib * (mustOpen : BOOLEAN );
-
- BEGIN (* OpenLib *)
- IF base = NIL THEN
- base :=
- SYS.VAL (
- AmigaGuideBasePtr,
- E.base.OpenLibrary (name, E.libraryMinimum));
- IF base # NIL THEN SYS.SETCLEANUP (CloseLib)
- ELSIF mustOpen THEN HALT (100)
- END;
- END;
- END OpenLib;
-
- BEGIN
- base := NIL
- END AmigaGuide.
-