home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / header45.zip / basedef.h < prev    next >
C/C++ Source or Header  |  1999-03-15  |  8KB  |  303 lines

  1. /*static char *SCCSID = "@(#)basedef.h  6.1 90/11/15";*/
  2. /***    BASEDEF.H
  3.  *
  4.  *      SCCSID = @(#)basedef.h    13.11 90/07/10
  5.  *
  6.  *      Basic constants and types
  7.  *      Copyright (c) 1988,1989 Microsoft Corporation
  8.  *
  9.  *
  10.  *
  11.  *      To control what is included use the following:
  12.  *
  13.  *          INCL_TYPES       basic typedefs
  14.  */
  15.  
  16.  
  17. /*** Basic constants
  18.  */
  19.  
  20.  
  21. // c-begin
  22. #include <os2std.h>
  23. // c-end
  24.  
  25. //masm-begin
  26. //NULL  equ     0
  27. //TRUE  equ    -1
  28. //FALSE equ     0
  29. //masm-end
  30.  
  31. #define CTRUE   1
  32.  
  33. #define KSIZE   1024
  34.  
  35. #ifdef  INCL_PAGE
  36. #define PAGESIZE 4096
  37. #endif
  38.  
  39. /*** Basic data types
  40.  */
  41.  
  42.  
  43. #ifndef NULL
  44.    #define NULL ((void *)0)
  45. #endif
  46.  
  47. #if (__IBMC__ >= 300)
  48. #ifndef __VACPASCAL__
  49.    #define __VACPASCAL__
  50.  
  51.    #define PASCAL   _Pascal
  52.    #define pascal   _Pascal
  53. #endif
  54.  
  55. #ifndef __VACCDECL__
  56.    #define __VACCDECL__
  57.  
  58.    #define CDECL    __cdecl
  59.    #define cdecl    __cdecl
  60.    #define _cdecl   __cdecl
  61. #endif
  62.  
  63. #ifndef __VACSTDCALL__
  64.   #define __VACSTDCALL__
  65.  
  66.   #define  _stdcall  _Stdcall
  67. #endif
  68.  
  69. #ifndef __VACSYSCALL__
  70.   #define __VACSYSCALL__
  71.  
  72.   #define _syscall  _System
  73. #endif
  74. #else
  75. #define CDECL   _System
  76. #define PASCAL  _Pascal
  77. #endif
  78.  
  79. #define far
  80. #define FAR
  81. #define near
  82. #define NEAR
  83. #define far32    _Far32
  84. #define FAR32    _Far32
  85.  
  86. #define VOID    void
  87. #define CONST   const
  88. #define VOLATILE volatile
  89.  
  90. #define CENTRY CDECL FAR                // to declare misc. C-based interfaces
  91. #define PRIVENTRY PASCAL FAR            // to declare private routines
  92. #define EXPENTRY PASCAL FAR             // to declare exported routines
  93. #define API32ENTRY PASCAL FAR           // to declare exported API routines
  94. #define DYNENTRY PASCAL FAR _export     // to declare exported dynlink routines
  95.  
  96.  
  97. #ifdef  INCL_TYPES
  98.  
  99. typedef int INT;                        // i
  100. typedef unsigned int UINT;              // u
  101. typedef INT BOOL;                       // f
  102.  
  103. #ifndef __WORDBYTEDWORD__
  104.   #define __WORDBYTEDWORD__
  105. typedef unsigned char BYTE;             // b
  106. typedef unsigned short WORD;            // w
  107. typedef unsigned long DWORD;            // dw
  108.  
  109. typedef unsigned long   dword;
  110. typedef unsigned short  word;
  111. typedef unsigned char   byte;
  112. #endif
  113.  
  114. typedef char CHAR;                      // ch
  115. typedef unsigned char UCHAR;            // uch
  116. typedef short SHORT;                    // s
  117. typedef unsigned short USHORT;          // us
  118. typedef long LONG;                      // l
  119. typedef unsigned long ULONG;            // ul
  120.  
  121. typedef UCHAR BBOOL;                    // bf
  122. typedef USHORT SBOOL;                   // sf
  123. typedef ULONG LBOOL;                    // lf
  124.  
  125. typedef ULONG FLAGS;                    // fl
  126. typedef ULONG PORT;                     // port
  127.  
  128.  
  129. /*** Basic pointer types
  130.  */
  131. typedef VOID FAR *PVOID;                // p
  132. typedef VOID NEAR *NPVOID;              // np
  133.  
  134.  
  135. /*** Basic pointer-to-basic-data types
  136.  */
  137. typedef INT FAR *PINT;                  // pi
  138. typedef INT NEAR *NPINT;                // npi
  139.  
  140. typedef UINT FAR *PUINT;                // pu
  141. typedef UINT NEAR *NPUINT;              // npu
  142.  
  143. typedef BYTE FAR *PBYTE;                // pb
  144. typedef BYTE NEAR *NPBYTE;              // npb
  145.  
  146. typedef WORD FAR *PWORD;                // pw
  147. typedef WORD NEAR *NPWORD;              // npw
  148.  
  149. typedef DWORD FAR *PDWORD;              // pdw
  150. typedef DWORD NEAR *NPDWORD;            // npdw
  151.  
  152. typedef CHAR FAR *PCHAR;                // pch
  153. typedef CHAR NEAR *NPCHAR;              // npch
  154.  
  155. typedef SHORT FAR *PSHORT;              // ps
  156. typedef SHORT NEAR *NPSHORT;            // nps
  157.  
  158. typedef LONG FAR *PLONG;                // pl
  159. typedef LONG NEAR *NPLONG;              // npl
  160.  
  161. typedef UCHAR FAR *PUCHAR;              // puch
  162. typedef UCHAR NEAR *NPUCHAR;            // npuch
  163.  
  164. typedef USHORT FAR *PUSHORT;            // pus
  165. typedef USHORT NEAR *NPUSHORT;          // npus
  166.  
  167. typedef ULONG FAR *PULONG;              // pul
  168. typedef ULONG NEAR *NPULONG;            // npul
  169.  
  170. typedef BOOL FAR *PBOOL;                // pf
  171. typedef BOOL NEAR *NPBOOL;              // npf
  172.  
  173. typedef BBOOL FAR *PBBOOL;              // pbf
  174. typedef BBOOL NEAR *NPBBOOL;            // npbf
  175.  
  176. typedef SBOOL FAR *PSBOOL;              // psf
  177. typedef SBOOL NEAR *NPSBOOL;            // npsf
  178.  
  179. typedef LBOOL FAR *PLBOOL;              // plf
  180. typedef LBOOL NEAR *NPLBOOL;            // nplf
  181.  
  182. typedef FLAGS FAR *PFLAGS;              // pfl
  183. typedef FLAGS NEAR *NPFLAGS;            // npfl
  184.  
  185. typedef PVOID FAR *PPVOID;              // pp
  186. typedef PVOID NEAR *NPPVOID;            // npp
  187.  
  188.  
  189. /*** Other common types (and their pointers)
  190.  */
  191. typedef BYTE BUF[];                     // buf
  192. typedef BUF FAR *PBUF;                  // pbuf
  193.  
  194. typedef CHAR NAM[8];                    // nam
  195. typedef CHAR SZ[];                      // sz
  196. typedef CHAR FAR *PSZ;                  // psz
  197. typedef CHAR NEAR *NPSZ;                // npsz
  198. typedef CHAR SZZ[];                     // szz
  199. typedef CHAR FAR *PSZZ;                 // pszz
  200. typedef CHAR NEAR *NPSZZ;               // npszz
  201.  
  202. typedef USHORT SEL;                     // sel
  203. typedef SEL FAR *PSEL;                  // psel
  204. typedef SEL NEAR *NPSEL;                // npsel
  205.  
  206. typedef USHORT SOFFSET;                 // soff
  207. typedef ULONG OFFSET;                   // off
  208.  
  209. typedef ULONG PPHYS;                    // pphys
  210.  
  211. typedef (*FAR   PASCAL PFN)();    /* LFJ */   // pfn
  212. typedef (*NEAR  PASCAL NPFN)();   /* LFJ */   // npfn
  213. typedef (*FAR32 PASCAL FPFN)();      /* LFJ */   // npfn
  214. typedef (*FAR32 PASCAL FPVOID)();    /* LFJ */   // npfn
  215.  
  216. #if 0
  217. typedef (*FAR32 PASCAL FPFN2)();   /* LFJ */   // fpfn
  218. typedef union {
  219.     char padder_fpfn[8];
  220.     FPFN2 fpfn;
  221. } FPFN;
  222.  
  223. typedef (*FAR32 PASCAL FPVOID2)();  /* LFJ */   // fp (the only kind of FPVOID allowed)
  224. typedef union {
  225.     char padder_fpvoid[8];
  226.     FPVOID2 fpvoid;
  227. } FPVOID;
  228.  
  229. typedef struct _FPFN {
  230.     ULONG segment_var;
  231.     ULONG offset_var;
  232. } FPFN2;
  233. typedef struct _FPVOID {
  234.     ULONG segment_var;
  235.     ULONG offset_var;
  236. } FPVOID2;
  237.  
  238. typedef FPFN2  (*PASCAL FPFN)();
  239. typedef FPVOID2 (*PASCAL FPVOID)();
  240. #endif
  241.  
  242. /* Quad-word */
  243. /* NOINC */
  244. typedef struct _QWORD          /* qword */
  245. {
  246.    ULONG   ulLo;
  247.    ULONG   ulHi;
  248. } QWORD;
  249. typedef QWORD *PQWORD;
  250. /* INC */
  251.  
  252. typedef PFN FAR *PPFN;                  // ppfn
  253. typedef PFN NEAR *NPPFN;                // nppfn
  254. typedef FPFN FAR *PFPFN;                // pfpfn
  255. typedef FPFN NEAR *NPFPFN;              // npfpfn
  256.  
  257.  
  258. typedef USHORT SHANDLE;                 // sh
  259. typedef PVOID  HANDLE;                  // h
  260.  
  261. typedef struct _POINTL  {               // ptl
  262.     LONG  x;
  263.     LONG  y;
  264. } POINTL;
  265. typedef POINTL FAR *PPOINTL;
  266.  
  267. typedef struct _RECTL {                 // rcl
  268.     LONG  xLeft;
  269.     LONG  yBottom;
  270.     LONG  xRight;
  271.     LONG  yTop;
  272. } RECTL;
  273. typedef RECTL FAR *PRECTL;
  274.  
  275. typedef struct _RGB {                   // rgb
  276.     BYTE bBlue;
  277.     BYTE bGreen;
  278.     BYTE bRed;
  279. } RGB;
  280. typedef RGB FAR *PRGB;
  281.  
  282.  
  283. /*** OS/2-specific types
  284.  */
  285. typedef ULONG ERRCODE;                  // errc
  286. typedef ULONG RETCODE;                  // rc
  287. typedef USHORT SRETCODE;                // src
  288.  
  289. typedef USHORT PID;                     // pid
  290. typedef USHORT SGID;                    // sgid
  291. typedef USHORT TID;                     // tid
  292.  
  293. typedef struct _RESULTCODES {           // rsc
  294.     USHORT codeTerminate;
  295.     USHORT codeResult;
  296. } RESULTCODES;
  297. typedef RESULTCODES FAR *PRESULTCODES;
  298.  
  299. typedef SHANDLE HFILE;                  // shf
  300. typedef HFILE FAR *PHFILE;              // pshf
  301.  
  302. #endif  // INCL_TYPES
  303.