[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

#ifndef LIBRARIES_AMIGAGUIDE_H
#define LIBRARIES_AMIGAGUIDE_H
/*
**      $VER: amigaguide.h 44.1 (14.3.1999)
**      Includes Release 44.1
**
**      Interface definitions for AmigaGuide(tm) hypertext system
**
**      (C) Copyright 1990-1999 Amiga, Inc.
**          All Rights Reserved
*/
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif /* EXEC_TYPES_H */

#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif /* EXEC_LISTS_H */

#ifndef EXEC_NODES_H
#include <exec/nodes.h>
#endif /* EXEC_NODES_H */

#ifndef EXEC_SEMAPHORES_H
#include <exec/semaphores.h>
#endif

#ifndef INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif

#ifndef INTUITION_SCREENS_H
#include <intuition/screens.h>
#endif

#ifndef INTUITION_CLASSUSR_H
#include <intuition/classusr.h>
#endif

#ifndef DOS_DOS_H
#include <dos/dos.h>
#endif

#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif

#ifndef APSH_TOOL_ID
#define APSH_TOOL_ID 11000L
#define StartupMsgID            (APSH_TOOL_ID+1L)       /* Startup message */
#define LoginToolID             (APSH_TOOL_ID+2L)       /* Login a tool SIPC port */
#define LogoutToolID            (APSH_TOOL_ID+3L)       /* Logout a tool SIPC port */
#define ShutdownMsgID           (APSH_TOOL_ID+4L)       /* Shutdown message */
#define ActivateToolID          (APSH_TOOL_ID+5L)       /* Activate tool */
#define DeactivateToolID        (APSH_TOOL_ID+6L)       /* Deactivate tool */
#define ActiveToolID            (APSH_TOOL_ID+7L)       /* Tool Active */
#define InactiveToolID          (APSH_TOOL_ID+8L)       /* Tool Inactive */
#define ToolStatusID            (APSH_TOOL_ID+9L)       /* Status message */
#define ToolCmdID               (APSH_TOOL_ID+10L)      /* Tool command message */
#define ToolCmdReplyID          (APSH_TOOL_ID+11L)      /* Reply to tool command */
#define ShutdownToolID          (APSH_TOOL_ID+12L)      /* Shutdown tool */
#endif

/* Attributes accepted by GetAmigaGuideAttr() */
#define AGA_Dummy               (TAG_USER)
#define AGA_Path                (AGA_Dummy+1)
#define AGA_XRefList            (AGA_Dummy+2)
#define AGA_Activate            (AGA_Dummy+3)
#define AGA_Context             (AGA_Dummy+4)

#define AGA_HelpGroup           (AGA_Dummy+5)
    /* (ULONG) Unique identifier */

#define AGA_Reserved1           (AGA_Dummy+6)
#define AGA_Reserved2           (AGA_Dummy+7)
#define AGA_Reserved3           (AGA_Dummy+8)

#define AGA_ARexxPort           (AGA_Dummy+9)
    /* (struct MsgPort *) Pointer to the ARexx message port (V40) */

#define AGA_ARexxPortName       (AGA_Dummy+10)
   /* (STRPTR) Used to specify the ARexx port name (V40) (not copied) */

#define AGA_Secure              (AGA_Dummy+11)
   /* (BOOL) Disable "ONOPEN", "ONCLOSE" and "LINK RX", "LINK RXS", "LINK SYSTEM" commands (V41) */

typedef void *AMIGAGUIDECONTEXT;

struct AmigaGuideMsg
{
    struct Message       agm_Msg;                       /* Embedded Exec message structure */
    ULONG                agm_Type;                      /* Type of message */
    APTR                 agm_Data;                      /* Pointer to message data */
    ULONG                agm_DSize;                     /* Size of message data */
    ULONG                agm_DType;                     /* Type of message data */
    ULONG                agm_Pri_Ret;                   /* Primary return value */
    ULONG                agm_Sec_Ret;                   /* Secondary return value */
    APTR                 agm_System1;
    APTR                 agm_System2;
};

/* Allocation description structure */
struct NewAmigaGuide
{
    BPTR                 nag_Lock;                      /* Lock on the document directory */
    STRPTR               nag_Name;                      /* Name of document file */
    struct Screen       *nag_Screen;                    /* Screen to place windows within */
    STRPTR               nag_PubScreen;                 /* Public screen name to open on */
    STRPTR               nag_HostPort;                  /* Application's ARexx port name */
    STRPTR               nag_ClientPort;                /* Name to assign to the clients ARexx port */
    STRPTR               nag_BaseName;                  /* Base name of the application */
    ULONG                nag_Flags;                     /* Flags */
    STRPTR              *nag_Context;                   /* NULL terminated context table */
    STRPTR               nag_Node;                      /* Node to align on first (defaults to Main) */
    LONG                 nag_Line;                      /* Line to align on */
    struct TagItem      *nag_Extens;                    /* Tag array extension */
    VOID                *nag_Client;                    /* Private! MUST be NULL */
};

/* public Client flags */
#define HTF_LOAD_INDEX          (1L<<0)                       /* Force load the index at init time */
#define HTF_LOAD_ALL            (1L<<1)                       /* Force load the entire database at init */
#define HTF_CACHE_NODE          (1L<<2)                       /* Cache each node as visited */
#define HTF_CACHE_DB            (1L<<3)                       /* Keep the buffers around until expunge */
#define HTF_UNIQUE              (1L<<15)              /* Unique ARexx port name */
#define HTF_NOACTIVATE          (1L<<16)              /* Don't activate window */

#define HTFC_SYSGADS            0x80000000

/* Callback function ID's */
#define HTH_OPEN                0
#define HTH_CLOSE               1

#define HTERR_NOT_ENOUGH_MEMORY         100L
#define HTERR_CANT_OPEN_DATABASE        101L
#define HTERR_CANT_FIND_NODE            102L
#define HTERR_CANT_OPEN_NODE            103L
#define HTERR_CANT_OPEN_WINDOW          104L
#define HTERR_INVALID_COMMAND           105L
#define HTERR_CANT_COMPLETE             106L
#define HTERR_PORT_CLOSED               107L
#define HTERR_CANT_CREATE_PORT          108L
#define HTERR_KEYWORD_NOT_FOUND         113L

typedef struct AmigaGuideHost *AMIGAGUIDEHOST;

/* Cross reference node */
struct XRef
{
    struct Node          xr_Node;                       /* Embedded node */
    UWORD                xr_Pad;                        /* Padding */
    struct DocFile      *xr_DF;                         /* Document defined in */
    STRPTR               xr_File;                       /* Name of document file */
    STRPTR               xr_Name;                       /* Name of item */
    LONG                 xr_Line;                       /* Line defined at */
    ULONG                xr_Reserved[2];                /* Don't touch! (V44) */
};

#define XRSIZE  (sizeof (struct XRef))

/* Types of cross reference nodes */
#define XR_GENERIC      0
#define XR_FUNCTION     1
#define XR_COMMAND      2
#define XR_INCLUDE      3
#define XR_MACRO        4
#define XR_STRUCT       5
#define XR_FIELD        6
#define XR_TYPEDEF      7
#define XR_DEFINE       8

/* Callback handle */
struct AmigaGuideHost
{
    struct Hook          agh_Dispatcher;                /* Dispatcher */
    ULONG                agh_Reserved;                  /* Must be 0 */
    ULONG                agh_Flags;
    ULONG                agh_UseCnt;                    /* Number of open nodes */
    APTR                 agh_SystemData;                /* Reserved for system use */
    APTR                 agh_UserData;                  /* Anything you want... */
};

/* Methods */
#define HM_FINDNODE     1
#define HM_OPENNODE     2
#define HM_CLOSENODE    3
#define HM_EXPUNGE      10              /* Expunge DataBase */

/* HM_FINDNODE */
struct opFindHost
{
    ULONG MethodID;
    struct TagItem *ofh_Attrs;          /*  R: Additional attributes */
    STRPTR ofh_Node;                    /*  R: Name of node */
    STRPTR ofh_TOC;                     /*  W: Table of Contents */
    STRPTR ofh_Title;                   /*  W: Title to give to the node */
    STRPTR ofh_Next;                    /*  W: Next node to browse to */
    STRPTR ofh_Prev;                    /*  W: Previous node to browse to */
};

/* HM_OPENNODE, HM_CLOSENODE */
struct opNodeIO
{
    ULONG MethodID;
    struct TagItem *onm_Attrs;          /*  R: Additional attributes */
    STRPTR onm_Node;                    /*  R: Node name and arguments */
    STRPTR onm_FileName;                /*  W: File name buffer */
    STRPTR onm_DocBuffer;               /*  W: Node buffer */
    ULONG onm_BuffLen;                  /*  W: Size of buffer */
    ULONG onm_Flags;                    /* RW: Control flags */
};

/* onm_Flags */
#define HTNF_KEEP       (1L<<0)       /* Don't flush this node until database is
                                 * closed. */
#define HTNF_RESERVED1  (1L<<1)       /* Reserved for system use */
#define HTNF_RESERVED2  (1L<<2)       /* Reserved for system use */
#define HTNF_ASCII      (1L<<3)       /* Node is straight ASCII */
#define HTNF_RESERVED3  (1L<<4)       /* Reserved for system use */
#define HTNF_CLEAN      (1L<<5)       /* Remove the node from the database */
#define HTNF_DONE       (1L<<6)       /* Done with node */

/* onm_Attrs */
#define HTNA_Dummy      (TAG_USER)
#define HTNA_Screen     (HTNA_Dummy+1)  /* (struct Screen *) Screen that window resides in */
#define HTNA_Pens       (HTNA_Dummy+2)  /* Pen array (from DrawInfo) */
#define HTNA_Rectangle  (HTNA_Dummy+3)  /* Window box */

#define HTNA_HelpGroup  (HTNA_Dummy+5)  /* (ULONG) unique identifier */


/* HM_EXPUNGE */
struct opExpungeNode
{
    ULONG MethodID;
    struct TagItem *oen_Attrs;          /*  R: Additional attributes */
};

#endif /* LIBRARIES_AMIGAGUIDE_H */