home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / OPENDOOR / WRITEJAM.ZIP / JAMSYS.H < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-01  |  9.2 KB  |  258 lines

  1. /*
  2. **  JAM(mbp) - The Joaquim-Andrew-Mats Message Base Proposal
  3. **
  4. **  C API
  5. **
  6. **  Written by Joaquim Homrighausen and Mats Wallin.
  7. **
  8. **  ----------------------------------------------------------------------
  9. **
  10. **  jamsys.h (JAMmb)
  11. **
  12. **  Compiler and platform dependant definitions
  13. **
  14. **  Copyright 1993 Joaquim Homrighausen, Andrew Milner, Mats Birch, and
  15. **  Mats Wallin. ALL RIGHTS RESERVED.
  16. **
  17. **  93-06-28    JoHo/MW
  18. **  Initial coding.
  19. */
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23.  
  24. #ifndef __JAMSYS_H__
  25. #define __JAMSYS_H__
  26.  
  27. /*
  28. **  The following assumptions are made about compilers and platforms:
  29. **
  30. **  __MSDOS__       Defined if compiling for MS-DOS
  31. **  _WINDOWS        Defined if compiling for Microsoft Windows
  32. **  __OS2__         Defined if compiling for OS/2 2.x
  33. **  __sparc__       Defined if compiling for Sun Sparcstation
  34. **  __50SERIES      Defined if compiling for Prime with Primos
  35. **
  36. **  __SMALL__       Defined if compiling under MS-DOS in small memory model
  37. **  __MEDIUM__      Defined if compiling under MS-DOS in medium memory model
  38. **  __COMPACT__     Defined if compiling under MS-DOS in compact memory model
  39. **  __LARGE__       Defined if compiling under MS-DOS in large memory model
  40. **
  41. **  __ZTC__         Zortech C++ 3.x
  42. **  __BORLANDC__    Borland C++ 3.x
  43. **  __TURBOC__      Turbo C 2.0
  44. **  __TSC__         JPI TopSpeed C 1.06
  45. **  _MSC_VER        Microsoft C 6.0 and later
  46. **  _QC             Microsoft Quick C
  47. **
  48. **  __WATCOM__      Watcom C/C++ compiler
  49. */
  50. #if defined(_WINDOWS)
  51.     #ifndef _INC_WINDOWS
  52.         #include <windows.h>
  53.     #endif
  54.  
  55.     #if defined(__MSDOS__)
  56.         #undef __MSDOS__
  57.     #endif
  58.  
  59.     typedef long                INT32;      /* 32 bits signed integer     */
  60.     typedef unsigned long       UINT32;     /* 32 bits unsigned integer   */
  61.     typedef short int           INT16;      /* 16 bits signed integer     */
  62.     typedef unsigned short int  UINT16;     /* 16 bits unsigned integer   */
  63.     typedef char                CHAR8;      /* 8 bits signed integer      */
  64.     typedef unsigned char       UCHAR8;     /* 8 bits unsigned integer    */
  65.     typedef HFILE               FHANDLE;    /* File handle                */
  66.  
  67.     #if defined(__ZTC__)               /* Zortech C++ 3.x */
  68.         #define _JAMFAR _far
  69.         #define _HUGE   _huge
  70.         #define _PASCAL _pascal
  71.         #define _EXPORT _export
  72.     #elif defined(__BORLANDC__)        /* Borland C++ 3.x */
  73.         #define _JAMFAR far
  74.         #define _HUGE   huge
  75.         #define _PASCAL pascal
  76.         #define _EXPORT _export
  77.     #elif defined(_MSC_VER) ||         /* Microsoft C 6.0 and later */   \
  78.           defined(_QC)                 /* Microsoft Quick C 2.51 and later */
  79.         #define _JAMFAR _far
  80.         #define _HUGE   _huge
  81.         #define _PASCAL _pascal
  82.         #define _EXPORT _export
  83.         #if defined(_M_I86SM)
  84.             #define __SMALL__
  85.         #elif defined(_M_I86MM)
  86.             #define __MEDIUM__
  87.         #elif defined(_M_I86CM)
  88.             #define __COMPACT__
  89.         #elif defined(_M_I86LM)
  90.             #define __LARGE__
  91.         #endif
  92.     #else
  93.         #error Unsupported compiler
  94.     #endif
  95.  
  96.     #if defined(JAMCAPI) && !defined(__LARGE__)
  97.         #error Only LARGE memory model supported for the JAM Windows DLL
  98.     #endif
  99.  
  100.     #define _JAMPROC            _JAMFAR _PASCAL _EXPORT
  101.     #define _JAMDATA            _JAMFAR
  102.  
  103. #elif defined(__MSDOS__)
  104.     typedef long                INT32;      /* 32 bits signed integer     */
  105.     typedef unsigned long       UINT32;     /* 32 bits unsigned integer   */
  106.     typedef short int           INT16;      /* 16 bits signed integer     */
  107.     typedef unsigned short int  UINT16;     /* 16 bits unsigned integer   */
  108.     typedef char                CHAR8;      /* 8 bits signed integer      */
  109.     typedef unsigned char       UCHAR8;     /* 8 bits unsigned integer    */
  110.     typedef int                 FHANDLE;    /* File handle                */
  111.  
  112.     #define _JAMPROC
  113.     #define _JAMDATA
  114.  
  115.     #if defined(__ZTC__)               /* Zortech C++ 3.x */
  116.         #define _JAMFAR    _far
  117.     #elif defined(__BORLANDC__)        /* Borland C++ 3.x */
  118.         #define _JAMFAR    far
  119.     #elif defined(__TURBOC__)          /* Turbo C 2.0 */
  120.         #define _JAMFAR    far
  121.     #elif defined(__TSC__)             /* JPI TopSpeed C 1.06 */
  122.         #define _JAMFAR    far
  123.         #if defined(M_I86SM)
  124.             #define __SMALL__
  125.         #elif defined(M_I86MM)
  126.             #define __MEDIUM__
  127.         #elif defined(M_I86CM)
  128.             #define __COMPACT__
  129.         #elif defined(M_I86LM)
  130.             #define __LARGE__
  131.         #endif
  132.     #elif defined(_MSC_VER) ||         /* Microsoft C 6.0 and later */   \
  133.           defined(_QC)                 /* Microsoft Quick C 2.51 and later */
  134.         #define _JAMFAR    _far
  135.         #if defined(_M_I86SM)
  136.             #define __SMALL__
  137.         #elif defined(_M_I86MM)
  138.             #define __MEDIUM__
  139.         #elif defined(_M_I86CM)
  140.             #define __COMPACT__
  141.         #elif defined(_M_I86LM)
  142.             #define __LARGE__
  143.         #endif
  144.     #elif defined(__WATCOMC__)         /* Watcom C compiler */
  145.         #if defined __FLAT__
  146.                 #define _JAMFAR
  147.         #else
  148.             #define _JAMFAR    __far
  149.         #endif
  150.     #else
  151.         #error Unsupported compiler
  152.     #endif
  153.  
  154. #elif defined(__OS2__)
  155.     typedef long                INT32;      /* 32 bits signed integer     */
  156.     typedef unsigned long       UINT32;     /* 32 bits unsigned integer   */
  157.     typedef short int           INT16;      /* 16 bits signed integer     */
  158.     typedef unsigned short int  UINT16;     /* 16 bits unsigned integer   */
  159.     typedef char                CHAR8;      /* 8 bits signed integer      */
  160.     typedef unsigned char       UCHAR8;     /* 8 bits unsigned integer    */
  161.     typedef HFILE               FHANDLE;    /* File handle                */
  162.  
  163.     #define _JAMFAR
  164.     #define _JAMPROC
  165.     #define _JAMDATA
  166.  
  167. #elif defined(__sparc__) || defined(__50SERIES)
  168.     typedef long                INT32;      /* 32 bits signed integer     */
  169.     typedef unsigned long       UINT32;     /* 32 bits unsigned integer   */
  170.     typedef short int           INT16;      /* 16 bits signed integer     */
  171.     typedef unsigned short int  UINT16;     /* 16 bits unsigned integer   */
  172.     typedef char                CHAR8;      /* 8 bits signed integer      */
  173.     typedef unsigned char       UCHAR8;     /* 8 bits unsigned integer    */
  174.     typedef int                 FHANDLE;    /* File handle                */
  175.  
  176.     #define _JAMFAR
  177.     #define _JAMPROC
  178.     #define _JAMDATA
  179.  
  180. #else
  181.     #error Undefined platform
  182. #endif
  183.  
  184. typedef INT32 _JAMDATA *        INT32ptr;
  185. typedef UINT32 _JAMDATA *       UINT32ptr;
  186. typedef INT16 _JAMDATA *        INT16ptr;
  187. typedef UINT16 _JAMDATA *       UINT16ptr;
  188. typedef CHAR8 _JAMDATA *        CHAR8ptr;
  189. typedef UCHAR8 _JAMDATA *       UCHAR8ptr;
  190. typedef void _JAMDATA *         VOIDptr;
  191.  
  192. /*
  193. **  Values for "AccessMode" and "ShareMode" parameter to JAMsysSopen.
  194. */
  195.  
  196. #if defined(_WINDOWS)
  197.     #define JAMO_RDWR           READ_WRITE
  198.     #define JAMO_RDONLY         READ
  199.     #define JAMO_WRONLY         WRITE
  200.     #define JAMSH_DENYNO        OF_SHARE_DENY_NONE
  201.     #define JAMSH_DENYRD        OF_SHARE_DENY_READ
  202.     #define JAMSH_DENYWR        OF_SHARE_DENY_WRITE
  203.     #define JAMSH_DENYRW        OF_SHARE_EXCLUSIVE
  204. #elif defined(__MSDOS__) || defined(__OS2__) 
  205.     #define JAMO_RDWR           O_RDWR
  206.     #define JAMO_RDONLY         O_RDONLY
  207.     #define JAMO_WRONLY         O_WRONLY
  208.     #define JAMSH_DENYNO        SH_DENYNO
  209.     #define JAMSH_DENYRD        SH_DENYRD
  210.     #define JAMSH_DENYWR        SH_DENYWR
  211.     #define JAMSH_DENYRW        SH_DENYRW
  212. #elif defined(__sparc__)
  213.     #define JAMO_RDWR           O_RDWR
  214.     #define JAMO_RDONLY         O_RDONLY
  215.     #define JAMO_WRONLY         O_WRONLY
  216.     #define JAMSH_DENYNO        0
  217.     #define JAMSH_DENYRD        0
  218.     #define JAMSH_DENYWR        0
  219.     #define JAMSH_DENYRW        0
  220. #elif defined(__50SERIES)
  221.     #define JAMO_RDWR           2
  222.     #define JAMO_RDONLY         0
  223.     #define JAMO_WRONLY         1
  224.     #define JAMSH_DENYNO        0
  225.     #define JAMSH_DENYRD        0
  226.     #define JAMSH_DENYWR        0
  227.     #define JAMSH_DENYRW        0
  228. #endif
  229.  
  230. #if defined (__WATCOMC__)
  231.     #define JAMO_BINARY         O_BINARY
  232. #endif
  233.  
  234.  
  235. /*
  236. **  Structure to contain date/time information
  237. */
  238. typedef struct JAMtm
  239.     {
  240.     int     tm_sec,                    /* Seconds 0..59                     */
  241.             tm_min,                    /* Minutes 0..59                     */
  242.             tm_hour,                   /* Hour of day 0..23                 */
  243.             tm_mday,                   /* Day of month 1..31                */
  244.             tm_mon,                    /* Month 0..11                       */
  245.             tm_year,                   /* Years since 1900                  */
  246.             tm_wday,                   /* Day of week 0..6 (Sun..Sat)       */
  247.             tm_yday,                   /* Day of year 0..365                */
  248.             tm_isdst;                  /* Daylight savings time (not used)  */
  249.     } JAMTM, _JAMDATA * JAMTMptr;
  250.  
  251. #endif /* __JAMSYS_H__ */
  252.  
  253. #ifdef __cplusplus
  254. }
  255. #endif
  256.  
  257. /* end of file "jamsys.h" */
  258.