4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * basetsd.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW API for MS-Windows 3.12 * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: module win32.basetsd; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* This template is used in these modules to declare constant pointer types, 4e2933c620 2015-04-21 kinaba: * in order to support both D 1.x and 2.x. 9b639cf2d6 2015-05-05 kinaba: * Since removed - now supporting only D2 4e2933c620 2015-04-21 kinaba: */ 9b639cf2d6 2015-05-05 kinaba: /*template CPtr(T) { 4e2933c620 2015-04-21 kinaba: version (D_Version2) { 4e2933c620 2015-04-21 kinaba: // must use mixin so that it doesn't cause a syntax error under D1 4e2933c620 2015-04-21 kinaba: mixin("alias const(T)* CPtr;"); 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: alias T* CPtr; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: }*/ 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: /* [CyberShadow VP 2011.12.22] typedef is now deprecated in D2. 9b639cf2d6 2015-05-05 kinaba: */ 9b639cf2d6 2015-05-05 kinaba: template TypeDef(T) { 9b639cf2d6 2015-05-05 kinaba: version (D_Version2) { 9b639cf2d6 2015-05-05 kinaba: alias T TypeDef; 9b639cf2d6 2015-05-05 kinaba: } else { 9b639cf2d6 2015-05-05 kinaba: // must use mixin so that it doesn't cause a deprecation error under D2 9b639cf2d6 2015-05-05 kinaba: mixin("typedef T TypeDef;"); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // [SnakE 2009-02-23] Moved HANDLE definition here from winnt.d to avoid 4e2933c620 2015-04-21 kinaba: // 'forwatd template reference' to CPtr from winnt.d caused by a circular 4e2933c620 2015-04-21 kinaba: // import. 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: alias TypeDef!(void*) HANDLE; 9b639cf2d6 2015-05-05 kinaba: /+struct HANDLE { 9b639cf2d6 2015-05-05 kinaba: const(void)* h; 9b639cf2d6 2015-05-05 kinaba: alias h this; 9b639cf2d6 2015-05-05 kinaba: }+/ 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: package template DECLARE_HANDLE(string name, base = HANDLE) { 9b639cf2d6 2015-05-05 kinaba: mixin ("alias " ~ base.stringof ~ " " ~ name ~ ";"); 9b639cf2d6 2015-05-05 kinaba: } 4e2933c620 2015-04-21 kinaba: alias HANDLE* PHANDLE, LPHANDLE; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: version (Win64) { 4e2933c620 2015-04-21 kinaba: alias long __int3264; 4e2933c620 2015-04-21 kinaba: const ulong ADDRESS_TAG_BIT = 0x40000000000; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias long INT_PTR, LONG_PTR; 4e2933c620 2015-04-21 kinaba: alias long* PINT_PTR, PLONG_PTR; 4e2933c620 2015-04-21 kinaba: alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR; 4e2933c620 2015-04-21 kinaba: alias ulong* PUINT_PTR, PULONG_PTR; 4e2933c620 2015-04-21 kinaba: alias int HALF_PTR; 4e2933c620 2015-04-21 kinaba: alias int* PHALF_PTR; 4e2933c620 2015-04-21 kinaba: alias uint UHALF_PTR; 4e2933c620 2015-04-21 kinaba: alias uint* PUHALF_PTR; 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: uint HandleToULong(void* h) { return(cast(uint) cast(ULONG_PTR) h); } 9b639cf2d6 2015-05-05 kinaba: int HandleToLong(void* h) { return(cast(int) cast(LONG_PTR) h); } 9b639cf2d6 2015-05-05 kinaba: void* ULongToHandle(uint h) { return(cast(void*) cast(UINT_PTR) h); } 9b639cf2d6 2015-05-05 kinaba: void* LongToHandle(int h) { return(cast(void*) cast(INT_PTR) h); } 9b639cf2d6 2015-05-05 kinaba: uint PtrToUlong(void* p) { return(cast(uint) cast(ULONG_PTR) p); } 9b639cf2d6 2015-05-05 kinaba: uint PtrToUint(void* p) { return(cast(uint) cast(UINT_PTR) p); } 9b639cf2d6 2015-05-05 kinaba: ushort PtrToUshort(void* p) { return(cast(ushort) cast(uint) cast(ULONG_PTR) p); } 9b639cf2d6 2015-05-05 kinaba: int PtrToLong(void* p) { return(cast(int) cast(LONG_PTR) p); } 9b639cf2d6 2015-05-05 kinaba: int PtrToInt(void* p) { return(cast(int) cast(INT_PTR) p); } 9b639cf2d6 2015-05-05 kinaba: short PtrToShort(void* p) { return(cast(short) cast(int) cast(LONG_PTR) p); } 9b639cf2d6 2015-05-05 kinaba: void* IntToPtr(int i) { return(cast(void*) cast(INT_PTR) i); } 9b639cf2d6 2015-05-05 kinaba: void* UIntToPtr(uint ui) { return(cast(void*) cast(UINT_PTR) ui); } 9b639cf2d6 2015-05-05 kinaba: void* LongToPtr(int l) { return(cast(void*) cast(LONG_PTR) l); } 9b639cf2d6 2015-05-05 kinaba: void* ULongToPtr(uint ul) { return(cast(void*) cast(ULONG_PTR) ul); } 9b639cf2d6 2015-05-05 kinaba: 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: alias int __int3264; 4e2933c620 2015-04-21 kinaba: const uint ADDRESS_TAG_BIT = 0x80000000; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias int INT_PTR, LONG_PTR; 4e2933c620 2015-04-21 kinaba: alias int* PINT_PTR, PLONG_PTR; 4e2933c620 2015-04-21 kinaba: alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR; 4e2933c620 2015-04-21 kinaba: alias uint* PUINT_PTR, PULONG_PTR; 4e2933c620 2015-04-21 kinaba: alias short HALF_PTR; 4e2933c620 2015-04-21 kinaba: alias short* PHALF_PTR; 4e2933c620 2015-04-21 kinaba: alias ushort UHALF_PTR; 4e2933c620 2015-04-21 kinaba: alias ushort* PUHALF_PTR; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: uint HandleToUlong(HANDLE h) { return cast(uint) h; } 4e2933c620 2015-04-21 kinaba: int HandleToLong(HANDLE h) { return cast(int) h; } 9b639cf2d6 2015-05-05 kinaba: HANDLE LongToHandle(LONG_PTR h) { return cast(HANDLE)h; } 9b639cf2d6 2015-05-05 kinaba: uint PtrToUlong(const(void)* p) { return cast(uint) p; } 9b639cf2d6 2015-05-05 kinaba: uint PtrToUint(const(void)* p) { return cast(uint) p; } 9b639cf2d6 2015-05-05 kinaba: int PtrToInt(const(void)* p) { return cast(int) p; } 9b639cf2d6 2015-05-05 kinaba: ushort PtrToUshort(const(void)* p) { return cast(ushort) p; } 9b639cf2d6 2015-05-05 kinaba: short PtrToShort(const(void)* p) { return cast(short) p; } 4e2933c620 2015-04-21 kinaba: void* IntToPtr(int i) { return cast(void*) i; } 4e2933c620 2015-04-21 kinaba: void* UIntToPtr(uint ui) { return cast(void*) ui; } 4e2933c620 2015-04-21 kinaba: alias IntToPtr LongToPtr; 4e2933c620 2015-04-21 kinaba: alias UIntToPtr ULongToPtr; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias UIntToPtr UintToPtr, UlongToPtr; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : UINT_PTR { 4e2933c620 2015-04-21 kinaba: MAXUINT_PTR = UINT_PTR.max 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : INT_PTR { 4e2933c620 2015-04-21 kinaba: MAXINT_PTR = INT_PTR.max, 4e2933c620 2015-04-21 kinaba: MININT_PTR = INT_PTR.min 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : ULONG_PTR { 4e2933c620 2015-04-21 kinaba: MAXULONG_PTR = ULONG_PTR.max 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : LONG_PTR { 4e2933c620 2015-04-21 kinaba: MAXLONG_PTR = LONG_PTR.max, 4e2933c620 2015-04-21 kinaba: MINLONG_PTR = LONG_PTR.min 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : UHALF_PTR { 4e2933c620 2015-04-21 kinaba: MAXUHALF_PTR = UHALF_PTR.max 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : HALF_PTR { 4e2933c620 2015-04-21 kinaba: MAXHALF_PTR = HALF_PTR.max, 4e2933c620 2015-04-21 kinaba: MINHALF_PTR = HALF_PTR.min 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias byte INT8; 4e2933c620 2015-04-21 kinaba: alias byte* PINT8; 4e2933c620 2015-04-21 kinaba: alias ubyte UINT8; 4e2933c620 2015-04-21 kinaba: alias ubyte* PUINT8; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias short INT16; 4e2933c620 2015-04-21 kinaba: alias short* PINT16; 4e2933c620 2015-04-21 kinaba: alias ushort UINT16; 4e2933c620 2015-04-21 kinaba: alias ushort* PUINT16; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias int LONG32, INT32; 4e2933c620 2015-04-21 kinaba: alias int* PLONG32, PINT32; 4e2933c620 2015-04-21 kinaba: alias uint ULONG32, DWORD32, UINT32; 4e2933c620 2015-04-21 kinaba: alias uint* PULONG32, PDWORD32, PUINT32; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias ULONG_PTR SIZE_T, DWORD_PTR; 4e2933c620 2015-04-21 kinaba: alias ULONG_PTR* PSIZE_T, PDWORD_PTR; 4e2933c620 2015-04-21 kinaba: alias LONG_PTR SSIZE_T; 4e2933c620 2015-04-21 kinaba: alias LONG_PTR* PSSIZE_T; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias long LONG64, INT64; 4e2933c620 2015-04-21 kinaba: alias long* PLONG64, PINT64; 4e2933c620 2015-04-21 kinaba: alias ulong ULONG64, DWORD64, UINT64; 4e2933c620 2015-04-21 kinaba: alias ulong* PULONG64, PDWORD64, PUINT64;