home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / new / util / dir / browserii / sources / include / clib.h
C/C++ Source or Header  |  1994-10-30  |  3KB  |  119 lines

  1. #ifndef CLIB_H
  2. #define CLIB_H
  3.  
  4. #include <stdarg.h>
  5.  
  6. #define REG(x) register __## x
  7.  
  8. struct EnvArgs {
  9.     char **ea_Argv;
  10.     struct RDArgs *ea_EnvRDArgs;
  11.     struct RDArgs *ea_RDArgs;
  12. };
  13.  
  14.  
  15. /* protos for tiny c.lib */
  16.  
  17. /* Private: HANDS OFF!!! */
  18. extern long _Std_Main(void);                    /* internal code */
  19. extern long _Cli_Main(void);                    /* internal code (default startup code) */
  20. extern long _WB_Main(void);                        /* internal code */
  21. extern BOOL _ReadCliArgs(struct EnvArgs *);        /* internal code */
  22. extern BOOL _ParseToolTypes(struct WBStartup *, struct EnvArgs *);    /* internal code */
  23.  
  24. /* Internal variables: HANDS OFF!!! */
  25. extern BOOL (*__ReadCliArgs)(struct EnvArgs *);
  26. extern BOOL (*__ReadEnvArgs)(char *, char *, struct EnvArgs *);
  27. extern BOOL (*__ParseToolTypes)(struct WBStartup *, struct EnvArgs *);
  28.  
  29.  
  30. /* Public */
  31. long main(long argc, char *argv[]);                        /* standard entry point   */
  32. long Main(char *Argv[], struct WBStartup *WBenchMsg);    /* powerfull! entry point */
  33. long _Main(void);                                        /* redesign by yourself!  */
  34.  
  35. BOOL AllocEnvArgs(struct EnvArgs *EnvArgs);
  36. void FreeEnvArgs(struct EnvArgs *EnvArgs);
  37. BOOL ReadEnvVar(char *VarName, char *Template, struct EnvArgs *ea);
  38.  
  39. long EasyReq(char *GadFmt, char *TextFmt, APTR Args);
  40. void __stdargs SimpleReq(char *fmt, ...);
  41.  
  42. LONG VSPrintf(UBYTE *buf, UBYTE *fmt, va_list arg_ptr);
  43. LONG __stdargs SPrintf(UBYTE *buf, UBYTE *fmt,...);
  44.  
  45. void __stdargs KPrintF(char *,...);
  46. #define KPrintf KPrintF
  47.  
  48. // Missing pragma in pragmas/utility.h
  49. #pragma tagcall UtilityBase CallHook 66 9A803
  50.  
  51. #define CoerceMethodA(class, object, msg)        CallHookPkt(&(class)->cl_Dispatcher, object, msg)
  52. #define DoSuperMethodA(class, object, msg)        CoerceMethodA((class)->cl_Super, object, msg)
  53. #define DoMethodA(object, msg)                    CoerceMethodA(OCLASS(object), object, msg)
  54.  
  55.  
  56. /********************************/
  57. /* Startup Modules Declarations */
  58. /********************************/
  59.  
  60. /*
  61.  *    To get a standard startup code calling main(argc, argv),
  62.  *    just put:
  63.  *
  64.  * StandardStartup
  65.  *
  66.  *    at the beginning of your program. (outside main()!)
  67.  *    Note: the dummy 'extern' declaration is to allow a trailing ';'
  68.  *          after the keyword "StandardStartup".
  69.  */
  70.  
  71. #define StandardStartup        long _Main(void) { return _Std_Main(); } extern char yMmUd
  72.  
  73. /*
  74.  *    To get a workbench startup as well, when using Main(ArgV, WBenchMsg),
  75.  *    just put:
  76.  *
  77.  * WorkbenchStartup
  78.  *
  79.  *    at the beginning of your program. (outside main()!)
  80.  *    This is useless with StandardStartup.
  81.  *    Note: the dummy 'extern' declaration is to allow a trailing ';'
  82.  *          after the keyword "WorkbenchStartup".
  83.  */
  84.  
  85. #define WorkbenchStartup    long _Main(void) { return _WB_Main(); } extern char yMmUd
  86.  
  87. /*
  88.  *    If you need cli args (Template) you MUST put
  89.  *
  90.  * CliArgs
  91.  *
  92.  *    at the beginning of your program. (outside main()!)
  93.  *    as well as defining a Template, and an optionnal CliHelp.
  94.  */
  95.  
  96. #define CliArgs                BOOL (*__ReadCliArgs)() = _ReadCliArgs
  97.  
  98. /*
  99.  *    If you want your cli args to be read for an environnement
  100.  *    variable, just put:
  101.  *
  102.  * ReadEnvArgs("VarName")
  103.  *
  104.  *    at the beginning of your program. (outside main()!)
  105.  *    You can then store default args value in it.
  106.  */
  107.  
  108. #define ReadEnvArgs(VarName)    char *__EnvVarName = VarName;BOOL (*__ReadEnvArgs)() = ReadEnvVar
  109.  
  110. /*
  111.  *    Read tooltypes by examining the template and then find matching tooltypes.
  112.  */
  113.  
  114. #define ParseToolTypes            BOOL (*__ParseToolTypes)() = _ParseToolTypes
  115.  
  116.  
  117. #endif
  118.  
  119.