hxbastsd.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:7k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #if !(defined(_MSC_VER) && (_MSC_VER > 1100))
  36. #error hxbastsd.h is only intended for use with Microsoft VC++ 6.0 or higher
  37. #endif
  38. #ifndef _HXBASETSD_H_
  39. #define _HXBASETSD_H_
  40. #ifndef _BASETSD_H_
  41. #define _BASETSD_H_
  42. #endif
  43. #if _MSC_VER > 1000
  44. #pragma once
  45. #endif
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif
  49. typedef int *PLONG32;
  50. typedef int *PINT32;
  51. typedef unsigned int *PULONG32;
  52. typedef unsigned int DWORD32, *PDWORD32;
  53. typedef unsigned int *PUINT32;
  54. typedef __int64 SHANDLE_PTR;
  55. #if !defined(_W64)
  56. #if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
  57. #define _W64 __w64
  58. #else
  59. #define _W64
  60. #endif
  61. #endif
  62. #if ( 501 < __midl )
  63.     typedef [public] __int3264 INT_PTR, *PINT_PTR;
  64.     typedef [public] unsigned __int3264 UINT_PTR, *PUINT_PTR;
  65.     typedef [public] __int3264 LONG_PTR, *PLONG_PTR;
  66.     typedef [public] unsigned __int3264 ULONG_PTR, *PULONG_PTR;
  67. #else  // midl64
  68. // old midl and C++ compiler
  69. #if defined(_WIN64)
  70.     typedef __int64 INT_PTR, *PINT_PTR;
  71.     typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
  72.     typedef __int64 LONG_PTR, *PLONG_PTR;
  73.     typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
  74.     #define __int3264   __int64
  75. #else
  76.     typedef _W64 int INT_PTR, *PINT_PTR;
  77.     typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
  78.     typedef _W64 long LONG_PTR, *PLONG_PTR;
  79.     typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
  80.     #define __int3264   __int32
  81. #endif
  82. #endif // midl64
  83. //
  84. // HALF_PTR is half the size of a pointer it intended for use with
  85. // within strcuture which contain a pointer and two small fields.
  86. // UHALF_PTR is the unsigned variation.
  87. //
  88. #ifdef _WIN64
  89. #define ADDRESS_TAG_BIT 0x40000000000UI64
  90. typedef unsigned __int64 HANDLE_PTR;
  91. typedef unsigned int UHALF_PTR, *PUHALF_PTR;
  92. typedef int HALF_PTR, *PHALF_PTR;
  93. #pragma warning(disable:4311)   // type cast truncation
  94. #if _MSC_VER >= 1200
  95. #pragma warning(push)
  96. #endif
  97. #pragma warning(disable:4305)   // type cast truncation
  98. #if !defined(__midl)
  99. __inline
  100. unsigned long
  101. HandleToUlong(
  102.     const void *h
  103.     )
  104. {
  105.     return((unsigned long) h );
  106. }
  107. __inline
  108. long
  109. HandleToLong(
  110.     const void *h
  111.     )
  112. {
  113.     return((long) h );
  114. }
  115. __inline
  116. void *
  117. LongToHandle(
  118.     const long h
  119.     )
  120. {
  121.     return((void *) (INT_PTR) h );
  122. }
  123. __inline
  124. unsigned long
  125. PtrToUlong(
  126.     const void  *p
  127.     )
  128. {
  129.     return((unsigned long) p );
  130. }
  131. __inline
  132. unsigned int
  133. PtrToUint(
  134.     const void  *p
  135.     )
  136. {
  137.     return((unsigned int) p );
  138. }
  139. __inline
  140. unsigned short
  141. PtrToUshort(
  142.     const void  *p
  143.     )
  144. {
  145.     return((unsigned short) p );
  146. }
  147. __inline
  148. long
  149. PtrToLong(
  150.     const void  *p
  151.     )
  152. {
  153.     return((long) p );
  154. }
  155. __inline
  156. int
  157. PtrToInt(
  158.     const void  *p
  159.     )
  160. {
  161.     return((int) p );
  162. }
  163. __inline
  164. short
  165. PtrToShort(
  166.     const void  *p
  167.     )
  168. {
  169.     return((short) p );
  170. }
  171. __inline
  172. void *
  173. IntToPtr(
  174.     const int i
  175. )
  176. // Caution: IntToPtr() sign-extends the int value.
  177. {
  178.     return( (void *)(INT_PTR)i );
  179. }
  180. __inline
  181. void *
  182. UIntToPtr(
  183.     const unsigned int ui
  184.     )
  185. // Caution: UIntToPtr() zero-extends the unsigned int value.
  186. {
  187.     return( (void *)(UINT_PTR)ui );
  188. }
  189. __inline
  190. void *
  191. LongToPtr(
  192.     const long l
  193.     )
  194. // Caution: LongToPtr() sign-extends the long value.
  195. {
  196.     return( (void *)(LONG_PTR)l );
  197. }
  198. __inline
  199. void *
  200. ULongToPtr(
  201.     const unsigned long ul
  202.     )
  203. // Caution: ULongToPtr() zero-extends the unsigned long value.
  204. {
  205.     return( (void *)(ULONG_PTR)ul );
  206. }
  207. #endif // !_midl
  208. #if _MSC_VER >= 1200
  209. #pragma warning(pop)      // restore 4305
  210. #endif
  211. #pragma warning(3:4311)   // bump 4311 to a level 3
  212. #else  // !_WIN64
  213. #define ADDRESS_TAG_BIT 0x80000000UL
  214. typedef unsigned short UHALF_PTR, *PUHALF_PTR;
  215. typedef short HALF_PTR, *PHALF_PTR;
  216. typedef _W64 unsigned long HANDLE_PTR;
  217. #define HandleToUlong( h ) ((ULONG)(ULONG_PTR)(h) )
  218. #define HandleToLong( h ) ((LONG)(LONG_PTR) (h) )
  219. #define LongToHandle( h) ((HANDLE)(LONG_PTR) (h))
  220. #define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) )
  221. #define PtrToLong( p ) ((LONG)(LONG_PTR) (p) )
  222. #define PtrToUint( p ) ((UINT)(UINT_PTR) (p) )
  223. #define PtrToInt( p ) ((INT)(INT_PTR) (p) )
  224. #define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) )
  225. #define PtrToShort( p ) ((short)(LONG_PTR)(p) )
  226. #define IntToPtr( i )    ((VOID *)(INT_PTR)((int)i))
  227. #define UIntToPtr( ui )  ((VOID *)(UINT_PTR)((unsigned int)ui))
  228. #define LongToPtr( l )   ((VOID *)(LONG_PTR)((long)l))
  229. #define ULongToPtr( ul )  ((VOID *)(ULONG_PTR)((unsigned long)ul))
  230. #endif // !_WIN64
  231. #define UlongToPtr(ul) ULongToPtr(ul)
  232. #define UintToPtr(ui) UIntToPtr(ui)
  233. #define MAXUINT_PTR  (~((UINT_PTR)0))
  234. #define MAXINT_PTR   ((INT_PTR)(MAXUINT_PTR >> 1))
  235. #define MININT_PTR   (~MAXINT_PTR)
  236. #define MAXULONG_PTR (~((ULONG_PTR)0))
  237. #define MAXLONG_PTR  ((LONG_PTR)(MAXULONG_PTR >> 1))
  238. #define MINLONG_PTR  (~MAXLONG_PTR)
  239. #define MAXUHALF_PTR ((UHALF_PTR)~0)
  240. #define MAXHALF_PTR  ((HALF_PTR)(MAXUHALF_PTR >> 1))
  241. #define MINHALF_PTR  (~MAXHALF_PTR)
  242. //
  243. // SIZE_T used for counts or ranges which need to span the range of
  244. // of a pointer.  SSIZE_T is the signed variation.
  245. //
  246. typedef ULONG_PTR SIZE_T, *PSIZE_T;
  247. typedef LONG_PTR SSIZE_T, *PSSIZE_T;
  248. //
  249. // Add Windows flavor DWORD_PTR types
  250. //
  251. typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
  252. typedef __int64 LONG64, *PLONG64;
  253. typedef __int64 INT64,  *PINT64;
  254. typedef unsigned __int64 ULONG64, *PULONG64;
  255. typedef unsigned __int64 DWORD64, *PDWORD64;
  256. typedef unsigned __int64 UINT64,  *PUINT64;
  257. #ifdef __cplusplus
  258. }
  259. #endif
  260. #endif // _HXBASETSD_H_