1
|
1 /***********************************************************************\
|
|
2 * basetsd.d *
|
|
3 * *
|
|
4 * Windows API header module *
|
|
5 * *
|
|
6 * Translated from MinGW API for MS-Windows 3.12 *
|
|
7 * by Stewart Gordon *
|
|
8 * *
|
|
9 * Placed into public domain *
|
|
10 \***********************************************************************/
|
|
11 module win32.basetsd;
|
|
12
|
|
13 /* This template is used in these modules to declare constant pointer types,
|
|
14 * in order to support both D 1.x and 2.x.
|
|
15 */
|
|
16 template CPtr(T) {
|
|
17 version (D_Version2) {
|
|
18 // must use mixin so that it doesn't cause a syntax error under D1
|
|
19 mixin("alias const(T)* CPtr;");
|
|
20 } else {
|
|
21 alias T* CPtr;
|
|
22 }
|
|
23 }
|
|
24
|
|
25 // [SnakE 2009-02-23] Moved HANDLE definition here from winnt.d to avoid
|
|
26 // 'forwatd template reference' to CPtr from winnt.d caused by a circular
|
|
27 // import.
|
|
28
|
|
29 typedef void* HANDLE;
|
|
30
|
|
31 alias HANDLE* PHANDLE, LPHANDLE;
|
|
32
|
|
33 version (Win64) {
|
|
34 alias long __int3264;
|
|
35 const ulong ADDRESS_TAG_BIT = 0x40000000000;
|
|
36
|
|
37 alias long INT_PTR, LONG_PTR;
|
|
38 alias long* PINT_PTR, PLONG_PTR;
|
|
39 alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR;
|
|
40 alias ulong* PUINT_PTR, PULONG_PTR;
|
|
41 alias int HALF_PTR;
|
|
42 alias int* PHALF_PTR;
|
|
43 alias uint UHALF_PTR;
|
|
44 alias uint* PUHALF_PTR;
|
|
45
|
|
46 /* *To* functions are conditioned out in MinGW.
|
|
47 * Presumably they're not working/tested yet. Comment:
|
|
48 TODO when WIN64 is here
|
|
49 */
|
|
50 } else {
|
|
51 alias int __int3264;
|
|
52 const uint ADDRESS_TAG_BIT = 0x80000000;
|
|
53
|
|
54 alias int INT_PTR, LONG_PTR;
|
|
55 alias int* PINT_PTR, PLONG_PTR;
|
|
56 alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR;
|
|
57 alias uint* PUINT_PTR, PULONG_PTR;
|
|
58 alias short HALF_PTR;
|
|
59 alias short* PHALF_PTR;
|
|
60 alias ushort UHALF_PTR;
|
|
61 alias ushort* PUHALF_PTR;
|
|
62
|
|
63 uint HandleToUlong(HANDLE h) { return cast(uint) h; }
|
|
64 int HandleToLong(HANDLE h) { return cast(int) h; }
|
|
65 HANDLE LongToHandle(LONG_PTR h) { return cast(HANDLE) h; }
|
|
66 uint PtrToUlong(CPtr!(void) p) { return cast(uint) p; }
|
|
67 uint PtrToUint(CPtr!(void) p) { return cast(uint) p; }
|
|
68 int PtrToInt(CPtr!(void) p) { return cast(int) p; }
|
|
69 ushort PtrToUshort(CPtr!(void) p) { return cast(ushort) p; }
|
|
70 short PtrToShort(CPtr!(void) p) { return cast(short) p; }
|
|
71 void* IntToPtr(int i) { return cast(void*) i; }
|
|
72 void* UIntToPtr(uint ui) { return cast(void*) ui; }
|
|
73 alias IntToPtr LongToPtr;
|
|
74 alias UIntToPtr ULongToPtr;
|
|
75 }
|
|
76
|
|
77 alias UIntToPtr UintToPtr, UlongToPtr;
|
|
78
|
|
79 enum : UINT_PTR {
|
|
80 MAXUINT_PTR = UINT_PTR.max
|
|
81 }
|
|
82
|
|
83 enum : INT_PTR {
|
|
84 MAXINT_PTR = INT_PTR.max,
|
|
85 MININT_PTR = INT_PTR.min
|
|
86 }
|
|
87
|
|
88 enum : ULONG_PTR {
|
|
89 MAXULONG_PTR = ULONG_PTR.max
|
|
90 }
|
|
91
|
|
92 enum : LONG_PTR {
|
|
93 MAXLONG_PTR = LONG_PTR.max,
|
|
94 MINLONG_PTR = LONG_PTR.min
|
|
95 }
|
|
96
|
|
97 enum : UHALF_PTR {
|
|
98 MAXUHALF_PTR = UHALF_PTR.max
|
|
99 }
|
|
100
|
|
101 enum : HALF_PTR {
|
|
102 MAXHALF_PTR = HALF_PTR.max,
|
|
103 MINHALF_PTR = HALF_PTR.min
|
|
104 }
|
|
105
|
|
106 alias byte INT8;
|
|
107 alias byte* PINT8;
|
|
108 alias ubyte UINT8;
|
|
109 alias ubyte* PUINT8;
|
|
110
|
|
111 alias short INT16;
|
|
112 alias short* PINT16;
|
|
113 alias ushort UINT16;
|
|
114 alias ushort* PUINT16;
|
|
115
|
|
116 alias int LONG32, INT32;
|
|
117 alias int* PLONG32, PINT32;
|
|
118 alias uint ULONG32, DWORD32, UINT32;
|
|
119 alias uint* PULONG32, PDWORD32, PUINT32;
|
|
120
|
|
121 alias ULONG_PTR SIZE_T, DWORD_PTR;
|
|
122 alias ULONG_PTR* PSIZE_T, PDWORD_PTR;
|
|
123 alias LONG_PTR SSIZE_T;
|
|
124 alias LONG_PTR* PSSIZE_T;
|
|
125
|
|
126 alias long LONG64, INT64;
|
|
127 alias long* PLONG64, PINT64;
|
|
128 alias ulong ULONG64, DWORD64, UINT64;
|
|
129 alias ulong* PULONG64, PDWORD64, PUINT64;
|