You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
224 lines
7.5 KiB
224 lines
7.5 KiB
#ifndef STDTYP_H
|
|
#define STDTYP_H
|
|
/*******************************************************************
|
|
Filename: STDTYP.H
|
|
(c) 1989, ATI Technologies Incorporated.
|
|
$Revision: 1.1 $
|
|
$Date: 23 Dec 1994 10:48:20 $
|
|
$Author: ASHANMUG $
|
|
$Log: S:/source/wnt/ms11/miniport/vcs/stdtyp.h $
|
|
*
|
|
* Rev 1.1 23 Dec 1994 10:48:20 ASHANMUG
|
|
* ALPHA/Chrontel-DAC
|
|
*
|
|
* Rev 1.0 31 Jan 1994 11:49:02 RWOLFF
|
|
* Initial revision.
|
|
|
|
Rev 1.1 03 Sep 1993 14:29:46 RWOLFF
|
|
Type definitions used by Windows NT driver.
|
|
|
|
Rev 1.1 24 Feb 1993 11:05:20 Ajith_S
|
|
Check for MSDOS and not far as #ifdef far always returns FALSE
|
|
|
|
Rev 1.0 13 Jan 1993 14:16:12 Robert_Wolff
|
|
Initial revision.
|
|
|
|
Rev 1.14 15 Apr 1991 16:26:30 Bryan_Sniderman
|
|
Corrected WORD definition from 'unsigned int' to 'unsigned short'
|
|
This will force a WORD to 16-bits (even in HIGH-C)
|
|
|
|
Rev 1.13 06 Dec 1990 12:02:22 Chris_Brady
|
|
Added support for Metaware HIGHC compiler. Define P386.
|
|
|
|
Rev 1.12 04 Jun 1990 15:54:18 Sandy_Lum
|
|
Corrected syntax error
|
|
|
|
Rev 1.11 17 May 1990 10:02:00 Robin_Davies
|
|
Added TINY, UTINY base types.
|
|
|
|
Rev 1.10 28 Sep 1989 11:41:14 Robin_Davies
|
|
Made PRIVATE declarator conditional, allowing all PRIVATE labels
|
|
to be published from the command line by adding /DPRIVATE option
|
|
to CL options. Useful for debugging purposes.
|
|
|
|
Rev 1.9 17 Sep 1989 16:10:16 Robin_Davies
|
|
"define HUGE huge" conflicts with ANSI definition of HUGE in
|
|
MATH.H. Replaced with "define ENORMOUSE huge".
|
|
|
|
Rev 1.8 15 Sep 1989 16:39:10 Peter Liepa
|
|
added HUGE keyword
|
|
|
|
Rev 1.7 30 Jun 1989 11:06:52 Peter Michalek
|
|
FALSE , TRUE added
|
|
|
|
Rev 1.6 28 Jun 1989 15:00:28 Robin_Davies
|
|
Added FLOAT and DOUBLE.
|
|
|
|
Rev 1.5 28 Jun 1989 14:34:54 Robin_Davies
|
|
Removed double-slash comments.
|
|
|
|
Rev 1.4 21 Jun 1989 15:34:06 Peter Liepa
|
|
removed hard tabs
|
|
|
|
Rev 1.3 20 Jun 1989 15:45:20 Peter Liepa
|
|
corrected spelling of "SUCCESS", fixed up line overflows
|
|
|
|
Rev 1.2 16 Jun 1989 9:51:56 Robin_Davies
|
|
Made headers consistent.
|
|
|
|
Rev 1.1 14 Jun 1989 15:27:38 Robin_Davies
|
|
Added OFFSET, SEGMENT macros.
|
|
|
|
Rev 1.0 14 Jun 1989 9:20:24 Robin_Davies
|
|
Initial revision.
|
|
********************************************************************/
|
|
|
|
#ifdef DOC
|
|
STDTYP.H - Portable types for C programs.
|
|
|
|
DESCRIPTION
|
|
This file contains standard augmented types for C programs. Types
|
|
are based on and are compatible with Microsoft OS/2 types.
|
|
In addition, several Plum-Hall/Whitesmith standard types
|
|
have been added.
|
|
|
|
This header currently supports the Microsoft C 5.1 compiler.
|
|
and the Metaware High C 386 Protected mode Version 1.6 compiler
|
|
by defining P386.
|
|
#endif
|
|
|
|
#ifndef INT_MAX /* Defined in limits.h */
|
|
#include <limits.h> /* Ansi type limits, matching augmented types */
|
|
#endif
|
|
/*
|
|
*****************************
|
|
Standard Defines
|
|
*****************************
|
|
*/
|
|
#define YES 1
|
|
#define NO 0
|
|
|
|
/*
|
|
* Some platforms have already defined TRUE and/or FALSE.
|
|
*/
|
|
#ifndef TRUE
|
|
#define TRUE (1) /* Function TRUE value */
|
|
#endif
|
|
#ifndef FALSE
|
|
#define FALSE (0) /* Function FALSE value */
|
|
#endif
|
|
|
|
#ifndef P386
|
|
#define SUCCESS 0
|
|
#define FAIL 1
|
|
#endif
|
|
|
|
/*
|
|
* Non-portable types. Data size references are not needed
|
|
* for Windows NT, since it's a 32 bit operating system.
|
|
* Only define the basic types for platforms (e.g. Windows NT)
|
|
* where they aren't already defined.
|
|
*/
|
|
|
|
typedef unsigned char BYTE; /* 8 bits unsigned */
|
|
typedef unsigned short WORD; /* 16 bits unsigned */
|
|
|
|
/*
|
|
**************************
|
|
BASE TYPES
|
|
**************************
|
|
*/
|
|
typedef char CHAR; /* At least 8 bits, sign indeterminate */
|
|
typedef short SHORT; /* At least 16 bits signed */
|
|
typedef long LONG; /* At least 32 bits signed */
|
|
typedef float FLOAT; /* Floating point, unspecified precision */
|
|
typedef double DOUBLE; /* Floating point, unspecified precision */
|
|
|
|
typedef unsigned char UCHAR; /* At least 8 bits, unsigned */
|
|
typedef signed char SCHAR; /* At least 8 bits, signed */
|
|
typedef unsigned short USHORT; /* At least 16 bits, unsigned */
|
|
typedef unsigned long ULONG; /* At least 32 bits, signed */
|
|
|
|
typedef unsigned char UTINY; /* Scalar, at least 8 bits , unsigned */
|
|
typedef char TINY; /* Scalar, at least 8 bits, signed */
|
|
|
|
/*
|
|
****************************
|
|
ARTIFICIAL TYPES
|
|
****************************
|
|
*/
|
|
#ifndef PRIVATE
|
|
#define PRIVATE static /* Local functions and variables */
|
|
#endif
|
|
|
|
typedef int METACHAR; /* Sufficient to hold any character and EOF */
|
|
typedef int BOOL; /* Most efficient Boolean,
|
|
compare against zero only! */
|
|
typedef char TBOOL; /* Smallest boolean, e.g. for use in arrays.
|
|
Compare against zero only */
|
|
typedef unsigned int BITS; /* At least 16 bits, used for bit manipulation */
|
|
typedef unsigned char TBITS; /* At least 8 bits, used for bit manipulation */
|
|
typedef unsigned long int LBITS; /* At least 32 bits, used for bit manipulation */
|
|
|
|
#ifndef _BASETSD_H_
|
|
typedef unsigned int SIZE_T; /* sufficent for sizeof(anything)
|
|
e.g. malloc size. Equivalent to ansi size_t */
|
|
#endif
|
|
|
|
#if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__)
|
|
typedef long PTRDIFF_T; /* difference between pointers.
|
|
Equivalent to ansi ptrdiff_t */
|
|
#else
|
|
typedef int PTRDIFF_T; /* difference between pointers.
|
|
Equivalent to ansi ptrdiff_t */
|
|
#endif
|
|
|
|
|
|
/*
|
|
****************************
|
|
POINTERS
|
|
****************************
|
|
*/
|
|
|
|
|
|
typedef void *PVOID; /* Generic untyped pointer */
|
|
|
|
typedef int (*PFUNC)(); /* Pointer to Function (model dependent) */
|
|
|
|
/*
|
|
****************************
|
|
Useful Macros
|
|
****************************
|
|
*/
|
|
|
|
#define FOREVER for(;;)
|
|
#define NOTHING /**/ /* e.g. while (condition) NOTHING */
|
|
|
|
/* Create untyped far pointer from selector and offset */
|
|
#define MAKEP(sel, off) ((PVOID)MAKEULONG(off, sel))
|
|
|
|
/* Extract selector or offset from far pointer. e.g. OFFSET(&x) */
|
|
#define OFFSET(p) LOWORD((VOID FAR *) (p))
|
|
#define SEGMENT(p) HIWORD((VOID FAR *) (p))
|
|
|
|
/* Cast any variable to an instance of the specified type. */
|
|
#define MAKETYPE(v, type) (*((type *)&v))
|
|
|
|
/* Calculate the byte offset of a field in a structure of type type. */
|
|
#define FIELDOFFSET(type, field) ((SHORT)&(((type *)0)->field))
|
|
|
|
/* Combine l & h to form a 32 bit quantity. */
|
|
#define MAKEULONG(l, h) ((ULONG)(((USHORT)(l)) | ((ULONG)((USHORT)(h))) << 16))
|
|
#define MAKELONG(l, h) ((LONG)MAKEULONG(l, h))
|
|
|
|
/* Combine l & h to form a 16 bit quantity. */
|
|
#define MAKEWORD(l, h) (((WORD)(l)) | ((WORD)(h)) << 8)
|
|
#define MAKESHORT(l, h) ((SHORT)MAKEUSHORT(l, h))
|
|
|
|
/* Extract high and low order parts of 16 and 32 bit quantity */
|
|
#define LOBYTE(w) ((BYTE)(w))
|
|
#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xff))
|
|
#define LOWORD(l) ((WORD)(l))
|
|
#define HIWORD(l) ((WORD)(((ULONG)(l) >> 16) & 0xffff))
|
|
|
|
#endif /* defined STDTYP_H */
|