home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Amiga / Workbench / Patches / CopyReplace.lha / Source / Include / SDI_defines.h < prev   
C/C++ Source or Header  |  1998-05-08  |  4KB  |  146 lines

  1. #ifndef SDI_DEFINES_H
  2. #define SDI_DEFINES_H
  3.  
  4. /* Includeheader
  5.  
  6.     Name:        SDI_defines
  7.     Versionstring:    $VER: SDI_defines.h 1.27 (20.02.1998)
  8.     Author:        SDI
  9.     Distribution:    PD
  10.     Description:    standard defines and macros and version string
  11.  
  12.  1.17  12.06.96 : RETURN_WARN instead of RETURN_ERROR in SDI_ENDCODE
  13.  1.18  06.07.96 : End: PrintFault behind end --> allows selecting output
  14.  1.19  21.08.96 : added __SASC __AMIGADATE__ support
  15.  1.20  24.08.96 : better SAS-C support
  16.  1.21  04.09.96 : changed error with SAS date having the brackets already
  17.  1.22  18.11.96 : converted to english, C++ comments to C ones
  18.  1.23  02.01.97 : corrected some stuff
  19.  1.24  17.03.97 : removed GetChar and other obsolete defines
  20.  1.25  08.10.97 : renamed defines, removed some defines
  21.  1.26  10.02.98 : made version string const
  22.  1.27  20.02.98 : added compiler independence stuff
  23. */
  24.  
  25. #include <exec/types.h>
  26.  
  27. /* ========================= useable defines ============================ */
  28.  
  29. /*
  30.   SDI_ENDCODE        turn on generation of End function
  31.   SDI_ENDCODE_NOCTRLC    use End generation without CTRL_C check
  32.  
  33.   AUTHOR    program author - default is "by SDI"
  34.   DATE        programm creation date - default is automatically created
  35.   DISTRIBUTION    distribution form - default is "(PD) "
  36.   REVISION    revision number - default is "0"
  37.   VERSION    version number - default is "1"
  38. */
  39.  
  40. /* ==================== compiler independence stuff ===================== */
  41.  
  42. #ifdef __MAXON__    /* disable these keywords */
  43.   #define __saveds
  44.   #define __stdargs
  45.   #define __regars
  46. #elif defined(__STORM__)
  47.   #define __regargs
  48.   #define __stdargs
  49. #endif
  50.  
  51.             /* make new keywords for ASM funcs - exceptions */
  52. #if defined(__SASC)
  53.   #define ASM(arg)    arg __asm
  54. #elif defined(__GNUC__)
  55.   #define REG(reg,arg)    arg __asm(#reg)
  56. #endif
  57.  
  58.             /* then common ASM-use defines */
  59. #ifndef ASM
  60.   #define ASM(arg)    arg
  61. #endif
  62.  
  63. #ifndef REG
  64.   #define REG(reg,arg)    register __##reg arg
  65. #endif
  66.  
  67. /* ======================= no need for <stdlib.h> ======================= */
  68.  
  69. extern void exit(int);
  70.  
  71. /* ============================ other macros ============================ */
  72.  
  73. /* <proto/exec.h>, <dos/dos.h> */
  74.  
  75. #define CTRL_C        (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
  76.  
  77. /* ================================= SAS C ============================== */
  78.  
  79. #define TestOS if(DOSBase->dl_lib.lib_Version < DosVersion)    \
  80.              exit(RETURN_FAIL)
  81.  
  82. /* A word about variable DosVersion: In my startup code for MaxonC++ I
  83. include use OpenLibrary("dos.library", DosVersion) instead of standard
  84. OpenLibrary("dos.library",0) call. If no DosVersion is given, this
  85. variable defaults to 33, else you can give the value by creating a global
  86. variable ULONG DosVersion = 37;. The program does not start, when the
  87. required DOS is not available. (Better then others, which crash) */
  88.  
  89. /* ===================== version string and EndCode ===================== */
  90.  
  91.  
  92. #ifdef NAME
  93.   #ifndef AUTHOR
  94.     #define AUTHOR "by SDI"
  95.   #endif
  96.   #ifndef VERSION
  97.     #define VERSION "1"
  98.   #endif
  99.   #ifndef REVISION
  100.     #define REVISION "0"
  101.   #endif
  102.   #ifndef DATE
  103.     #ifdef __MAXON__
  104.       #define SDI_DATE "(" __DATE2__ ")"
  105.     #elif defined(__SASC)
  106.       #define SDI_DATE __AMIGADATE__
  107.     #elif defined(__GNUC__)
  108.       #define SDI_DATE "(" __DATE__ ")"
  109.     #endif
  110.   #else
  111.     #define SDI_DATE "(" DATE ")"
  112.   #endif
  113.  
  114.   #ifndef DISTRIBUTION
  115.     #define DISTRIBUTION "(PD) "
  116.   #endif
  117.   const STRPTR version = (STRPTR) "$VER: " NAME " " VERSION "." REVISION " "
  118.   SDI_DATE " " DISTRIBUTION AUTHOR;
  119. #endif /* NAME */
  120.  
  121. #if defined(SDI_ENDCODE) || defined(SDI_ENDCODE_NOCTRLC)
  122.   #ifdef __MAXON__
  123.     #define __inline
  124.     inline
  125.   #endif
  126.     void __inline end(void);
  127.   void End(UBYTE err)
  128.   {
  129.     #ifndef SDI_ENDCODE_NOCTRLC
  130.     if(CTRL_C)
  131.     {
  132.       err = RETURN_WARN;
  133.       SetIoErr(ERROR_BREAK);
  134.     }
  135.     #endif
  136.  
  137.     end();
  138.  
  139.     if(err)        PrintFault(IoErr(), 0);
  140.     exit(err);
  141.   }
  142. #endif /* SDI_ENDCODE && SDI_ENDCODE_NOCTRLC */
  143.  
  144. #endif /* SDI_DEFINES_H */
  145.  
  146.