home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / FileMover / HF-OM1.DMS / in.adf / OpusSDK.lha / SDK / include / dopus / modules.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-25  |  7.1 KB  |  240 lines

  1. #ifndef _DOPUS_MODULES
  2. #define _DOPUS_MODULES
  3.  
  4. /****************************************************************************
  5.  
  6.  Support file for DOpus modules
  7.  
  8.  ****************************************************************************/
  9.  
  10. #ifndef _DOPUSBASE
  11. #include <dopus/dopusbase.h>
  12. #endif
  13.  
  14.  
  15. // Defines a function in a module
  16. typedef struct
  17. {
  18.     ULONG    id;        // Function ID code
  19.     char    *name;          // Function name
  20.     ULONG    desc;           // Locale string ID for function description
  21.     ULONG    flags;        // Function flags
  22.     char    *template;    // Command template
  23. } ModuleFunction;
  24.  
  25. // Function flags
  26. #define FUNCF_NEED_SOURCE        (1<<0)    // Needs a source directory
  27. #define FUNCF_NEED_DEST            (1<<1)    // Needs a destination directory
  28. #define FUNCF_NEED_FILES        (1<<2)    // Needs some files to work with
  29. #define FUNCF_NEED_DIRS            (1<<3)    // Needs some files to work with
  30. #define FUNCF_NEED_ENTRIES    (FUNCF_NEED_FILES|FUNCF_NEED_DIRS)
  31. #define FUNCF_CAN_DO_ICONS        (1<<6)    // Function can do icons
  32. #define FUNCF_SINGLE_SOURCE        (1<<8)    // Only a single source needed
  33. #define FUNCF_SINGLE_DEST        (1<<9)    // Only a single destination needed
  34. #define FUNCF_WANT_DEST            (1<<11)    // Want destinations, don't need them
  35. #define FUNCF_WANT_SOURCE        (1<<12)    // Want source, don't need it
  36. #define FUNCF_WANT_ENTRIES        (1<<19)    // Want entries
  37. #define FUNCF_PRIVATE            (1<<26) // Function is private
  38.  
  39.  
  40. // Defines all the functions in a module
  41. typedef struct
  42. {
  43.     ULONG        ver;        // Module version
  44.     char        *name;        // Module name
  45.     char        *locale_name;    // Catalog name
  46.     ULONG        flags;        // Module flags
  47.     ULONG        function_count;    // Number of functions in module
  48.     ModuleFunction    function[1];    // Definition of first function
  49. } ModuleInfo;
  50.  
  51.  
  52. /*** If the module has more than one function, the additional ModuleFunction
  53.      structures MUST follow the ModuleInfo structure in memory. Eg,
  54.  
  55.      ModuleInfo module_info={....};
  56.      ModuleFunction more_funcs[2]={{...},{...}};                           ***/
  57.  
  58.  
  59. // Flags for ModuleInfo
  60. #define MODULEF_CALL_STARTUP        (1<<0)    // Call ModuleEntry() on startup
  61. #define MODULEF_STARTUP_SYNC        (1<<1)    // Run Synchronously on startup
  62. #define MODULEF_CATALOG_VERSION        (1<<2)    // Use version for catalog
  63. #define MODULEF_HELP_AVAILABLE        (1<<3)    // Command help is available
  64.  
  65. // ID passed to Module_Entry() if module is run on startup
  66. #define FUNCID_STARTUP            0xffffffff
  67.  
  68. // Callback commands
  69. #define EXTCMD_GET_SOURCE    0    // Get current source path
  70. #define EXTCMD_NEXT_SOURCE    1    // Get next source path
  71. #define EXTCMD_UNLOCK_SOURCE    2    // Unlock source paths
  72. #define EXTCMD_GET_ENTRY    3    // Get entry
  73. #define EXTCMD_END_ENTRY    4    // End entry
  74. #define EXTCMD_RELOAD_ENTRY    5    // Reload entry
  75. #define EXTCMD_CHECK_ABORT    9    // Check abort status
  76. #define EXTCMD_ENTRY_COUNT    10    // Get entry count
  77. #define EXTCMD_GET_WINDOW    11    // Get window handle
  78. #define EXTCMD_GET_DEST        12    // Get next destination
  79. #define EXTCMD_END_SOURCE    13    // Cleanup current source path
  80. #define EXTCMD_END_DEST        14    // Cleanup current destination path
  81. #define EXTCMD_ADD_FILE        16    // Add a file to a lister
  82. #define EXTCMD_GET_HELP        17    // Get help on a topic
  83. #define EXTCMD_GET_PORT        18    // Get ARexx port name
  84. #define EXTCMD_GET_SCREEN    19    // Get public screen name
  85. #define EXTCMD_REPLACE_REQ    20    // Show exists/replace? requester
  86. #define EXTCMD_REMOVE_ENTRY    21    // Mark an entry for removal
  87. #define EXTCMD_GET_SCREENDATA    22    // Get DOpus screen data
  88. #define EXTCMD_FREE_SCREENDATA    23    // Free screen data
  89. #define EXTCMD_SEND_COMMAND    30    // Send a command to DOpus
  90. #define EXTCMD_DEL_FILE        31    // Delete a file from a lister
  91. #define EXTCMD_DO_CHANGES    32    // Perform changes
  92. #define EXTCMD_LOAD_FILE    33    // Load files to listers
  93.  
  94.  
  95. // Structures used with callback commands
  96. struct function_entry
  97. {
  98.     ULONG            pad[2];
  99.     char            *name;    // File name
  100.     APTR            entry;    // Entry pointer (don't touch!)
  101.     short            type;    // Type of file
  102.     short            flags;    // File flags
  103. };
  104.  
  105. struct path_node
  106. {
  107.     ULONG            pad[2];
  108.     char            buffer[512];    // Contains path string
  109.     char            *path;        // Points to path string
  110.     APTR            lister;        // Lister pointer
  111.     ULONG            flags;        // Flags
  112. };
  113.  
  114.  
  115. /****************************************************************************
  116.  
  117.  Packets used to send commands
  118.  
  119.  ****************************************************************************/
  120.  
  121. // EXTCMD_END_ENTRY
  122. struct endentry_packet
  123. {
  124.     struct function_entry    *entry;        // Entry pointer
  125.     BOOL            deselect;    // TRUE to deselect entry
  126. };
  127.  
  128. // EXTCMD_ADD_FILE
  129. struct addfile_packet
  130. {
  131.     char            *path;        // Path to add file to
  132.     struct FileInfoBlock    *fib;        // FileInfoBlock to add
  133.     struct ListerWindow    *lister;    // Lister pointer
  134. };
  135.  
  136. // EXTCMD_DEL_FILE
  137. struct delfile_packet
  138. {
  139.     char            *path;        // Path to delete file from
  140.     char            *name;        // Name of file to delete
  141.     struct ListerWindow    *lister;    // Lister pointer
  142. };
  143.  
  144. // EXTCMD_LOAD_FILE
  145. struct loadfile_packet
  146. {
  147.     char            *path;        // Path of file
  148.     char            *name;        // File name
  149.     short            flags;        // Flags field
  150.     short            reload;        // TRUE to reload existing file
  151. };
  152.  
  153. #define LFF_ICON        (1<<0)
  154.  
  155.  
  156. // EXTCMD_REPLACE_REQ
  157. struct replacereq_packet
  158. {
  159.     struct Window        *window;    // Window to open over
  160.     struct Screen        *screen;    // Screen to open on
  161.     IPCData            *ipc;        // Your process IPC pointer
  162.     struct FileInfoBlock    *file1;        // First file
  163.     struct FileInfoBlock    *file2;        // Second file
  164.     short            flags;        // Flags
  165. };
  166.  
  167. // Result code from EXTCMD_REPLACE_REQ
  168. #define REPLACE_ABORT        -1
  169. #define REPLACE_LEAVE        0
  170. #define REPLACE_REPLACE        1
  171. #define REPLACEF_ALL        (1<<1)
  172.  
  173.  
  174. // EXTCMD_GET_SCREENDATA
  175. struct DOpusScreenData
  176. {
  177.     struct Screen        *screen;    // Screen pointer
  178.     struct DrawInfo        *draw_info;    // DrawInfo pointer
  179.     unsigned short        depth;        // Screen depth
  180.     unsigned short        pen_alloc;    // Mask of allocated pens
  181.     unsigned short        pen_array[16];    // Pen array
  182.     short            pen_count;    // Number of pens
  183. };    
  184.  
  185.  
  186. // EXTCMD_SEND_COMMAND
  187. struct command_packet
  188. {
  189.     char            *command;    // Command to send
  190.     ULONG            flags;        // Command flags
  191.     char            *result;    // Will point to result string
  192.     ULONG            rc;        // Return code
  193. };
  194.  
  195. #define COMMANDF_RESULT        (1<<0)
  196.  
  197.  
  198. // Prototype for the callback hook
  199. ULONG __asm __saveds function_external_hook(
  200.     register __d0 ULONG command,
  201.     register __a0 APTR handle,
  202.     register __a1 APTR packet);
  203.  
  204. #define EXT_FUNC(name)    unsigned long __asm (*name)(register __d0 ULONG,register __a0 APTR,register __a1 APTR)
  205. #define TYPE_EXT(var)    (unsigned long (*)())var
  206.  
  207. #define IDCMP_FUNC(name)    unsigned long __asm (*name)(register __d0 ULONG,register __a0 struct IntuiMessage *)
  208.  
  209.  
  210.  
  211. /**** Define this if you are using the standard modinit.o code ****/
  212. #ifdef _DOPUS_MODULE_DEF
  213.  
  214. // These library bases are defined and made available automatically
  215. extern struct Library *DOSBase;
  216. extern struct Library *DOpusBase;
  217. extern struct Library *IntuitionBase;
  218. extern struct Library *GfxBase;
  219. extern struct Library *IconBase;
  220. extern struct Library *UtilityBase;
  221. extern struct Library *LayersBase;
  222. extern struct Library *GadToolsBase;
  223. extern struct Library *AslBase;
  224. extern struct Library *DiskfontBase;
  225. extern struct Library *RexxSysBase;
  226. extern struct Library *TimerBase;
  227. extern struct Library *LocaleBase;
  228. extern struct Library *WorkbenchBase;
  229.  
  230. // Global pointer to a module's locale information
  231. extern struct DOpusLocale *locale;
  232. void init_locale_data(struct DOpusLocale *);
  233.  
  234. // You MUST define the ModuleInfo structure yourself
  235. extern ModuleInfo module_info;
  236.  
  237. #endif
  238.  
  239. #endif
  240.