Mercurial > projects > ddbg_continued
comparison win32/basetsd.d @ 1:4a9dcbd9e54f
-files of 0.13 beta
-fixes so that it now compiles with the current dmd version
author | marton@basel.hu |
---|---|
date | Tue, 05 Apr 2011 20:44:01 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:586e4a649642 | 1:4a9dcbd9e54f |
---|---|
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; |