Annotation of os2sdk/include/os2def.h, revision 1.1

1.1     ! root        1: /***************************************************************************\
        !             2: *
        !             3: * Module Name: OS2DEF.H
        !             4: *
        !             5: * OS/2 Common Definitions file
        !             6: *
        !             7: * This file is compatible with OS/2 version 1.0.
        !             8: *
        !             9: * Copyright (c) 1988  IBM Corporation
        !            10: * Copyright (c) 1988  Microsoft Corporation
        !            11: *
        !            12: \***************************************************************************/
        !            13: 
        !            14: #define PASCAL  pascal
        !            15: #define FAR     far
        !            16: #define NEAR    near
        !            17: #define VOID    void
        !            18: 
        !            19: typedef unsigned short SHANDLE;
        !            20: typedef void far      *LHANDLE;
        !            21: 
        !            22: #define EXPENTRY pascal far
        !            23: #define APIENTRY pascal far
        !            24: 
        !            25: #define CHAR    char            /* ch  */
        !            26: #define SHORT   int             /* s   */
        !            27: #define LONG    long            /* l   */
        !            28: #define INT     int             /* i   */
        !            29: 
        !            30: typedef unsigned char UCHAR;    /* uch */
        !            31: typedef unsigned int  USHORT;   /* us  */
        !            32: typedef unsigned long ULONG;    /* ul  */
        !            33: typedef unsigned int  UINT;     /* ui  */
        !            34: 
        !            35: typedef unsigned char BYTE;     /* b   */
        !            36: 
        !            37: typedef char far *PSZ;
        !            38: typedef char     *NPSZ;
        !            39: 
        !            40: typedef char far *PCH;
        !            41: typedef char     *NPCH;
        !            42: 
        !            43: typedef int   (pascal far  *PFN)();
        !            44: typedef int   (pascal near *NPFN)();
        !            45: typedef int   (pascal far * far *PPFN)();
        !            46: 
        !            47: typedef BYTE   FAR *PBYTE;
        !            48: typedef BYTE       *NPBYTE;
        !            49: 
        !            50: typedef CHAR   FAR *PCHAR;
        !            51: typedef SHORT  FAR *PSHORT;
        !            52: typedef LONG   FAR *PLONG;
        !            53: typedef INT    FAR *PINT;
        !            54: 
        !            55: typedef UCHAR  FAR *PUCHAR;
        !            56: typedef USHORT FAR *PUSHORT;
        !            57: typedef ULONG  FAR *PULONG;
        !            58: typedef UINT   FAR *PUINT;
        !            59: 
        !            60: typedef VOID   FAR *PVOID;
        !            61: 
        !            62: typedef unsigned short BOOL;    /* f */
        !            63: typedef BOOL FAR *PBOOL;
        !            64: 
        !            65: #define FALSE   0
        !            66: #define TRUE    1
        !            67: 
        !            68: typedef unsigned short SEL;     /* sel */
        !            69: typedef SEL FAR *PSEL;
        !            70: 
        !            71: typedef SHANDLE HFILE;          /* hf */
        !            72: typedef HFILE FAR *PHFILE;
        !            73: 
        !            74: /*
        !            75:  * The HSEM type is used in structures and functions that take both
        !            76:  * a system semaphore handle, or a far pointer to a RAM semaphore.
        !            77:  * It is declared as VOID FAR * so that the use of both types of
        !            78:  * semaphores will not result in a compiler warning.
        !            79:  */
        !            80: typedef VOID FAR *HSEM;         /* hsem */
        !            81: typedef HSEM FAR *PHSEM;
        !            82: 
        !            83: /*** Useful Helper Macros */
        !            84: 
        !            85: /* Create untyped far pointer from selector and offset */
        !            86: #define MAKEP(sel, off)     ((PVOID)MAKEULONG(off, sel))
        !            87: 
        !            88: /* Extract selector or offset from far pointer */
        !            89: #define SELECTOROF(p)       (((PUSHORT)&(p))[1])
        !            90: #define OFFSETOF(p)         (((PUSHORT)&(p))[0])
        !            91: 
        !            92: /* Cast any variable to an instance of the specified type. */
        !            93: #define MAKETYPE(v, type)   (*((type far *)&v))
        !            94: 
        !            95: /* Calculate the byte offset of a field in a structure of type type. */
        !            96: #define FIELDOFFSET(type, field)    ((SHORT)&(((type *)0)->field))
        !            97: 
        !            98: /* Combine l & h to form a 32 bit quantity. */
        !            99: #define MAKEULONG(l, h)  ((ULONG)(((USHORT)(l)) | ((ULONG)((USHORT)(h))) << 16))
        !           100: #define MAKELONG(l, h)   ((LONG)MAKEULONG(l, h))
        !           101: 
        !           102: /* Combine l & h to form a 16 bit quantity. */
        !           103: #define MAKEUSHORT(l, h) (((USHORT)(l)) | ((USHORT)(h)) << 8)
        !           104: #define MAKESHORT(l, h)  ((SHORT)MAKEUSHORT(l, h))
        !           105: 
        !           106: /* Extract high and low order parts of 16 and 32 bit quantity */
        !           107: #define LOBYTE(w)       LOUCHAR(w)
        !           108: #define HIBYTE(w)       HIUCHAR(w)
        !           109: #define LOUCHAR(w)      ((UCHAR)(w))
        !           110: #define HIUCHAR(w)      (((USHORT)(w) >> 8) & 0xff)
        !           111: #define LOUSHORT(l)     ((USHORT)(l))
        !           112: #define HIUSHORT(l)     ((USHORT)(((ULONG)(l) >> 16) & 0xffff))
        !           113: 
        !           114: /*** Common Error definitions ****/
        !           115: 
        !           116: typedef ULONG ERRORID;  /* errid */
        !           117: typedef ERRORID FAR *PERRORID;
        !           118: 
        !           119: /* Combine severity and error code to produce ERRORID */
        !           120: #define MAKEERRORID(sev, error) (ERRORID)(MAKEULONG((error), (sev)))
        !           121: 
        !           122: /* Severity codes */
        !           123: #define SEVERITY_NOERROR                    0x0000
        !           124: #define SEVERITY_WARNING                    0x0004
        !           125: #define SEVERITY_ERROR                      0x0008
        !           126: #define SEVERITY_SEVERE                     0x000C
        !           127: #define SEVERITY_UNRECOVERABLE              0x0010
        !           128: 
        !           129: /* Base component error values */
        !           130: 
        !           131: #define WINERR_BASE     0x1000  /* Window Manager                  */
        !           132: #define GPIERR_BASE     0x2000  /* Graphics Presentation Interface */
        !           133: #define DEVERR_BASE     0x3000  /* Device Manager                  */
        !           134: #define SPLERR_BASE     0x4000  /* Spooler                         */
        !           135: 
        !           136: /*** Common types used across components */
        !           137: 
        !           138: /*** Common DOS types */
        !           139: 
        !           140: typedef USHORT    HMODULE;  /* hmod */
        !           141: typedef HMODULE FAR *PHMODULE;
        !           142: 
        !           143: typedef USHORT    PID;      /* pid  */
        !           144: typedef PID FAR *PPID;
        !           145: 
        !           146: typedef USHORT    TID;      /* tid  */
        !           147: typedef TID FAR *PTID;
        !           148: 
        !           149: /*** Common SUP types */
        !           150: 
        !           151: typedef LHANDLE   HAB;      /* hab  */
        !           152: typedef HAB FAR *PHAB;
        !           153: 
        !           154: /*** Common GPI/DEV types */
        !           155: 
        !           156: typedef LHANDLE   HPS;      /* hps  */
        !           157: typedef HPS FAR *PHPS;
        !           158: 
        !           159: typedef LHANDLE   HDC;      /* hdc  */
        !           160: typedef HDC FAR *PHDC;
        !           161: 
        !           162: typedef LHANDLE   HRGN;     /* hrgn */
        !           163: typedef HRGN FAR *PHRGN;
        !           164: 
        !           165: typedef LHANDLE   HBITMAP;  /* hbm  */
        !           166: typedef HBITMAP FAR *PHBITMAP;
        !           167: 
        !           168: typedef LHANDLE   HMF;      /* hmf  */
        !           169: typedef HMF FAR *PHMF;
        !           170: 
        !           171: typedef ULONG     COLOR;    /* clr  */
        !           172: typedef COLOR FAR *PCOLOR;
        !           173: 
        !           174: /* common DOS/SHL types */
        !           175: 
        !           176: /* File time and date types */
        !           177: 
        !           178: typedef struct _FTIME {         /* ftime */
        !           179:     unsigned twosecs : 5;
        !           180:     unsigned minutes : 6;
        !           181:     unsigned hours   : 5;
        !           182: } FTIME;
        !           183: typedef FTIME FAR *PFTIME;
        !           184: 
        !           185: typedef struct _FDATE {         /* fdate */
        !           186:     unsigned day     : 5;
        !           187:     unsigned month   : 4;
        !           188:     unsigned year    : 7;
        !           189: } FDATE;
        !           190: typedef FDATE FAR *PFDATE;
        !           191: 
        !           192: typedef struct _FILEFINDBUF {   /* findbuf */
        !           193:     FDATE  fdateCreation;
        !           194:     FTIME  ftimeCreation;
        !           195:     FDATE  fdateLastAccess;
        !           196:     FTIME  ftimeLastAccess;
        !           197:     FDATE  fdateLastWrite;
        !           198:     FTIME  ftimeLastWrite;
        !           199:     ULONG  cbFile;
        !           200:     ULONG  cbFileAlloc;
        !           201:     USHORT attrFile;
        !           202:     UCHAR  cchName;
        !           203:     CHAR   achName[13];
        !           204: } FILEFINDBUF;
        !           205: typedef FILEFINDBUF FAR *PFILEFINDBUF;
        !           206: 
        !           207: /*** Common WIN types */
        !           208: 
        !           209: typedef LHANDLE HWND;      /* hwnd */
        !           210: typedef HWND FAR *PHWND;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.