/*
 *  basetsd.h   Base type-safe definitions
 *
 * =========================================================================
 *
 *                          Open Watcom Project
 *
 * Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
 *
 *    This file is automatically generated. Do not edit directly.
 *
 * =========================================================================
 */

#ifndef _BASETSD_H_
#define _BASETSD_H_

#ifndef _ENABLE_AUTODEPEND
 #pragma read_only_file;
#endif

#ifdef __cplusplus
extern "C" {
#endif

/* Pointer types */
#define POINTER_32
#define POINTER_64
#define POINTER_SIGNED
#define POINTER_UNSIGNED

/* Integers of predefined sizes */
typedef signed char         INT8;
typedef signed char         *PINT8;
typedef signed short        INT16;
typedef signed short        *PINT16;
typedef signed int          INT32;
typedef signed int          *PINT32;
typedef signed __int64      INT64;
typedef signed __int64      *PINT64;
typedef unsigned char       UINT8;
typedef unsigned char       *PUINT8;
typedef unsigned short      UINT16;
typedef unsigned short      *PUINT16;
typedef unsigned int        UINT32;
typedef unsigned int        *PUINT32;
typedef unsigned __int64    UINT64;
typedef unsigned __int64    *PUINT64;
typedef signed int          LONG32;
typedef signed int          *PLONG32;
typedef unsigned int        ULONG32;
typedef unsigned int        *PULONG32;
typedef unsigned int        DWORD32;
typedef unsigned int        *PDWORD32;
typedef __int64             LONG64;
typedef __int64             *PLONG64;
typedef unsigned __int64    ULONG64;
typedef unsigned __int64    *PULONG64;
typedef unsigned __int64    DWORD64;
typedef unsigned __int64    *PDWORD64;

/* Integers of sizes that are defined differently for Win32 and Win64 */
typedef int             INT_PTR;
typedef int             *PINT_PTR;
typedef unsigned int    UINT_PTR;
typedef unsigned int    *PUINT_PTR;
typedef long            LONG_PTR;
typedef long            *PLONG_PTR;
typedef unsigned long   ULONG_PTR;
typedef unsigned long   *PULONG_PTR;
typedef ULONG_PTR       DWORD_PTR;
typedef ULONG_PTR       *PDWORD_PTR;
typedef short           HALF_PTR;
typedef short           *PHALF_PTR;
typedef unsigned short  UHALF_PTR;
typedef unsigned short  *PUHALF_PTR;
typedef unsigned long   HANDLE_PTR;
typedef long            SHANDLE_PTR;

/* Size data types */
typedef ULONG_PTR   SIZE_T;
typedef ULONG_PTR   *PSIZE_T;
typedef LONG_PTR    SSIZE_T;
typedef LONG_PTR    *PSSIZE_T;

/* Affinity data types */
typedef ULONG_PTR   KAFFINITY;
typedef KAFFINITY   *PKAFFINITY;

/* Type conversion macros */
#define HandleToULong( x )      ((ULONG)(ULONG_PTR)(x))
#define HandleToLong( x )       ((LONG)(LONG_PTR)(x))
#define ULongToHandle( x )      ((void *)(ULONG_PTR)(x))
#define LongToHandle( x )       ((void *)(LONG_PTR)(x))
#define PtrToUlong( x )         ((ULONG)(ULONG_PTR)(x))
#define PtrToLong( x )          ((LONG)(LONG_PTR)(x))
#define PtrToUint( x )          ((UINT)(UINT_PTR)(x))
#define PtrToInt( x )           ((INT)(INT_PTR)(x))
#define PtrToUshort( x )        ((unsigned short)(ULONG_PTR)(x))
#define PtrToShort( x )         ((short)(LONG_PTR)(x))
#define IntToPtr( x )           ((void *)(INT_PTR)(int)(x))
#define UIntToPtr( x )          ((void *)(UINT_PTR)(unsigned int)(x))
#define LongToPtr( x )          ((void *)(LONG_PTR)(long)(x))
#define ULongToPtr( x )         ((void *)(ULONG_PTR)(unsigned long)(x))
#define PtrToPtr64( x )         ((void *POINTER_64)(unsigned __int64)(ULONG_PTR)(x))
#define Ptr64ToPtr( x )         ((void *)(ULONG_PTR)(unsigned __int64)(x))
#define HandleToHandle64( x )   ((void *POINTER_64)(x))
#define Handle64ToHandle( x )   ((void *)(ULONG_PTR)(unsigned __int64)(x))
#define Ptr32ToPtr( x )         ((void *)(x))
#define Handle32ToHandle( x )   Ptr32ToPtr( x )
#define PtrToPtr32( x )         ((void *POINTER_32)(x))
#define HandleToHandle32( x )   PtrToPtr32( x )
#define HandleToUlong( x )      HandleToULong( x )
#define UlongToHandle( x )      ULongToHandle( x )
#define UlongToPtr( x )         ULongToPtr( x )
#define UintToPtr( x )          UIntToPtr( x )

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* _BASETSD_H_ */
