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

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(_SYMBIAN)
  36. # include <e32def.h>
  37. # include <e32std.h>
  38. # include <platform/symbian/symbiantypes.h> /* For our TInt64 impl */
  39. #endif
  40. #ifdef _VXWORKS
  41. #include "types/vxTypesOld.h"
  42. #include "vxWorks.h"
  43.      /* md3 - added to override SENS macro. net/mbuf.h */
  44. #    ifdef m_flags
  45. #    undef m_flags
  46. #    endif /* m_flags */
  47.      /* md3 - added to override SENS macro, net/radix.h */
  48. #    ifdef Free
  49. #    undef Free
  50. #    endif /* Free */
  51. #endif
  52. #ifdef _MACINTOSH
  53. #pragma once
  54. #endif
  55. #ifndef _HXTYPES_H_
  56. #define _HXTYPES_H_
  57. // this is essential to make sure that new is not #define'd before the C++ version is included.
  58. #if (defined(_MSC_VER) && defined(_DEBUG) && defined(__cplusplus) && !defined(WIN32_PLATFORM_PSPC) && !defined(_SYMBIAN) && !defined(_OPENWAVE))
  59. #include <memory>
  60. #endif
  61. // disable the "debug info truncated at 255" warning.
  62. #if defined _MSC_VER
  63. #pragma warning (disable: 4786)
  64. #endif
  65. #if (defined(_MSC_VER) && (_MSC_VER > 1100) && defined(_BASETSD_H_))
  66. #error For VC++ 6.0 or higher you must include hxtypes.h before other windows header files.
  67. #endif
  68. #if defined(_SYMBIAN)
  69. typedef TInt8   INT8;
  70. typedef TUint8  UINT8;
  71. typedef TInt16  INT16;
  72. typedef TUint16 UINT16;
  73. typedef TInt32  INT32;
  74. typedef TUint32 UINT32;
  75. typedef TUint32 UINT; /* Its unclear, but UINT is suppose to be 32 bits. */
  76. typedef TBool   BOOL;
  77. #else
  78. # ifndef _VXWORKS 
  79. #  if defined(QWS) && !defined(QT_CLEAN_NAMESPACE)
  80. #error "You need to define QT_CLEAN_NAMESPACE when using Qt with Helix. If you don't you'll have conflicts with the Helix INT32, UINT32, and UINT definitions"
  81. #  endif
  82.    typedef char                    INT8;   /* signed 8 bit value */
  83.    typedef unsigned char           UINT8;  /* unsigned 8 bit value */
  84.    typedef short int               INT16;  /* signed 16 bit value */
  85.    typedef unsigned short int      UINT16; /* unsigned 16 bit value */
  86. #  if (defined _UNIX && defined _LONG_IS_64)
  87.      typedef int                     INT32;  /* signed 32 bit value */
  88.      typedef unsigned int            UINT32; /* unsigned 32 bit value */
  89.      typedef unsigned int            UINT;
  90. #  elif defined _VXWORKS
  91.        typedef int                     INT32;  /* signed 32 bit value */
  92.        typedef unsigned int            UINT32; /* unsigned 32 bit value */
  93.        typedef unsigned int            UINT;
  94. #  else
  95.      typedef long int                INT32;  /* signed 32 bit value */
  96.      typedef unsigned long int       UINT32; /* unsigned 32 bit value */
  97.      typedef unsigned int            UINT;
  98. #  endif /* (defined _UNIX && (defined _ALPHA || OSF1)) */
  99. #  if (defined _UNIX && defined _IRIX)
  100. #    ifdef __LONG_MAX__
  101. #    undef __LONG_MAX__
  102. #  endif
  103. #  define __LONG_MAX__ 2147483647
  104. # endif
  105. #ifndef BOOL
  106. typedef int     BOOL;                   /* signed int value (0 or 1) */
  107. #endif
  108. #endif /* _VXWORKS */
  109. #endif /* _SYMBIAN */
  110. #define ARE_BOOLS_EQUAL(a,b) (((a) && (b)) || (!(a) && !(b)))
  111. #ifndef HX_BITFIELD
  112. typedef unsigned char HX_BITFIELD;
  113. #endif
  114. typedef INT32   LONG32;                 /* signed 32 bit value */
  115. typedef UINT32  ULONG32;                /* unsigned 32 bit value */
  116. #ifdef _LONG_IS_64
  117. typedef long int                INT64;
  118. typedef unsigned long int       UINT64;
  119. #elif defined(_WINDOWS) || defined(_OPENWAVE_SIMULATOR)
  120. typedef __int64 INT64;
  121. typedef unsigned __int64 UINT64;
  122. #elif defined(_SYMBIAN)
  123. typedef SymInt64                INT64;
  124. typedef SymInt64                UINT64;
  125. #else
  126. typedef long long INT64;
  127. typedef unsigned long long UINT64;
  128. #endif /* _WINDOWS */
  129. /* define the float and double type for all platforms */
  130. #define HXFLOAT  float
  131. #define HXDOUBLE double
  132. /* Some platforms have native 64 bit int types, others don't
  133.  * so, we provide these casting macros that have to be used
  134.  * to cast 64-bit ints to smaller datatypes
  135.  */
  136. #if defined(_SYMBIAN)
  137. #define INT64_TO_ULONG32(a) ((ULONG32)((a).Low()))
  138. #define INT64_TO_UINT32(a)  ((UINT32)((a).Low()))
  139. #define INT64_TO_INT32(a)   ((INT32)((a).Low()))
  140. #define INT64_TO_DOUBLE(a)  ((a).GetTReal())
  141. #define INT64_TO_FLOAT(a)   ((a).GetTReal())
  142. #define UINT32_TO_DOUBLE(a) (SymbianUINT32toDouble(a))
  143. #else
  144. #define INT64_TO_ULONG32(a) ((ULONG32)(a))
  145. #define INT64_TO_UINT32(a)  ((UINT32) (a))
  146. #define INT64_TO_INT32(a)   ((INT32)  (a))
  147. #define INT64_TO_DOUBLE(a)  ((double) (a))
  148. #define INT64_TO_FLOAT(a)   ((float) (a))
  149. #define UINT32_TO_DOUBLE(a) ((double) (a))
  150. #endif
  151. /*
  152.  * Added for ease of reading.
  153.  * Instead of using __MWERKS__ you can  now use _MACINTOSH
  154.  */
  155. #ifdef __MWERKS__
  156.     #if __dest_os==__macos
  157. #ifndef _MACINTOSH
  158. #define _MACINTOSH  1
  159. #ifdef powerc 
  160. #define _MACPPC
  161. #else
  162. #define _MAC68K
  163. #endif
  164. #endif
  165.     #endif
  166. #endif
  167. #if defined(_SYMBIAN)
  168. #define PATH_MAX      KMaxPath
  169. #endif
  170. #ifdef __cplusplus
  171. extern "C" {            /* Assume C declarations for C++ */
  172. #endif  /* __cplusplus */
  173. #define LANGUAGE_CODE "EN"
  174. #ifdef _WIN16
  175. #define MAX_PATH 260
  176. #define PRODUCT_ID "play16"
  177. #define PLUS_PRODUCT_ID "plus16"
  178. #else
  179. #define PRODUCT_ID "play32"
  180. #define PLUS_PRODUCT_ID "plus32"
  181. #endif
  182. // $Private:
  183. #define DEFAULT_CONN_TIMEOUT 20     // in seconds
  184. #define MAX_TIMESTAMP_GAP 0x2fffffff
  185. #if !defined(MAX_UINT32)
  186. #define MAX_UINT32 0xffffffff
  187. #endif /* MAX_UINT32 */
  188. #if defined(_MACINTOSH)
  189. #define kLetInterruptsFinishBeforeQuittingGestalt 'RN$~'
  190. #endif
  191. // $EndPrivate.
  192. #define MAX_DISPLAY_NAME        256
  193. #define HX_INVALID_VALUE (ULONG32)0xffffffff
  194. #define HX_FREE(x) ((x) ? (free (x), (x) = 0) : 0)
  195. #if defined(HELIX_CONFIG_NULL_DELETE_UNSAFE)
  196. #define HX_DELETE(x) ((x) ? (delete (x), (x) = 0) : 0)
  197. #define HX_VECTOR_DELETE(x) ((x) ? (delete [] (x), (x) = 0) : 0)
  198. #else // defined(HELIX_CONFIG_NULL_DELETE_UNSAFE)
  199. #define HX_DELETE(x) (delete (x), (x) = 0)
  200. #define HX_VECTOR_DELETE(x) (delete [] (x), (x) = 0)
  201. #endif // defined(HELIX_CONFIG_NULL_DELETE_UNSAFE)
  202. #define RA_FILE_MAGIC_NUMBER    0x2E7261FDL /* RealAudio File Identifier */
  203. #define RM_FILE_MAGIC_NUMBER    0x2E524D46L /* RealMedia File Identifier */
  204. #define RIFF_FILE_MAGIC_NUMBER  0x52494646L /* RIFF (AVI etc.) File Identifier */
  205. #ifndef _VXWORKS
  206. typedef UINT8   UCHAR;                  /* unsigned 8 bit value */
  207. #endif
  208. typedef INT8    CHAR;                   /* signed 8 bit value */
  209. typedef UINT8   BYTE;
  210. typedef INT32   long32;
  211. typedef UINT32  u_long32;
  212. #ifndef _MACINTOSH
  213. typedef INT8    Int8;
  214. #endif
  215. typedef UINT8   u_Int8;
  216. typedef INT16   Int16;
  217. typedef UINT16  u_Int16;
  218. typedef INT32   Int32;
  219. typedef UINT32  u_Int32;
  220. /*
  221.  * XXXGo
  222.  * depricated...now that we need UFIXED and FIXED, this name is confusing...
  223.  * use the ones below.
  224.  */
  225. typedef ULONG32                 UFIXED32;           /* FIXED point value  */
  226. #define FLOAT_TO_FIXED(x)   ((UFIXED32) ((x) * (1L << 16) + 0.5))
  227. #define FIXED_TO_FLOAT(x)   ((float) ((((float)x)/ (float)(1L <<16))))
  228. /*
  229.  * float and fixed point value conversion
  230.  */
  231. #define HX_FLOAT_TO_UFIXED(x)   ((UFIXED32) ((x) * (1L << 16) + 0.5))
  232. #define HX_UFIXED_TO_FLOAT(x)   ((float) ((((float)x)/ (float)(1L <<16))))
  233. typedef LONG32                  FIXED32;          /* FIXED point value  */
  234. #define HX_FLOAT_TO_FIXED(x)    ((FIXED32) ((x) * (1L << 16) + 0.5))
  235. #define HX_FIXED_TO_FLOAT(x)    ((float) ((((float)x)/ (float)(1L <<16))))
  236. /* 
  237.  * UFIXED32 is a 32 value where the upper 16 bits are the unsigned integer 
  238.  * portion of value, and the lower 16 bits are the fractional part of the 
  239.  * value 
  240.  */
  241. typedef const char*             PCSTR;
  242. /*
  243.  *  FOURCC's are 32bit codes used in Tagged File formats like
  244.  *  the RealMedia file format.
  245.  */
  246. #ifndef FOURCC
  247. typedef UINT32                  FOURCC;         
  248. #endif
  249. #ifndef HX_FOURCC
  250. #define HX_FOURCC( ch0, ch1, ch2, ch3 )                                    
  251.                 ( (UINT32)(UINT8)(ch0) | ( (UINT32)(UINT8)(ch1) << 8 ) |        
  252.                 ( (UINT32)(UINT8)(ch2) << 16 ) | ( (UINT32)(UINT8)(ch3) << 24 ) )
  253. #endif
  254. typedef UINT16 PrefKey;
  255. #ifdef __cplusplus
  256. }
  257. #endif  /* __cplusplus */
  258. #ifdef TRUE
  259. #undef TRUE
  260. #endif
  261. #ifdef FALSE
  262. #undef FALSE
  263. #endif
  264. #ifndef TRUE
  265. #define TRUE                1
  266. #endif
  267. #ifndef FALSE
  268. #define FALSE               0
  269. #endif
  270. #ifndef NULL
  271. #ifdef __cplusplus
  272. #define NULL                0
  273. #else
  274. #define NULL                ((void *)0)
  275. #endif
  276. #endif
  277. #ifndef _WINDOWS /* defined in windef.h on Windows platform */
  278. #ifndef HIWORD
  279. #define HIWORD(x) ((x) >> 16)
  280. #endif
  281. #ifndef LOWORD
  282. #define LOWORD(x) ((x) & 0xffff)
  283. #endif
  284. #endif
  285.  
  286. /* Always use macro versions of these! */
  287. #ifndef max
  288. #define max(a, b)  (((a) > (b)) ? (a) : (b))
  289. #endif
  290. #ifndef min
  291. #define min(a, b)  (((a) < (b)) ? (a) : (b))
  292. #endif
  293. /* Should use capitalized macro versions of these, as the lowercase 
  294. versions conflict with the STL spec */
  295. //get these from sys/param.h to avoid tons of warnings about redefining them:
  296. #ifdef _UNIX
  297. #include <sys/param.h>
  298. #endif
  299. #ifndef MAX
  300. #define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  301. #endif
  302. #ifndef MIN
  303. #define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  304. #endif
  305. /*--------------------------------------------------------------------------
  306. |   ZeroInit - initializes a block of memory with zeros
  307. --------------------------------------------------------------------------*/
  308. #define ZeroInit(pb)    memset((void *)pb,0,sizeof(*(pb))) 
  309. #ifndef __MACTYPES__
  310. typedef unsigned char   Byte;
  311. #endif
  312. /*
  313. /////////////////////////////////////////////////////////////////////////////
  314. // HXEXPORT needed for RA.H and RAGUI.H, should be able to be defined
  315. // and used in cross platform code...
  316. /////////////////////////////////////////////////////////////////////////////
  317. */
  318. #if defined(_WIN32) || defined(_WINDOWS)
  319. #ifdef _WIN32
  320. #define HXEXPORT            __declspec(dllexport) __stdcall
  321. #define HXEXPORT_PTR        __stdcall *
  322. #else /* Windows, but not 32 bit... */
  323. #define HXEXPORT            _pascal __export
  324. #define HXEXPORT_PTR        _pascal *
  325. #define WAVE_FORMAT_PCM     1
  326. #define LPCTSTR LPCSTR
  327. #endif
  328. #else /* Not Windows... */
  329. #define HXEXPORT
  330. #define HXEXPORT_PTR        *
  331. #endif
  332. #if defined(_WIN32) || defined(_WINDOWS) || defined (_MACINTOSH)|| defined (_UNIX)  
  333. typedef void (*RANOTIFYPROC)( void* );
  334. #endif
  335. #if defined(EXPORT_CLASSES) && defined(_WINDOWS)     
  336. #ifdef _WIN32
  337. #define HXEXPORT_CLASS __declspec(dllexport)
  338. #else
  339. #define HXEXPORT_CLASS __export
  340. #endif // _WIN32
  341. #else
  342. #define HXEXPORT_CLASS
  343. #endif // EXPORT_CLASSES 
  344. /*
  345.  *  STDMETHODCALLTYPE
  346.  */
  347. #ifndef STDMETHODCALLTYPE
  348. #if defined(_WIN32) || defined(_MPPC_)
  349. #ifdef _MPPC_
  350. #define STDMETHODCALLTYPE       __cdecl
  351. #else
  352. #define STDMETHODCALLTYPE       __stdcall
  353. #endif
  354. #elif defined(_WIN16)
  355. // XXXTW I made the change below on 5/18/98.  The __export was causing 
  356. //       conflicts with duplicate CHXBuffer methods in being linked into
  357. //       rpupgrd and rpdestpn.  Also, the warning was "export imported".
  358. //       This was fixed by removing the __export.  The __export is also
  359. //       causing the same problem in pndebug methods.
  360. //#define STDMETHODCALLTYPE       __export far _cdecl
  361. #define STDMETHODCALLTYPE       far _cdecl
  362. #else
  363. #define STDMETHODCALLTYPE
  364. #endif
  365. #endif
  366. /*
  367.  *  STDMETHODVCALLTYPE  (V is for variable number of arguments)
  368.  */
  369. #ifndef STDMETHODVCALLTYPE
  370. #if defined(_WINDOWS) || defined(_MPPC_)
  371. #define STDMETHODVCALLTYPE      __cdecl
  372. #else
  373. #define STDMETHODVCALLTYPE
  374. #endif
  375. #endif
  376. /*
  377.  *  STDAPICALLTYPE
  378.  */
  379. #ifndef STDAPICALLTYPE
  380. #if defined(_WIN32) || defined(_MPPC_)
  381. #define STDAPICALLTYPE          __stdcall
  382. #elif defined(_WIN16)
  383. #define STDAPICALLTYPE          __export FAR PASCAL
  384. #else
  385. #define STDAPICALLTYPE
  386. #endif
  387. #endif
  388. /*
  389.  *  STDAPIVCALLTYPE (V is for variable number of arguments)
  390.  */
  391. #ifndef STDAPIVCALLTYPE
  392. #if defined(_WINDOWS) || defined(_MPPC_)
  393. #define STDAPIVCALLTYPE         __cdecl
  394. #else
  395. #define STDAPIVCALLTYPE
  396. #endif
  397. #endif
  398. /*
  399. /////////////////////////////////////////////////////////////////////////////
  400. //
  401. //  Macro:
  402. //
  403. //      HX_GET_MAJOR_VERSION()
  404. //
  405. //  Purpose:
  406. //
  407. //      Returns the Major version portion of the encoded product version 
  408. //      of the RealAudio application interface DLL previously returned from
  409. //      a call to RaGetProductVersion().
  410. //
  411. //  Parameters:
  412. //
  413. //      prodVer
  414. //      The encoded product version of the RealAudio application interface 
  415. //      DLL previously returned from a call to RaGetProductVersion().
  416. //
  417. //  Return:
  418. //
  419. //      The major version number of the RealAudio application interface DLL
  420. //
  421. //
  422. */
  423. #define HX_GET_MAJOR_VERSION(prodVer)   ((prodVer >> 28) & 0xF)
  424. /*
  425. /////////////////////////////////////////////////////////////////////////////
  426. //
  427. //  Macro:
  428. //
  429. //      HX_GET_MINOR_VERSION()
  430. //
  431. //  Purpose:
  432. //
  433. //      Returns the minor version portion of the encoded product version 
  434. //      of the RealAudio application interface DLL previously returned from
  435. //      a call to RaGetProductVersion().
  436. //
  437. //  Parameters:
  438. //
  439. //      prodVer
  440. //      The encoded product version of the RealAudio application interface 
  441. //      DLL previously returned from a call to RaGetProductVersion().
  442. //
  443. //  Return:
  444. //
  445. //      The minor version number of the RealAudio application interface DLL
  446. //
  447. //
  448. */
  449. #define HX_GET_MINOR_VERSION(prodVer)   ((prodVer >> 20) & 0xFF)
  450. /*
  451. /////////////////////////////////////////////////////////////////////////////
  452. //
  453. //  Macro:
  454. //
  455. //      HX_GET_RELEASE_NUMBER()
  456. //
  457. //  Purpose:
  458. //
  459. //      Returns the release number portion of the encoded product version 
  460. //      of the RealAudio application interface DLL previously returned from
  461. //      a call to RaGetProductVersion().
  462. //
  463. //  Parameters:
  464. //
  465. //      prodVer
  466. //      The encoded product version of the RealAudio application interface 
  467. //      DLL previously returned from a call to RaGetProductVersion().
  468. //
  469. //  Return:
  470. //
  471. //      The release number of the RealAudio application interface DLL
  472. //
  473. //
  474. */
  475. #define HX_GET_RELEASE_NUMBER(prodVer)  ((prodVer >> 12) & 0xFF)
  476. /*
  477. /////////////////////////////////////////////////////////////////////////////
  478. //
  479. //  Macro:
  480. //
  481. //      HX_GET_BUILD_NUMBER()
  482. //
  483. //  Purpose:
  484. //
  485. //      Returns the build number portion of the encoded product version 
  486. //      of the RealAudio application interface DLL previously returned from
  487. //      a call to RaGetProductVersion().
  488. //
  489. //  Parameters:
  490. //
  491. //      prodVer
  492. //      The encoded product version of the RealAudio application interface 
  493. //      DLL previously returned from a call to RaGetProductVersion().
  494. //
  495. //  Return:
  496. //
  497. //      The build number of the RealAudio application interface DLL
  498. //
  499. //
  500. */
  501. #define HX_GET_BUILD_NUMBER(prodVer)    (prodVer & 0xFFF)
  502. /*
  503. /////////////////////////////////////////////////////////////////////////////
  504. //
  505. //  Macro:
  506. //
  507. //      HX_ENCODE_PROD_VERSION()
  508. //
  509. //  Purpose:
  510. //
  511. //      Encodes a major version, minor version, release number, and build
  512. //      number into a product version for testing against the product version
  513. //      of the RealAudio application interface DLL returned from a call to 
  514. //      RaGetProductVersion().
  515. //
  516. //  Parameters:
  517. //
  518. //      major
  519. //      The major version number to encode.
  520. //
  521. //      mimor
  522. //      The minor version number to encode.
  523. //
  524. //      release
  525. //      The release number to encode.
  526. //
  527. //      build
  528. //      The build number to encode.
  529. //
  530. //  Return:
  531. //
  532. //      The encoded product version.
  533. //
  534. //  NOTES:
  535. //      
  536. //      Macintosh DEVELOPERS especially, make sure when using the HX_ENCODE_PROD_VERSION
  537. //      that you are passing a ULONG32 or equivalent for each of the parameters. 
  538. //      By default a number passed in as a constant is a short unless it requires more room,
  539. //      so designate the constant as a long by appending a L to the end of it.  
  540. //      Example:
  541. //          WORKS:
  542. //              HX_ENCODE_VERSION(2L,1L,1L,0L);
  543. //
  544. //          DOES NOT WORK:
  545. //              HX_ENCODE_VERSION(2,1,1,0);
  546. //
  547. */
  548. #define HX_ENCODE_PROD_VERSION(major,minor,release,build)   
  549.             ((ULONG32)((ULONG32)major << 28) | ((ULONG32)minor << 20) | 
  550.             ((ULONG32)release << 12) | (ULONG32)build)
  551. #define HX_ENCODE_ADD_PRIVATE_FIELD(ulversion,ulprivate) 
  552. ((ULONG32)((ULONG32)(ulversion) & (UINT32)0xFFFFFF00) | (ULONG32)(ulprivate) )
  553. #define HX_EXTRACT_PRIVATE_FIELD(ulversion)(ulversion & (UINT32)0xFF)
  554. #define HX_EXTRACT_MAJOR_VERSION(ulversion) ((ulversion)>>28)
  555. #define HX_EXTRACT_MINOR_VERSION(ulversion) (((ulversion)>>20) & (UINT32)0xFF)
  556. #ifdef _AIX
  557.     typedef int                 tv_sec_t;
  558.     typedef int                 tv_usec_t;
  559. #elif (defined _HPUX)
  560.     typedef UINT32              tv_sec_t;
  561.     typedef INT32               tv_usec_t;
  562. #else
  563.     typedef INT32               tv_sec_t;
  564.     typedef INT32               tv_usec_t;
  565. #endif /* _AIX */
  566. #ifndef VOLATILE
  567. #define VOLATILE volatile
  568. #endif
  569. #ifdef __GNUC__
  570. #define PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME friend class SilenceGCCWarnings;
  571. #else
  572. #define PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME
  573. #endif
  574. typedef ULONG32 HXXRESOURCE;
  575. typedef ULONG32 HXXHANDLE;
  576. typedef ULONG32 HXXIMAGE;
  577. // Macro which indicates that a particular variable is unused. Use this to
  578. // avoid compiler warnings.
  579. #define UNUSED(x)
  580. /*
  581.  * For VC++ 6.0 and higher we need to include this substitute header file
  582.  * in place of the standard header file basetsd.h, since this standard 
  583.  * header file conflicts with our definitions.
  584.  */
  585. #if defined(_MSC_VER) && (_MSC_VER > 1100) && !defined(_SYMBIAN)
  586. #include "hxbastsd.h"
  587. #ifdef WIN32_PLATFORM_PSPC
  588. #define _TYPES_H_
  589. #endif
  590. #endif
  591. #ifdef _VXWORKS
  592. /* throw in some defines for VXWORKS */
  593. #define MAXPATHLEN 255
  594. #endif
  595. #ifdef _MACINTOSH
  596. // xxxbobclark with CWPro 7, there is a code generation bug in the long long
  597. // casting code. It can be avoided by first casting to an unsigned long long.
  598. // This is supposedly fixed in the upcoming (as of this writing) CWPro 8, but
  599. // for now we're setting up the casting using a macro to change it easily.
  600. #define CAST_TO_INT64 (INT64)(UINT64)
  601. #else
  602. #define CAST_TO_INT64 (INT64)
  603. #endif
  604. #if defined _LONG_IS_64 && (defined _OSF1 || defined _SOLARIS || defined _HPUX)
  605. typedef unsigned long PTR_INT;
  606. #else
  607. typedef unsigned int PTR_INT;
  608. #endif
  609. /*
  610. /////////////////////////////////////////////////////////////////////////////
  611. //
  612. //  Macro:
  613. //
  614. //      DEFINE_CONSTANT_STRING()
  615. //
  616. //  Purpose:
  617. //
  618. //      declare a constant string as "const char *" or "extern const char *" depending on whether or
  619. // not INITGUID is defined. This allows constant strings to be safely added
  620. // to a header file without risk of multiply defined symbols if that header is included in a DLL
  621. // and in a library that the DLL links to. While INITGUID doesn't have anything to do with constant
  622. // strings, it is a great constant to switch off of because it is already used to denote when a GUID
  623. // should be defined as external.
  624. //
  625. //  Parameters:
  626. //
  627. //      name
  628. //      The name of the variable to which the constant string will be assigned
  629. //
  630. //      string
  631. //      the constant string (in quotes).
  632. //
  633. //
  634. //
  635. //  NOTES:
  636. //      There is currently no way to use DEFINE_CONSTANT_STRING() to declare an "extern const char*" when
  637. // INITGUID is defined. This functionality could be added, but until there is a use case, it would just
  638. // make things more complicated.
  639. //
  640. */
  641. #if defined (INITGUID)
  642. #define DEFINE_CONSTANT_STRING(name, string) 
  643.     const char *name = string;
  644. #else
  645. #define DEFINE_CONSTANT_STRING(name, string) 
  646.     extern const char* name;
  647. #endif
  648. #endif /* _HXTYPES_H_ */