home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / source / driver / show / amiga / small_arp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-01-23  |  6.7 KB  |  187 lines

  1. /* ** small_arp.h ** used arp-functions */
  2.  
  3.  
  4. #ifndef EXEC_LIBRARIES_H
  5. #include <exec/libraries.h>
  6. #endif
  7. #ifndef DOS_DOS_H
  8. #include <dos/dos.h>
  9. #endif
  10.  
  11. #define    ARGs(x)    x
  12. #define C_Args    __stdargs
  13.  
  14.  
  15. /*
  16.  ************************************************************************
  17.  *    Standard definitions for arp library information        *
  18.  ************************************************************************
  19.  */
  20. #define    ArpName        "arp.library"    /* Name of library... */
  21. #define    ArpVersion    39L        /* Current version... */
  22.  
  23. /*
  24.  ************************************************************************
  25.  *    The current ARP library node...                    *
  26.  ************************************************************************
  27.  */
  28. struct    ArpBase    {
  29.     struct    Library            LibNode;     /* Standard library node        */
  30.         APTR            DosRootNode;     /* Copy of dl_Root            */
  31.         UBYTE            Flags;         /* See bitdefs below            */
  32.         UBYTE            ESCChar;      /* Character to be used for escaping    */
  33.         LONG            ArpReserved1;     /* ArpLib's use only!!            */
  34.     struct    Library            *EnvBase;      /* Dummy library for MANX compatibility*/
  35.     struct    Library            *DosBase;      /* Cached DosBase            */
  36.     struct    Library            *GfxBase;      /* Cached GfxBase            */
  37.     struct    Library            *IntuiBase;     /* Cached IntuitionBase        */
  38.     struct    MinList            ResLists;     /* Resource trackers            */
  39.     struct    ResidentProgramNode    *ResidentPrgList;/* Resident Programs.            */
  40.     struct    SignalSemaphore        ResPrgProtection;/* protection for above        */
  41.         BPTR            SegList;      /* Pointer to loaded libcode (a BPTR).    */
  42.         };
  43.  
  44. /*
  45.  ************************************************************************
  46.  *    The ARP file requester data structure...            *
  47.  ************************************************************************
  48.  */
  49. struct ARPFileRequester    {
  50.             BYTE    *fr_Hail;        /* Hailing text            */
  51.             BYTE    *fr_File;        /* Filename array (FCHARS + 1)    */
  52.             BYTE    *fr_Dir;        /* Directory array (DSIZE + 1)    */
  53.         struct    Window    *fr_Window;        /* Window requesting or NULL    */
  54.             UBYTE    fr_FuncFlags;        /* Set bitdef's below        */
  55.             UBYTE    fr_Flags2;        /* New flags...            */
  56.             VOID    (*fr_Function)();    /* Your function, see bitdef's    */
  57.             WORD    fr_LeftEdge;        /* To be used later...        */
  58.             WORD    fr_TopEdge;
  59.             };
  60.  
  61. /*
  62.  ************************************************************************
  63.  * The following are the defines for fr_FuncFlags.  These bits tell    *
  64.  * FileRequest() what your fr_UserFunc is expecting, and what        *
  65.  * FileRequest() should call it for.                    *
  66.  *                                    *
  67.  * You are called like so:                        *
  68.  * fr_Function(Mask, Object)                        *
  69.  * ULONG    Mask;                            *
  70.  * CPTR        *Object;                        *
  71.  *                                    *
  72.  * The Mask is a copy of the flag value that caused FileRequest() to    *
  73.  * call your function. You can use this to determine what action you    *
  74.  * need to perform, and exactly what Object is, so you know what to do    *
  75.  * and what to return.                            *
  76.  ************************************************************************
  77.  */
  78. #define    FRB_DoWildFunc    7L /* Call me with a FIB and a name, ZERO return accepts.    */
  79. #define    FRB_DoMsgFunc    6L /* You get all IDCMP messages not for FileRequest()        */
  80. #define    FRB_DoColor    5L /* Set this bit for that new and different look        */
  81. #define    FRB_NewIDCMP    4L /* Force a new IDCMP (only if fr_Window != NULL)        */
  82. #define    FRB_NewWindFunc    3L /* You get to modify the newwindow structure.        */
  83. #define    FRB_AddGadFunc    2L /* You get to add gadgets.                    */
  84. #define    FRB_GEventFunc    1L /* Function to call if one of your gadgets is selected.    */
  85. #define    FRB_ListFunc    0L /* Not implemented yet.                    */
  86.  
  87. #define    FRF_DoWildFunc    (1L << FRB_DoWildFunc)
  88. #define    FRF_DoMsgFunc    (1L << FRB_DoMsgFunc)
  89. #define    FRF_DoColor    (1L << FRB_DoColor)
  90. #define    FRF_NewIDCMP    (1L << FRB_NewIDCMP)
  91. #define    FRF_NewWindFunc    (1L << FRB_NewWindFunc)
  92. #define    FRF_AddGadFunc    (1L << FRB_AddGadFunc)
  93. #define    FRF_GEventFunc    (1L << FRB_GEventFunc)
  94. #define    FRF_ListFunc    (1L << FRB_ListFunc)
  95.  
  96. /*
  97.  ************************************************************************
  98.  * The FR2B_ bits are for fr_Flags2 in the file requester structure    *
  99.  ************************************************************************
  100.  */
  101. #define    FR2B_LongPath    0L /* Specify the fr_Dir buffer is 256 bytes long */
  102.  
  103. #define    FR2F_LongPath    (1L << FR2B_LongPath)
  104.  
  105. /*
  106.  ************************************************************************
  107.  *    The sizes of the different buffers...                *
  108.  ************************************************************************
  109.  */
  110. #define    FCHARS        32L    /* Filename size                */
  111. #define    DSIZE        33L    /* Directory name size if not FR2B_LongPath    */
  112.  
  113. #define    LONG_DSIZE    254L    /* If FR2B_LongPath is set, use LONG_DSIZE    */
  114. #define    LONG_FSIZE    126L    /* For compatibility with ARPbase.i        */
  115.  
  116. #define    FR_FIRST_GADGET    0x7680L    /* User gadgetID's must be less than this value    */
  117.  
  118.  
  119.  
  120.  
  121. /*
  122.  ************************************************************************
  123.  * Note that C_Args is a #define that, in LATTICE does __stdargs    *
  124.  ************************************************************************
  125.  */
  126.  
  127. /*
  128.  ************************************************************************
  129.  * This prototype is here to prevent the possible error in defining    *
  130.  * IoErr() as LONG and thus causing LastTracker to give you trash...    *
  131.  *                                    *
  132.  * N O T E !  You MUST! have IoErr() defined as LONG to use LastTracker *
  133.  *          If your compiler has other defines for this, you may wish *
  134.  *          to move the prototype for IoErr() into the DO_ARP_COPIES    *
  135.  ************************************************************************
  136.  */
  137.  
  138. /*
  139.  ************************************************************************
  140.  *    Now for the stuff that only exists in arp.library...        *
  141.  ************************************************************************
  142.  */
  143.     BYTE            *Getenv            ARGs(    (char *, char *, LONG)                    );
  144.     BYTE            *FileRequest         ARGs(    (struct ARPFileRequester *)                );
  145.  
  146. /*
  147.  ************************************************************************
  148.  *    Added V32 of arp.library                    *
  149.  ************************************************************************
  150.  */
  151.  
  152. /*
  153.  ************************************************************************
  154.  *    Added V33 of arp.library                    *
  155.  ************************************************************************
  156.  */
  157.     VOID            TackOn            ARGs(    (char *, char *)                    );
  158.     BYTE            *BaseName        ARGs(    (char *)                        );
  159.  
  160. /*
  161.  ************************************************************************
  162.  *    Added V36 of arp.library                    *
  163.  ************************************************************************
  164.  */
  165. struct    ARPFileRequester    C_Args    *ArpAllocFreq        ARGs(    (VOID)                            );
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173. #ifdef    PROTO_ARP_H
  174.  
  175. #error    Nein nicht proto/arp.h   DIESES FILE MUSS INCLUDET WERDEN!!
  176. #else
  177.  
  178. #define    PROTO_ARP_H    1
  179.  
  180. #pragma    libcall    ArpBase    Getenv            011A    09803
  181. #pragma    libcall    ArpBase    FileRequest        0126    801
  182. #pragma    libcall    ArpBase    ArpAllocFreq        0294    00
  183. #pragma    libcall    ArpBase    TackOn            0270    9802
  184. #pragma    libcall    ArpBase    BaseName        0276    801
  185.  
  186. #endif
  187.