JBoss Data Grid HotRod C++ Client  6.6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
defs.h
Go to the documentation of this file.
1 #ifndef ISPN_HOTROD_DEFS_H
2 #define ISPN_HOTROD_DEFS_H
3 
5 
6 // Platform dependent shared_ptr definition. Todo: more platforms, more elegance.
7 #if (defined (__GNUC__) && __GNUC__ >= 4 ) || defined(SWIG) || defined(SWIGMAC)
8  #include <tr1/memory>
9  #define HR_SHARED_PTR std::tr1::shared_ptr
10 #elif defined (_MSC_VER) || defined(SWIGWIN)
11  // TODO: handle multiple VS versions
12  #include <memory>
13  #define HR_SHARED_PTR std::tr1::shared_ptr
14 #endif
15 
16 /*
17  * Handle special cases for stdint.h and the definition for ssize_t.
18  * Third party libraries (e.g. Boost) may provide competing solutions.
19  *
20  * The effects of this include file may be controlled by overrides:
21  * PN_DEFINE_STDINT/PN_NODEFINE_STDINT : turn on/off definition of int64_t etc.
22  * PN_DEFINE_SSIZE_T/PN_NODEFINE_SSIZE_T : turn on/off definition of ssize_t
23  * PN_INCLUDE_STDINT/PN_NOINCLUDE_STDINT : include (or not) stdint.h
24  */
25 
26 // Honor positive overrides
27 #if defined(PN_DEFINE_STDINT)
28 #define PNI_DEFINE_STDINT
29 #endif
30 #if defined(PN_INCLUDE_STDINT)
31 #define PNI_INCLUDE_STDINT)
32 #endif
33 #if defined(PN_DEFINE_SSIZE_T)
34 #define PNI_DEFINE_SSIZE_T
35 #endif
36 
37 // Determinine default action
38 #ifndef _MSC_VER
39 // Not Windows and not using Visual Studio
40 #ifndef PNI_INCLUDE_STDINT
41 #define PNI_INCLUDE_STDINT
42 #endif
43 #else
44 // all versions of Visual Studio
45 #ifndef PNI_DEFINE_SSIZE_T
46 // ssie_t def is needed, unless third party definition interferes, e.g. python/swig
47 #ifndef Py_CONFIG_H
48 #define PNI_DEFINE_SSIZE_T
49 #endif
50 #endif
51 
52 #if (_MSC_VER < 1600)
53 // VS 2008 and earlier
54 #ifndef PNI_DEFINE_STDINT
55 #define PNI_DEFINE_STDINT
56 #endif
57 #else
58 // VS 2010 and newer
59 #ifndef PNI_INCLUDE_STDINT
60 #define PNI_INCLUDE_STDINT
61 #endif
62 
63 #endif // (_MSC_VER < 1600)
64 #endif //_MSC_VER
65 
66 // Honor negative overrides
67 #ifdef PN_NODEFINE_SSIZE_T
68 #undef PNI_DEFINE_SSIZE_T
69 #endif
70 #ifdef PN_NODEFINE_STDINT
71 #undef PNI_DEFINE_STDINT
72 #endif
73 #ifdef PN_NOINCLUDE_STDINT
74 #undef PNI_INCLUDE_STDINT
75 #endif
76 
77 #ifdef PNI_INCLUDE_STDINT
78 #include <stdint.h>
79 #endif
80 
81 #ifdef PNI_DEFINE_SSIZE_T
82 #ifdef _MSC_VER
83 #include <BaseTsd.h>
84 typedef SSIZE_T ssize_t;
85 #else
86 #error ssize_t definition not kown
87 #endif
88 #endif // PNI_DEFINE_SSIZE_T
89 
90 #ifdef PNI_DEFINE_STDINT
91 #ifdef _MSC_VER
92 
93 typedef signed __int8 int8_t;
94 typedef signed __int16 int16_t;
95 typedef signed __int32 int32_t;
96 typedef signed __int64 int64_t;
97 
98 typedef unsigned __int8 uint8_t;
99 typedef unsigned __int16 uint16_t;
100 typedef unsigned __int32 uint32_t;
101 typedef unsigned __int64 uint64_t;
102 
103 #else // _MSC_VER
104 #error stdint.h definitions not kown
105 #endif
106 #endif // PNI_DEFINE_SSIZE_T
107 
108 #ifdef _MSC_VER
109 # define strtoull _strtoui64
110 #endif
111 
112 // warnings
113 #ifndef _MSC_VER
114 # define __pragma(...)
115 #endif
116 
117 #endif /* ISPN_HOTROD_DEFS_H */