/[cvs]/api/include/basetsd.h
ViewVC logotype

Annotation of /api/include/basetsd.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (vendor branch)
Sun Jul 1 20:47:59 2001 UTC (23 years, 4 months ago) by bearsoft
Branch: lazy, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
First import

1 bearsoft 1.1 /*++
2    
3     Copyright (c) 1997-1999 Microsoft Corporation
4    
5     Module Name:
6    
7     basetsd.h
8    
9     Abstract:
10    
11     Type definitions for the basic sized types.
12    
13     Author:
14    
15     Jeff Havens (jhavens) 23-Oct-1997
16    
17     Revision History:
18    
19     --*/
20    
21     #ifndef _BASETSD_H_
22     #define _BASETSD_H_
23    
24     #if _MSC_VER > 1000
25     #pragma once
26     #endif
27    
28     #ifdef __cplusplus
29     extern "C" {
30     #endif
31    
32     typedef signed char INT8, *PINT8;
33     typedef signed short INT16, *PINT16;
34     typedef signed int INT32, *PINT32;
35     typedef signed __int64 INT64, *PINT64;
36     typedef unsigned char UINT8, *PUINT8;
37     typedef unsigned short UINT16, *PUINT16;
38     typedef unsigned int UINT32, *PUINT32;
39     typedef unsigned __int64 UINT64, *PUINT64;
40    
41     //
42     // The following types are guaranteed to be signed and 32 bits wide.
43     //
44    
45     typedef signed int LONG32, *PLONG32;
46    
47     //
48     // The following types are guaranteed to be unsigned and 32 bits wide.
49     //
50    
51     typedef unsigned int ULONG32, *PULONG32;
52     typedef unsigned int DWORD32, *PDWORD32;
53    
54     #if !defined(_W64)
55     #if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
56     #define _W64 __w64
57     #else
58     #define _W64
59     #endif
60     #endif
61    
62     //
63     // The INT_PTR is guaranteed to be the same size as a pointer. Its
64     // size with change with pointer size (32/64). It should be used
65     // anywhere that a pointer is cast to an integer type. UINT_PTR is
66     // the unsigned variation.
67     //
68     // __int3264 is intrinsic to 64b MIDL but not to old MIDL or to C compiler.
69     //
70     #if ( 501 < __midl )
71    
72     typedef [public] __int3264 INT_PTR, *PINT_PTR;
73     typedef [public] unsigned __int3264 UINT_PTR, *PUINT_PTR;
74    
75     typedef [public] __int3264 LONG_PTR, *PLONG_PTR;
76     typedef [public] unsigned __int3264 ULONG_PTR, *PULONG_PTR;
77    
78     #else // midl64
79     // old midl and C++ compiler
80    
81     #if defined(_WIN64)
82     typedef __int64 INT_PTR, *PINT_PTR;
83     typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
84    
85     typedef __int64 LONG_PTR, *PLONG_PTR;
86     typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
87    
88     #define __int3264 __int64
89    
90     #else
91     typedef _W64 int INT_PTR, *PINT_PTR;
92     typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
93    
94     typedef _W64 long LONG_PTR, *PLONG_PTR;
95     typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
96    
97     #define __int3264 __int32
98    
99     #endif
100     #endif // midl64
101    
102     //
103     // HALF_PTR is half the size of a pointer it intended for use with
104     // within strcuture which contain a pointer and two small fields.
105     // UHALF_PTR is the unsigned variation.
106     //
107    
108     #ifdef _WIN64
109    
110     #define ADDRESS_TAG_BIT 0x40000000000UI64
111    
112     typedef unsigned __int64 HANDLE_PTR;
113     typedef unsigned int UHALF_PTR, *PUHALF_PTR;
114     typedef int HALF_PTR, *PHALF_PTR;
115    
116     #pragma warning(disable:4311) // type cast truncation
117     #if _MSC_VER >= 1200
118     #pragma warning(push)
119     #endif
120     #pragma warning(disable:4305) // type cast truncation
121    
122     #if !defined(__midl)
123     __inline
124     unsigned long
125     HandleToULong(
126     const void *h
127     )
128     {
129     return((unsigned long) h );
130     }
131    
132     __inline
133     long
134     HandleToLong(
135     const void *h
136     )
137     {
138     return((long) h );
139     }
140    
141     __inline
142     void *
143     ULongToHandle(
144     const unsigned long h
145     )
146     {
147     return((void *) (UINT_PTR) h );
148     }
149    
150    
151     __inline
152     void *
153     LongToHandle(
154     const long h
155     )
156     {
157     return((void *) (INT_PTR) h );
158     }
159    
160    
161     __inline
162     unsigned long
163     PtrToUlong(
164     const void *p
165     )
166     {
167     return((unsigned long) p );
168     }
169    
170     __inline
171     unsigned int
172     PtrToUint(
173     const void *p
174     )
175     {
176     return((unsigned int) p );
177     }
178    
179     __inline
180     unsigned short
181     PtrToUshort(
182     const void *p
183     )
184     {
185     return((unsigned short) p );
186     }
187    
188     __inline
189     long
190     PtrToLong(
191     const void *p
192     )
193     {
194     return((long) p );
195     }
196    
197     __inline
198     int
199     PtrToInt(
200     const void *p
201     )
202     {
203     return((int) p );
204     }
205    
206     __inline
207     short
208     PtrToShort(
209     const void *p
210     )
211     {
212     return((short) p );
213     }
214    
215     __inline
216     void *
217     IntToPtr(
218     const int i
219     )
220     // Caution: IntToPtr() sign-extends the int value.
221     {
222     return( (void *)(INT_PTR)i );
223     }
224    
225     __inline
226     void *
227     UIntToPtr(
228     const unsigned int ui
229     )
230     // Caution: UIntToPtr() zero-extends the unsigned int value.
231     {
232     return( (void *)(UINT_PTR)ui );
233     }
234    
235     __inline
236     void *
237     LongToPtr(
238     const long l
239     )
240     // Caution: LongToPtr() sign-extends the long value.
241     {
242     return( (void *)(LONG_PTR)l );
243     }
244    
245     __inline
246     void *
247     ULongToPtr(
248     const unsigned long ul
249     )
250     // Caution: ULongToPtr() zero-extends the unsigned long value.
251     {
252     return( (void *)(ULONG_PTR)ul );
253     }
254    
255     #endif // !_midl
256     #if _MSC_VER >= 1200
257     #pragma warning(pop) // restore 4305
258     #endif
259     #pragma warning(3:4311) // bump 4311 to a level 3
260    
261     #else // !_WIN64
262    
263     #define ADDRESS_TAG_BIT 0x80000000UL
264    
265     typedef unsigned short UHALF_PTR, *PUHALF_PTR;
266     typedef short HALF_PTR, *PHALF_PTR;
267     typedef _W64 unsigned long HANDLE_PTR;
268    
269     #define HandleToULong( h ) ((ULONG)(ULONG_PTR)(h) )
270     #define HandleToLong( h ) ((LONG)(LONG_PTR) (h) )
271     #define ULongToHandle( ul ) ((HANDLE)(ULONG_PTR) (ul) )
272     #define LongToHandle( h ) ((HANDLE)(LONG_PTR) (h) )
273     #define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) )
274     #define PtrToLong( p ) ((LONG)(LONG_PTR) (p) )
275     #define PtrToUint( p ) ((UINT)(UINT_PTR) (p) )
276     #define PtrToInt( p ) ((INT)(INT_PTR) (p) )
277     #define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) )
278     #define PtrToShort( p ) ((short)(LONG_PTR)(p) )
279     #define IntToPtr( i ) ((VOID *)(INT_PTR)((int)i))
280     #define UIntToPtr( ui ) ((VOID *)(UINT_PTR)((unsigned int)ui))
281     #define LongToPtr( l ) ((VOID *)(LONG_PTR)((long)l))
282     #define ULongToPtr( ul ) ((VOID *)(ULONG_PTR)((unsigned long)ul))
283    
284     #endif // !_WIN64
285    
286     #define HandleToUlong(h) HandleToULong(h)
287     #define UlongToHandle(ul) ULongToHandle(ul)
288     #define UlongToPtr(ul) ULongToPtr(ul)
289     #define UintToPtr(ui) UIntToPtr(ui)
290    
291     #define MAXUINT_PTR (~((UINT_PTR)0))
292     #define MAXINT_PTR ((INT_PTR)(MAXUINT_PTR >> 1))
293     #define MININT_PTR (~MAXINT_PTR)
294    
295     #define MAXULONG_PTR (~((ULONG_PTR)0))
296     #define MAXLONG_PTR ((LONG_PTR)(MAXULONG_PTR >> 1))
297     #define MINLONG_PTR (~MAXLONG_PTR)
298    
299     #define MAXUHALF_PTR ((UHALF_PTR)~0)
300     #define MAXHALF_PTR ((HALF_PTR)(MAXUHALF_PTR >> 1))
301     #define MINHALF_PTR (~MAXHALF_PTR)
302    
303     //
304     // SIZE_T used for counts or ranges which need to span the range of
305     // of a pointer. SSIZE_T is the signed variation.
306     //
307    
308     typedef ULONG_PTR SIZE_T, *PSIZE_T;
309     typedef LONG_PTR SSIZE_T, *PSSIZE_T;
310    
311     //
312     // Add Windows flavor DWORD_PTR types
313     //
314    
315     typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
316    
317     //
318     // The following types are guaranteed to be signed and 64 bits wide.
319     //
320    
321     typedef __int64 LONG64, *PLONG64;
322    
323    
324     //
325     // The following types are guaranteed to be unsigned and 64 bits wide.
326     //
327    
328     typedef unsigned __int64 ULONG64, *PULONG64;
329     typedef unsigned __int64 DWORD64, *PDWORD64;
330    
331     //
332     // Thread affinity.
333     //
334    
335     typedef ULONG_PTR KAFFINITY;
336     typedef KAFFINITY *PKAFFINITY;
337    
338     #ifdef __cplusplus
339     }
340     #endif
341    
342     #endif // _BASETSD_H_

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26