BASETSD.H
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

  1. /*++
  2. Copyright (c) 1997-1998  Microsoft Corporation
  3. Module Name:
  4.     basetsd.h
  5. Abstract:
  6.     Type definitions for the basic sized types.
  7. Author:
  8.     Jeff Havens (jhavens)   23-Oct-1997
  9. Revision History:
  10. --*/
  11. #ifndef _BASETSD_H_
  12. #define _BASETSD_H_
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. //
  17. // The following types are guaranteed to be signed and 32 bits wide.
  18. //
  19. typedef int LONG32, *PLONG32;
  20. typedef int INT32, *PINT32;
  21. //
  22. // The following types are guaranteed to be unsigned and 32 bits wide.
  23. //
  24. typedef unsigned int ULONG32, *PULONG32;
  25. typedef unsigned int DWORD32, *PDWORD32;
  26. typedef unsigned int UINT32, *PUINT32;
  27. //
  28. // The INT_PTR is guaranteed to be the same size as a pointer.  Its
  29. // size with change with pointer size (32/64).  It should be used
  30. // anywhere that a pointer is cast to an integer type. UINT_PTR is
  31. // the unsigned variation.
  32. //
  33. // HALF_PTR is half the size of a pointer it intended for use with
  34. // within strcuture which contain a pointer and two small fields.
  35. // UHALF_PTR is the unsigned variation.
  36. //
  37. #ifdef _WIN64
  38. typedef __int64 INT_PTR, *PINT_PTR;
  39. typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
  40. #define MAXINT_PTR (0x7fffffffffffffffI64)
  41. #define MININT_PTR (0x8000000000000000I64)
  42. #define MAXUINT_PTR (0xffffffffffffffffUI64)
  43. typedef unsigned int UHALF_PTR, *PUHALF_PTR;
  44. typedef int HALF_PTR, *PHALF_PTR;
  45. #define MAXUHALF_PTR (0xffffffffUL)
  46. #define MAXHALF_PTR (0x7fffffffL)
  47. #define MINHALF_PTR (0x80000000L)
  48. #pragma warning(disable:4311)   // type cast truncation
  49. #if !defined(__midl)
  50. __inline
  51. unsigned long
  52. HandleToUlong(
  53.     void *h
  54.     )
  55. {
  56.     return((unsigned long) h );
  57. }
  58. __inline
  59. unsigned long
  60. PtrToUlong(
  61.     void  *p
  62.     )
  63. {
  64.     return((unsigned long) p );
  65. }
  66. __inline
  67. unsigned short
  68. PtrToUshort(
  69.     void  *p
  70.     )
  71. {
  72.     return((unsigned short) p );
  73. }
  74. __inline
  75. long
  76. PtrToLong(
  77.     void  *p
  78.     )
  79. {
  80.     return((long) p );
  81. }
  82. __inline
  83. short
  84. PtrToShort(
  85.     void  *p
  86.     )
  87. {
  88.     return((short) p );
  89. }
  90. #endif
  91. #pragma warning(3:4311)   // type cast truncation
  92. #else
  93. typedef long INT_PTR, *PINT_PTR;
  94. typedef unsigned long UINT_PTR, *PUINT_PTR;
  95. #define MAXINT_PTR (0x7fffffffL)
  96. #define MININT_PTR (0x80000000L)
  97. #define MAXUINT_PTR (0xffffffffUL)
  98. typedef unsigned short UHALF_PTR, *PUHALF_PTR;
  99. typedef short HALF_PTR, *PHALF_PTR;
  100. #define MAXUHALF_PTR 0xffff
  101. #define MAXHALF_PTR 0x7fff
  102. #define MINHALF_PTR 0x8000
  103. #define HandleToUlong( h ) ((ULONG) (h) )
  104. #define PtrToUlong( p ) ((ULONG) (p) )
  105. #define PtrToLong( p ) ((LONG) (p) )
  106. #define PtrToUshort( p ) ((unsigned short) (p) )
  107. #define PtrToShort( p ) ((short) (p) )
  108. #endif
  109. //
  110. // SIZE_T used for counts or ranges which need to span the range of
  111. // of a pointer.  SSIZE_T is the signed variation.
  112. //
  113. typedef UINT_PTR SIZE_T, *PSIZE_T;
  114. typedef INT_PTR SSIZE_T, *PSSIZE_T;
  115. //
  116. // The following types are guaranteed to be signed and 64 bits wide.
  117. //
  118. typedef __int64 LONG64, *PLONG64;
  119. typedef __int64 INT64, *PINT64;
  120. //
  121. // The following types are guaranteed to be unsigned and 64 bits wide.
  122. //
  123. typedef unsigned __int64 ULONG64, *PULONG64;
  124. typedef unsigned __int64 DWORD64, *PDWORD64;
  125. typedef unsigned __int64 UINT64, *PUINT64;
  126. #ifdef __cplusplus
  127. }
  128. #endif
  129. #endif // _BASETSD_H_