isotree 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -1
  3. data/LICENSE.txt +2 -2
  4. data/README.md +32 -14
  5. data/ext/isotree/ext.cpp +144 -31
  6. data/ext/isotree/extconf.rb +7 -7
  7. data/lib/isotree/isolation_forest.rb +110 -30
  8. data/lib/isotree/version.rb +1 -1
  9. data/vendor/isotree/LICENSE +1 -1
  10. data/vendor/isotree/README.md +165 -27
  11. data/vendor/isotree/include/isotree.hpp +2111 -0
  12. data/vendor/isotree/include/isotree_oop.hpp +394 -0
  13. data/vendor/isotree/inst/COPYRIGHTS +62 -0
  14. data/vendor/isotree/src/RcppExports.cpp +525 -52
  15. data/vendor/isotree/src/Rwrapper.cpp +1931 -268
  16. data/vendor/isotree/src/c_interface.cpp +953 -0
  17. data/vendor/isotree/src/crit.hpp +4232 -0
  18. data/vendor/isotree/src/dist.hpp +1886 -0
  19. data/vendor/isotree/src/exp_depth_table.hpp +134 -0
  20. data/vendor/isotree/src/extended.hpp +1444 -0
  21. data/vendor/isotree/src/external_facing_generic.hpp +399 -0
  22. data/vendor/isotree/src/fit_model.hpp +2401 -0
  23. data/vendor/isotree/src/{dealloc.cpp → headers_joined.hpp} +38 -22
  24. data/vendor/isotree/src/helpers_iforest.hpp +813 -0
  25. data/vendor/isotree/src/{impute.cpp → impute.hpp} +353 -122
  26. data/vendor/isotree/src/indexer.cpp +515 -0
  27. data/vendor/isotree/src/instantiate_template_headers.cpp +118 -0
  28. data/vendor/isotree/src/instantiate_template_headers.hpp +240 -0
  29. data/vendor/isotree/src/isoforest.hpp +1659 -0
  30. data/vendor/isotree/src/isotree.hpp +1804 -392
  31. data/vendor/isotree/src/isotree_exportable.hpp +99 -0
  32. data/vendor/isotree/src/merge_models.cpp +159 -16
  33. data/vendor/isotree/src/mult.hpp +1321 -0
  34. data/vendor/isotree/src/oop_interface.cpp +842 -0
  35. data/vendor/isotree/src/oop_interface.hpp +278 -0
  36. data/vendor/isotree/src/other_helpers.hpp +219 -0
  37. data/vendor/isotree/src/predict.hpp +1932 -0
  38. data/vendor/isotree/src/python_helpers.hpp +134 -0
  39. data/vendor/isotree/src/ref_indexer.hpp +154 -0
  40. data/vendor/isotree/src/robinmap/LICENSE +21 -0
  41. data/vendor/isotree/src/robinmap/README.md +483 -0
  42. data/vendor/isotree/src/robinmap/include/tsl/robin_growth_policy.h +406 -0
  43. data/vendor/isotree/src/robinmap/include/tsl/robin_hash.h +1620 -0
  44. data/vendor/isotree/src/robinmap/include/tsl/robin_map.h +807 -0
  45. data/vendor/isotree/src/robinmap/include/tsl/robin_set.h +660 -0
  46. data/vendor/isotree/src/serialize.cpp +4300 -139
  47. data/vendor/isotree/src/sql.cpp +141 -59
  48. data/vendor/isotree/src/subset_models.cpp +174 -0
  49. data/vendor/isotree/src/utils.hpp +3808 -0
  50. data/vendor/isotree/src/xoshiro.hpp +467 -0
  51. data/vendor/isotree/src/ziggurat.hpp +405 -0
  52. metadata +38 -104
  53. data/vendor/cereal/LICENSE +0 -24
  54. data/vendor/cereal/README.md +0 -85
  55. data/vendor/cereal/include/cereal/access.hpp +0 -351
  56. data/vendor/cereal/include/cereal/archives/adapters.hpp +0 -163
  57. data/vendor/cereal/include/cereal/archives/binary.hpp +0 -169
  58. data/vendor/cereal/include/cereal/archives/json.hpp +0 -1019
  59. data/vendor/cereal/include/cereal/archives/portable_binary.hpp +0 -334
  60. data/vendor/cereal/include/cereal/archives/xml.hpp +0 -956
  61. data/vendor/cereal/include/cereal/cereal.hpp +0 -1089
  62. data/vendor/cereal/include/cereal/details/helpers.hpp +0 -422
  63. data/vendor/cereal/include/cereal/details/polymorphic_impl.hpp +0 -796
  64. data/vendor/cereal/include/cereal/details/polymorphic_impl_fwd.hpp +0 -65
  65. data/vendor/cereal/include/cereal/details/static_object.hpp +0 -127
  66. data/vendor/cereal/include/cereal/details/traits.hpp +0 -1411
  67. data/vendor/cereal/include/cereal/details/util.hpp +0 -84
  68. data/vendor/cereal/include/cereal/external/base64.hpp +0 -134
  69. data/vendor/cereal/include/cereal/external/rapidjson/allocators.h +0 -284
  70. data/vendor/cereal/include/cereal/external/rapidjson/cursorstreamwrapper.h +0 -78
  71. data/vendor/cereal/include/cereal/external/rapidjson/document.h +0 -2652
  72. data/vendor/cereal/include/cereal/external/rapidjson/encodedstream.h +0 -299
  73. data/vendor/cereal/include/cereal/external/rapidjson/encodings.h +0 -716
  74. data/vendor/cereal/include/cereal/external/rapidjson/error/en.h +0 -74
  75. data/vendor/cereal/include/cereal/external/rapidjson/error/error.h +0 -161
  76. data/vendor/cereal/include/cereal/external/rapidjson/filereadstream.h +0 -99
  77. data/vendor/cereal/include/cereal/external/rapidjson/filewritestream.h +0 -104
  78. data/vendor/cereal/include/cereal/external/rapidjson/fwd.h +0 -151
  79. data/vendor/cereal/include/cereal/external/rapidjson/internal/biginteger.h +0 -290
  80. data/vendor/cereal/include/cereal/external/rapidjson/internal/diyfp.h +0 -271
  81. data/vendor/cereal/include/cereal/external/rapidjson/internal/dtoa.h +0 -245
  82. data/vendor/cereal/include/cereal/external/rapidjson/internal/ieee754.h +0 -78
  83. data/vendor/cereal/include/cereal/external/rapidjson/internal/itoa.h +0 -308
  84. data/vendor/cereal/include/cereal/external/rapidjson/internal/meta.h +0 -186
  85. data/vendor/cereal/include/cereal/external/rapidjson/internal/pow10.h +0 -55
  86. data/vendor/cereal/include/cereal/external/rapidjson/internal/regex.h +0 -740
  87. data/vendor/cereal/include/cereal/external/rapidjson/internal/stack.h +0 -232
  88. data/vendor/cereal/include/cereal/external/rapidjson/internal/strfunc.h +0 -69
  89. data/vendor/cereal/include/cereal/external/rapidjson/internal/strtod.h +0 -290
  90. data/vendor/cereal/include/cereal/external/rapidjson/internal/swap.h +0 -46
  91. data/vendor/cereal/include/cereal/external/rapidjson/istreamwrapper.h +0 -128
  92. data/vendor/cereal/include/cereal/external/rapidjson/memorybuffer.h +0 -70
  93. data/vendor/cereal/include/cereal/external/rapidjson/memorystream.h +0 -71
  94. data/vendor/cereal/include/cereal/external/rapidjson/msinttypes/inttypes.h +0 -316
  95. data/vendor/cereal/include/cereal/external/rapidjson/msinttypes/stdint.h +0 -300
  96. data/vendor/cereal/include/cereal/external/rapidjson/ostreamwrapper.h +0 -81
  97. data/vendor/cereal/include/cereal/external/rapidjson/pointer.h +0 -1414
  98. data/vendor/cereal/include/cereal/external/rapidjson/prettywriter.h +0 -277
  99. data/vendor/cereal/include/cereal/external/rapidjson/rapidjson.h +0 -656
  100. data/vendor/cereal/include/cereal/external/rapidjson/reader.h +0 -2230
  101. data/vendor/cereal/include/cereal/external/rapidjson/schema.h +0 -2497
  102. data/vendor/cereal/include/cereal/external/rapidjson/stream.h +0 -223
  103. data/vendor/cereal/include/cereal/external/rapidjson/stringbuffer.h +0 -121
  104. data/vendor/cereal/include/cereal/external/rapidjson/writer.h +0 -709
  105. data/vendor/cereal/include/cereal/external/rapidxml/license.txt +0 -52
  106. data/vendor/cereal/include/cereal/external/rapidxml/manual.html +0 -406
  107. data/vendor/cereal/include/cereal/external/rapidxml/rapidxml.hpp +0 -2624
  108. data/vendor/cereal/include/cereal/external/rapidxml/rapidxml_iterators.hpp +0 -175
  109. data/vendor/cereal/include/cereal/external/rapidxml/rapidxml_print.hpp +0 -428
  110. data/vendor/cereal/include/cereal/external/rapidxml/rapidxml_utils.hpp +0 -123
  111. data/vendor/cereal/include/cereal/macros.hpp +0 -154
  112. data/vendor/cereal/include/cereal/specialize.hpp +0 -139
  113. data/vendor/cereal/include/cereal/types/array.hpp +0 -79
  114. data/vendor/cereal/include/cereal/types/atomic.hpp +0 -55
  115. data/vendor/cereal/include/cereal/types/base_class.hpp +0 -203
  116. data/vendor/cereal/include/cereal/types/bitset.hpp +0 -176
  117. data/vendor/cereal/include/cereal/types/boost_variant.hpp +0 -164
  118. data/vendor/cereal/include/cereal/types/chrono.hpp +0 -72
  119. data/vendor/cereal/include/cereal/types/common.hpp +0 -129
  120. data/vendor/cereal/include/cereal/types/complex.hpp +0 -56
  121. data/vendor/cereal/include/cereal/types/concepts/pair_associative_container.hpp +0 -73
  122. data/vendor/cereal/include/cereal/types/deque.hpp +0 -62
  123. data/vendor/cereal/include/cereal/types/forward_list.hpp +0 -68
  124. data/vendor/cereal/include/cereal/types/functional.hpp +0 -43
  125. data/vendor/cereal/include/cereal/types/list.hpp +0 -62
  126. data/vendor/cereal/include/cereal/types/map.hpp +0 -36
  127. data/vendor/cereal/include/cereal/types/memory.hpp +0 -425
  128. data/vendor/cereal/include/cereal/types/optional.hpp +0 -66
  129. data/vendor/cereal/include/cereal/types/polymorphic.hpp +0 -483
  130. data/vendor/cereal/include/cereal/types/queue.hpp +0 -132
  131. data/vendor/cereal/include/cereal/types/set.hpp +0 -103
  132. data/vendor/cereal/include/cereal/types/stack.hpp +0 -76
  133. data/vendor/cereal/include/cereal/types/string.hpp +0 -61
  134. data/vendor/cereal/include/cereal/types/tuple.hpp +0 -123
  135. data/vendor/cereal/include/cereal/types/unordered_map.hpp +0 -36
  136. data/vendor/cereal/include/cereal/types/unordered_set.hpp +0 -99
  137. data/vendor/cereal/include/cereal/types/utility.hpp +0 -47
  138. data/vendor/cereal/include/cereal/types/valarray.hpp +0 -89
  139. data/vendor/cereal/include/cereal/types/variant.hpp +0 -109
  140. data/vendor/cereal/include/cereal/types/vector.hpp +0 -112
  141. data/vendor/cereal/include/cereal/version.hpp +0 -52
  142. data/vendor/isotree/src/Makevars +0 -4
  143. data/vendor/isotree/src/crit.cpp +0 -912
  144. data/vendor/isotree/src/dist.cpp +0 -749
  145. data/vendor/isotree/src/extended.cpp +0 -790
  146. data/vendor/isotree/src/fit_model.cpp +0 -1090
  147. data/vendor/isotree/src/helpers_iforest.cpp +0 -324
  148. data/vendor/isotree/src/isoforest.cpp +0 -771
  149. data/vendor/isotree/src/mult.cpp +0 -607
  150. data/vendor/isotree/src/predict.cpp +0 -853
  151. data/vendor/isotree/src/utils.cpp +0 -1566
@@ -1,656 +0,0 @@
1
- // Tencent is pleased to support the open source community by making RapidJSON available.
2
- //
3
- // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
- //
5
- // Licensed under the MIT License (the "License"); you may not use this file except
6
- // in compliance with the License. You may obtain a copy of the License at
7
- //
8
- // http://opensource.org/licenses/MIT
9
- //
10
- // Unless required by applicable law or agreed to in writing, software distributed
11
- // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
- // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
- // specific language governing permissions and limitations under the License.
14
-
15
- #ifndef CEREAL_RAPIDJSON_CEREAL_RAPIDJSON_H_
16
- #define CEREAL_RAPIDJSON_CEREAL_RAPIDJSON_H_
17
-
18
- /*!\file rapidjson.h
19
- \brief common definitions and configuration
20
-
21
- \see CEREAL_RAPIDJSON_CONFIG
22
- */
23
-
24
- /*! \defgroup CEREAL_RAPIDJSON_CONFIG RapidJSON configuration
25
- \brief Configuration macros for library features
26
-
27
- Some RapidJSON features are configurable to adapt the library to a wide
28
- variety of platforms, environments and usage scenarios. Most of the
29
- features can be configured in terms of overridden or predefined
30
- preprocessor macros at compile-time.
31
-
32
- Some additional customization is available in the \ref CEREAL_RAPIDJSON_ERRORS APIs.
33
-
34
- \note These macros should be given on the compiler command-line
35
- (where applicable) to avoid inconsistent values when compiling
36
- different translation units of a single application.
37
- */
38
-
39
- #include <cstdlib> // malloc(), realloc(), free(), size_t
40
- #include <cstring> // memset(), memcpy(), memmove(), memcmp()
41
-
42
- ///////////////////////////////////////////////////////////////////////////////
43
- // CEREAL_RAPIDJSON_VERSION_STRING
44
- //
45
- // ALWAYS synchronize the following 3 macros with corresponding variables in /CMakeLists.txt.
46
- //
47
-
48
- //!@cond CEREAL_RAPIDJSON_HIDDEN_FROM_DOXYGEN
49
- // token stringification
50
- #define CEREAL_RAPIDJSON_STRINGIFY(x) CEREAL_RAPIDJSON_DO_STRINGIFY(x)
51
- #define CEREAL_RAPIDJSON_DO_STRINGIFY(x) #x
52
-
53
- // token concatenation
54
- #define CEREAL_RAPIDJSON_JOIN(X, Y) CEREAL_RAPIDJSON_DO_JOIN(X, Y)
55
- #define CEREAL_RAPIDJSON_DO_JOIN(X, Y) CEREAL_RAPIDJSON_DO_JOIN2(X, Y)
56
- #define CEREAL_RAPIDJSON_DO_JOIN2(X, Y) X##Y
57
- //!@endcond
58
-
59
- /*! \def CEREAL_RAPIDJSON_MAJOR_VERSION
60
- \ingroup CEREAL_RAPIDJSON_CONFIG
61
- \brief Major version of RapidJSON in integer.
62
- */
63
- /*! \def CEREAL_RAPIDJSON_MINOR_VERSION
64
- \ingroup CEREAL_RAPIDJSON_CONFIG
65
- \brief Minor version of RapidJSON in integer.
66
- */
67
- /*! \def CEREAL_RAPIDJSON_PATCH_VERSION
68
- \ingroup CEREAL_RAPIDJSON_CONFIG
69
- \brief Patch version of RapidJSON in integer.
70
- */
71
- /*! \def CEREAL_RAPIDJSON_VERSION_STRING
72
- \ingroup CEREAL_RAPIDJSON_CONFIG
73
- \brief Version of RapidJSON in "<major>.<minor>.<patch>" string format.
74
- */
75
- #define CEREAL_RAPIDJSON_MAJOR_VERSION 1
76
- #define CEREAL_RAPIDJSON_MINOR_VERSION 1
77
- #define CEREAL_RAPIDJSON_PATCH_VERSION 0
78
- #define CEREAL_RAPIDJSON_VERSION_STRING \
79
- CEREAL_RAPIDJSON_STRINGIFY(CEREAL_RAPIDJSON_MAJOR_VERSION.CEREAL_RAPIDJSON_MINOR_VERSION.CEREAL_RAPIDJSON_PATCH_VERSION)
80
-
81
- ///////////////////////////////////////////////////////////////////////////////
82
- // CEREAL_RAPIDJSON_NAMESPACE_(BEGIN|END)
83
- /*! \def CEREAL_RAPIDJSON_NAMESPACE
84
- \ingroup CEREAL_RAPIDJSON_CONFIG
85
- \brief provide custom rapidjson namespace
86
-
87
- In order to avoid symbol clashes and/or "One Definition Rule" errors
88
- between multiple inclusions of (different versions of) RapidJSON in
89
- a single binary, users can customize the name of the main RapidJSON
90
- namespace.
91
-
92
- In case of a single nesting level, defining \c CEREAL_RAPIDJSON_NAMESPACE
93
- to a custom name (e.g. \c MyRapidJSON) is sufficient. If multiple
94
- levels are needed, both \ref CEREAL_RAPIDJSON_NAMESPACE_BEGIN and \ref
95
- CEREAL_RAPIDJSON_NAMESPACE_END need to be defined as well:
96
-
97
- \code
98
- // in some .cpp file
99
- #define CEREAL_RAPIDJSON_NAMESPACE my::rapidjson
100
- #define CEREAL_RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson {
101
- #define CEREAL_RAPIDJSON_NAMESPACE_END } }
102
- #include "rapidjson/..."
103
- \endcode
104
-
105
- \see rapidjson
106
- */
107
- /*! \def CEREAL_RAPIDJSON_NAMESPACE_BEGIN
108
- \ingroup CEREAL_RAPIDJSON_CONFIG
109
- \brief provide custom rapidjson namespace (opening expression)
110
- \see CEREAL_RAPIDJSON_NAMESPACE
111
- */
112
- /*! \def CEREAL_RAPIDJSON_NAMESPACE_END
113
- \ingroup CEREAL_RAPIDJSON_CONFIG
114
- \brief provide custom rapidjson namespace (closing expression)
115
- \see CEREAL_RAPIDJSON_NAMESPACE
116
- */
117
- #ifndef CEREAL_RAPIDJSON_NAMESPACE
118
- #define CEREAL_RAPIDJSON_NAMESPACE rapidjson
119
- #endif
120
- #ifndef CEREAL_RAPIDJSON_NAMESPACE_BEGIN
121
- #define CEREAL_RAPIDJSON_NAMESPACE_BEGIN namespace CEREAL_RAPIDJSON_NAMESPACE {
122
- #endif
123
- #ifndef CEREAL_RAPIDJSON_NAMESPACE_END
124
- #define CEREAL_RAPIDJSON_NAMESPACE_END }
125
- #endif
126
-
127
- ///////////////////////////////////////////////////////////////////////////////
128
- // CEREAL_RAPIDJSON_HAS_STDSTRING
129
-
130
- #ifndef CEREAL_RAPIDJSON_HAS_STDSTRING
131
- #ifdef CEREAL_RAPIDJSON_DOXYGEN_RUNNING
132
- #define CEREAL_RAPIDJSON_HAS_STDSTRING 1 // force generation of documentation
133
- #else
134
- #define CEREAL_RAPIDJSON_HAS_STDSTRING 0 // no std::string support by default
135
- #endif
136
- /*! \def CEREAL_RAPIDJSON_HAS_STDSTRING
137
- \ingroup CEREAL_RAPIDJSON_CONFIG
138
- \brief Enable RapidJSON support for \c std::string
139
-
140
- By defining this preprocessor symbol to \c 1, several convenience functions for using
141
- \ref rapidjson::GenericValue with \c std::string are enabled, especially
142
- for construction and comparison.
143
-
144
- \hideinitializer
145
- */
146
- #endif // !defined(CEREAL_RAPIDJSON_HAS_STDSTRING)
147
-
148
- #if CEREAL_RAPIDJSON_HAS_STDSTRING
149
- #include <string>
150
- #endif // CEREAL_RAPIDJSON_HAS_STDSTRING
151
-
152
- ///////////////////////////////////////////////////////////////////////////////
153
- // CEREAL_RAPIDJSON_NO_INT64DEFINE
154
-
155
- /*! \def CEREAL_RAPIDJSON_NO_INT64DEFINE
156
- \ingroup CEREAL_RAPIDJSON_CONFIG
157
- \brief Use external 64-bit integer types.
158
-
159
- RapidJSON requires the 64-bit integer types \c int64_t and \c uint64_t types
160
- to be available at global scope.
161
-
162
- If users have their own definition, define CEREAL_RAPIDJSON_NO_INT64DEFINE to
163
- prevent RapidJSON from defining its own types.
164
- */
165
- #ifndef CEREAL_RAPIDJSON_NO_INT64DEFINE
166
- //!@cond CEREAL_RAPIDJSON_HIDDEN_FROM_DOXYGEN
167
- #if defined(_MSC_VER) && (_MSC_VER < 1800) // Visual Studio 2013
168
- #include "msinttypes/stdint.h"
169
- #include "msinttypes/inttypes.h"
170
- #else
171
- // Other compilers should have this.
172
- #include <stdint.h>
173
- #include <inttypes.h>
174
- #endif
175
- //!@endcond
176
- #ifdef CEREAL_RAPIDJSON_DOXYGEN_RUNNING
177
- #define CEREAL_RAPIDJSON_NO_INT64DEFINE
178
- #endif
179
- #endif // CEREAL_RAPIDJSON_NO_INT64TYPEDEF
180
-
181
- ///////////////////////////////////////////////////////////////////////////////
182
- // CEREAL_RAPIDJSON_FORCEINLINE
183
-
184
- #ifndef CEREAL_RAPIDJSON_FORCEINLINE
185
- //!@cond CEREAL_RAPIDJSON_HIDDEN_FROM_DOXYGEN
186
- #if defined(_MSC_VER) && defined(NDEBUG)
187
- #define CEREAL_RAPIDJSON_FORCEINLINE __forceinline
188
- #elif defined(__GNUC__) && __GNUC__ >= 4 && defined(NDEBUG)
189
- #define CEREAL_RAPIDJSON_FORCEINLINE __attribute__((always_inline))
190
- #else
191
- #define CEREAL_RAPIDJSON_FORCEINLINE
192
- #endif
193
- //!@endcond
194
- #endif // CEREAL_RAPIDJSON_FORCEINLINE
195
-
196
- ///////////////////////////////////////////////////////////////////////////////
197
- // CEREAL_RAPIDJSON_ENDIAN
198
- #define CEREAL_RAPIDJSON_LITTLEENDIAN 0 //!< Little endian machine
199
- #define CEREAL_RAPIDJSON_BIGENDIAN 1 //!< Big endian machine
200
-
201
- //! Endianness of the machine.
202
- /*!
203
- \def CEREAL_RAPIDJSON_ENDIAN
204
- \ingroup CEREAL_RAPIDJSON_CONFIG
205
-
206
- GCC 4.6 provided macro for detecting endianness of the target machine. But other
207
- compilers may not have this. User can define CEREAL_RAPIDJSON_ENDIAN to either
208
- \ref CEREAL_RAPIDJSON_LITTLEENDIAN or \ref CEREAL_RAPIDJSON_BIGENDIAN.
209
-
210
- Default detection implemented with reference to
211
- \li https://gcc.gnu.org/onlinedocs/gcc-4.6.0/cpp/Common-Predefined-Macros.html
212
- \li http://www.boost.org/doc/libs/1_42_0/boost/detail/endian.hpp
213
- */
214
- #ifndef CEREAL_RAPIDJSON_ENDIAN
215
- // Detect with GCC 4.6's macro
216
- # ifdef __BYTE_ORDER__
217
- # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
218
- # define CEREAL_RAPIDJSON_ENDIAN CEREAL_RAPIDJSON_LITTLEENDIAN
219
- # elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
220
- # define CEREAL_RAPIDJSON_ENDIAN CEREAL_RAPIDJSON_BIGENDIAN
221
- # else
222
- # error Unknown machine endianness detected. User needs to define CEREAL_RAPIDJSON_ENDIAN.
223
- # endif // __BYTE_ORDER__
224
- // Detect with GLIBC's endian.h
225
- # elif defined(__GLIBC__)
226
- # include <endian.h>
227
- # if (__BYTE_ORDER == __LITTLE_ENDIAN)
228
- # define CEREAL_RAPIDJSON_ENDIAN CEREAL_RAPIDJSON_LITTLEENDIAN
229
- # elif (__BYTE_ORDER == __BIG_ENDIAN)
230
- # define CEREAL_RAPIDJSON_ENDIAN CEREAL_RAPIDJSON_BIGENDIAN
231
- # else
232
- # error Unknown machine endianness detected. User needs to define CEREAL_RAPIDJSON_ENDIAN.
233
- # endif // __GLIBC__
234
- // Detect with _LITTLE_ENDIAN and _BIG_ENDIAN macro
235
- # elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
236
- # define CEREAL_RAPIDJSON_ENDIAN CEREAL_RAPIDJSON_LITTLEENDIAN
237
- # elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
238
- # define CEREAL_RAPIDJSON_ENDIAN CEREAL_RAPIDJSON_BIGENDIAN
239
- // Detect with architecture macros
240
- # elif defined(__sparc) || defined(__sparc__) || defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || defined(__hpux) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) || defined(__s390__)
241
- # define CEREAL_RAPIDJSON_ENDIAN CEREAL_RAPIDJSON_BIGENDIAN
242
- # elif defined(__i386__) || defined(__alpha__) || defined(__ia64) || defined(__ia64__) || defined(_M_IX86) || defined(_M_IA64) || defined(_M_ALPHA) || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || defined(__bfin__)
243
- # define CEREAL_RAPIDJSON_ENDIAN CEREAL_RAPIDJSON_LITTLEENDIAN
244
- # elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64))
245
- # define CEREAL_RAPIDJSON_ENDIAN CEREAL_RAPIDJSON_LITTLEENDIAN
246
- # elif defined(CEREAL_RAPIDJSON_DOXYGEN_RUNNING)
247
- # define CEREAL_RAPIDJSON_ENDIAN
248
- # else
249
- # error Unknown machine endianness detected. User needs to define CEREAL_RAPIDJSON_ENDIAN.
250
- # endif
251
- #endif // CEREAL_RAPIDJSON_ENDIAN
252
-
253
- ///////////////////////////////////////////////////////////////////////////////
254
- // CEREAL_RAPIDJSON_64BIT
255
-
256
- //! Whether using 64-bit architecture
257
- #ifndef CEREAL_RAPIDJSON_64BIT
258
- #if defined(__LP64__) || (defined(__x86_64__) && defined(__ILP32__)) || defined(_WIN64) || defined(__EMSCRIPTEN__)
259
- #define CEREAL_RAPIDJSON_64BIT 1
260
- #else
261
- #define CEREAL_RAPIDJSON_64BIT 0
262
- #endif
263
- #endif // CEREAL_RAPIDJSON_64BIT
264
-
265
- ///////////////////////////////////////////////////////////////////////////////
266
- // CEREAL_RAPIDJSON_ALIGN
267
-
268
- //! Data alignment of the machine.
269
- /*! \ingroup CEREAL_RAPIDJSON_CONFIG
270
- \param x pointer to align
271
-
272
- Some machines require strict data alignment. The default is 8 bytes.
273
- User can customize by defining the CEREAL_RAPIDJSON_ALIGN function macro.
274
- */
275
- #ifndef CEREAL_RAPIDJSON_ALIGN
276
- #define CEREAL_RAPIDJSON_ALIGN(x) (((x) + static_cast<size_t>(7u)) & ~static_cast<size_t>(7u))
277
- #endif
278
-
279
- ///////////////////////////////////////////////////////////////////////////////
280
- // CEREAL_RAPIDJSON_UINT64_C2
281
-
282
- //! Construct a 64-bit literal by a pair of 32-bit integer.
283
- /*!
284
- 64-bit literal with or without ULL suffix is prone to compiler warnings.
285
- UINT64_C() is C macro which cause compilation problems.
286
- Use this macro to define 64-bit constants by a pair of 32-bit integer.
287
- */
288
- #ifndef CEREAL_RAPIDJSON_UINT64_C2
289
- #define CEREAL_RAPIDJSON_UINT64_C2(high32, low32) ((static_cast<uint64_t>(high32) << 32) | static_cast<uint64_t>(low32))
290
- #endif
291
-
292
- ///////////////////////////////////////////////////////////////////////////////
293
- // CEREAL_RAPIDJSON_48BITPOINTER_OPTIMIZATION
294
-
295
- //! Use only lower 48-bit address for some pointers.
296
- /*!
297
- \ingroup CEREAL_RAPIDJSON_CONFIG
298
-
299
- This optimization uses the fact that current X86-64 architecture only implement lower 48-bit virtual address.
300
- The higher 16-bit can be used for storing other data.
301
- \c GenericValue uses this optimization to reduce its size form 24 bytes to 16 bytes in 64-bit architecture.
302
- */
303
- #ifndef CEREAL_RAPIDJSON_48BITPOINTER_OPTIMIZATION
304
- #if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)
305
- #define CEREAL_RAPIDJSON_48BITPOINTER_OPTIMIZATION 1
306
- #else
307
- #define CEREAL_RAPIDJSON_48BITPOINTER_OPTIMIZATION 0
308
- #endif
309
- #endif // CEREAL_RAPIDJSON_48BITPOINTER_OPTIMIZATION
310
-
311
- #if CEREAL_RAPIDJSON_48BITPOINTER_OPTIMIZATION == 1
312
- #if CEREAL_RAPIDJSON_64BIT != 1
313
- #error CEREAL_RAPIDJSON_48BITPOINTER_OPTIMIZATION can only be set to 1 when CEREAL_RAPIDJSON_64BIT=1
314
- #endif
315
- #define CEREAL_RAPIDJSON_SETPOINTER(type, p, x) (p = reinterpret_cast<type *>((reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(CEREAL_RAPIDJSON_UINT64_C2(0xFFFF0000, 0x00000000))) | reinterpret_cast<uintptr_t>(reinterpret_cast<const void*>(x))))
316
- #define CEREAL_RAPIDJSON_GETPOINTER(type, p) (reinterpret_cast<type *>(reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(CEREAL_RAPIDJSON_UINT64_C2(0x0000FFFF, 0xFFFFFFFF))))
317
- #else
318
- #define CEREAL_RAPIDJSON_SETPOINTER(type, p, x) (p = (x))
319
- #define CEREAL_RAPIDJSON_GETPOINTER(type, p) (p)
320
- #endif
321
-
322
- ///////////////////////////////////////////////////////////////////////////////
323
- // CEREAL_RAPIDJSON_SSE2/CEREAL_RAPIDJSON_SSE42/CEREAL_RAPIDJSON_NEON/CEREAL_RAPIDJSON_SIMD
324
-
325
- /*! \def CEREAL_RAPIDJSON_SIMD
326
- \ingroup CEREAL_RAPIDJSON_CONFIG
327
- \brief Enable SSE2/SSE4.2/Neon optimization.
328
-
329
- RapidJSON supports optimized implementations for some parsing operations
330
- based on the SSE2, SSE4.2 or NEon SIMD extensions on modern Intel
331
- or ARM compatible processors.
332
-
333
- To enable these optimizations, three different symbols can be defined;
334
- \code
335
- // Enable SSE2 optimization.
336
- #define CEREAL_RAPIDJSON_SSE2
337
-
338
- // Enable SSE4.2 optimization.
339
- #define CEREAL_RAPIDJSON_SSE42
340
- \endcode
341
-
342
- // Enable ARM Neon optimization.
343
- #define CEREAL_RAPIDJSON_NEON
344
- \endcode
345
-
346
- \c CEREAL_RAPIDJSON_SSE42 takes precedence over SSE2, if both are defined.
347
-
348
- If any of these symbols is defined, RapidJSON defines the macro
349
- \c CEREAL_RAPIDJSON_SIMD to indicate the availability of the optimized code.
350
- */
351
- #if defined(CEREAL_RAPIDJSON_SSE2) || defined(CEREAL_RAPIDJSON_SSE42) \
352
- || defined(CEREAL_RAPIDJSON_NEON) || defined(CEREAL_RAPIDJSON_DOXYGEN_RUNNING)
353
- #define CEREAL_RAPIDJSON_SIMD
354
- #endif
355
-
356
- ///////////////////////////////////////////////////////////////////////////////
357
- // CEREAL_RAPIDJSON_NO_SIZETYPEDEFINE
358
-
359
- #ifndef CEREAL_RAPIDJSON_NO_SIZETYPEDEFINE
360
- /*! \def CEREAL_RAPIDJSON_NO_SIZETYPEDEFINE
361
- \ingroup CEREAL_RAPIDJSON_CONFIG
362
- \brief User-provided \c SizeType definition.
363
-
364
- In order to avoid using 32-bit size types for indexing strings and arrays,
365
- define this preprocessor symbol and provide the type rapidjson::SizeType
366
- before including RapidJSON:
367
- \code
368
- #define CEREAL_RAPIDJSON_NO_SIZETYPEDEFINE
369
- namespace rapidjson { typedef ::std::size_t SizeType; }
370
- #include "rapidjson/..."
371
- \endcode
372
-
373
- \see rapidjson::SizeType
374
- */
375
- #ifdef CEREAL_RAPIDJSON_DOXYGEN_RUNNING
376
- #define CEREAL_RAPIDJSON_NO_SIZETYPEDEFINE
377
- #endif
378
- CEREAL_RAPIDJSON_NAMESPACE_BEGIN
379
- //! Size type (for string lengths, array sizes, etc.)
380
- /*! RapidJSON uses 32-bit array/string indices even on 64-bit platforms,
381
- instead of using \c size_t. Users may override the SizeType by defining
382
- \ref CEREAL_RAPIDJSON_NO_SIZETYPEDEFINE.
383
- */
384
- typedef unsigned SizeType;
385
- CEREAL_RAPIDJSON_NAMESPACE_END
386
- #endif
387
-
388
- // always import std::size_t to rapidjson namespace
389
- CEREAL_RAPIDJSON_NAMESPACE_BEGIN
390
- using std::size_t;
391
- CEREAL_RAPIDJSON_NAMESPACE_END
392
-
393
- ///////////////////////////////////////////////////////////////////////////////
394
- // CEREAL_RAPIDJSON_ASSERT
395
-
396
- //! Assertion.
397
- /*! \ingroup CEREAL_RAPIDJSON_CONFIG
398
- By default, rapidjson uses C \c assert() for internal assertions.
399
- User can override it by defining CEREAL_RAPIDJSON_ASSERT(x) macro.
400
-
401
- \note Parsing errors are handled and can be customized by the
402
- \ref CEREAL_RAPIDJSON_ERRORS APIs.
403
- */
404
- #ifndef CEREAL_RAPIDJSON_ASSERT
405
- #include <cassert>
406
- #define CEREAL_RAPIDJSON_ASSERT(x) assert(x)
407
- #endif // CEREAL_RAPIDJSON_ASSERT
408
-
409
- ///////////////////////////////////////////////////////////////////////////////
410
- // CEREAL_RAPIDJSON_STATIC_ASSERT
411
-
412
- // Prefer C++11 static_assert, if available
413
- #ifndef CEREAL_RAPIDJSON_STATIC_ASSERT
414
- #if __cplusplus >= 201103L || ( defined(_MSC_VER) && _MSC_VER >= 1800 )
415
- #define CEREAL_RAPIDJSON_STATIC_ASSERT(x) \
416
- static_assert(x, CEREAL_RAPIDJSON_STRINGIFY(x))
417
- #endif // C++11
418
- #endif // CEREAL_RAPIDJSON_STATIC_ASSERT
419
-
420
- // Adopt C++03 implementation from boost
421
- #ifndef CEREAL_RAPIDJSON_STATIC_ASSERT
422
- #ifndef __clang__
423
- //!@cond CEREAL_RAPIDJSON_HIDDEN_FROM_DOXYGEN
424
- #endif
425
- CEREAL_RAPIDJSON_NAMESPACE_BEGIN
426
- template <bool x> struct STATIC_ASSERTION_FAILURE;
427
- template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
428
- template <size_t x> struct StaticAssertTest {};
429
- CEREAL_RAPIDJSON_NAMESPACE_END
430
-
431
- #if defined(__GNUC__) || defined(__clang__)
432
- #define CEREAL_RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
433
- #else
434
- #define CEREAL_RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
435
- #endif
436
- #ifndef __clang__
437
- //!@endcond
438
- #endif
439
-
440
- /*! \def CEREAL_RAPIDJSON_STATIC_ASSERT
441
- \brief (Internal) macro to check for conditions at compile-time
442
- \param x compile-time condition
443
- \hideinitializer
444
- */
445
- #define CEREAL_RAPIDJSON_STATIC_ASSERT(x) \
446
- typedef ::CEREAL_RAPIDJSON_NAMESPACE::StaticAssertTest< \
447
- sizeof(::CEREAL_RAPIDJSON_NAMESPACE::STATIC_ASSERTION_FAILURE<bool(x) >)> \
448
- CEREAL_RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) CEREAL_RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
449
- #endif // CEREAL_RAPIDJSON_STATIC_ASSERT
450
-
451
- ///////////////////////////////////////////////////////////////////////////////
452
- // CEREAL_RAPIDJSON_LIKELY, CEREAL_RAPIDJSON_UNLIKELY
453
-
454
- //! Compiler branching hint for expression with high probability to be true.
455
- /*!
456
- \ingroup CEREAL_RAPIDJSON_CONFIG
457
- \param x Boolean expression likely to be true.
458
- */
459
- #ifndef CEREAL_RAPIDJSON_LIKELY
460
- #if defined(__GNUC__) || defined(__clang__)
461
- #define CEREAL_RAPIDJSON_LIKELY(x) __builtin_expect(!!(x), 1)
462
- #else
463
- #define CEREAL_RAPIDJSON_LIKELY(x) (x)
464
- #endif
465
- #endif
466
-
467
- //! Compiler branching hint for expression with low probability to be true.
468
- /*!
469
- \ingroup CEREAL_RAPIDJSON_CONFIG
470
- \param x Boolean expression unlikely to be true.
471
- */
472
- #ifndef CEREAL_RAPIDJSON_UNLIKELY
473
- #if defined(__GNUC__) || defined(__clang__)
474
- #define CEREAL_RAPIDJSON_UNLIKELY(x) __builtin_expect(!!(x), 0)
475
- #else
476
- #define CEREAL_RAPIDJSON_UNLIKELY(x) (x)
477
- #endif
478
- #endif
479
-
480
- ///////////////////////////////////////////////////////////////////////////////
481
- // Helpers
482
-
483
- //!@cond CEREAL_RAPIDJSON_HIDDEN_FROM_DOXYGEN
484
-
485
- #define CEREAL_RAPIDJSON_MULTILINEMACRO_BEGIN do {
486
- #define CEREAL_RAPIDJSON_MULTILINEMACRO_END \
487
- } while((void)0, 0)
488
-
489
- // adopted from Boost
490
- #define CEREAL_RAPIDJSON_VERSION_CODE(x,y,z) \
491
- (((x)*100000) + ((y)*100) + (z))
492
-
493
- ///////////////////////////////////////////////////////////////////////////////
494
- // CEREAL_RAPIDJSON_DIAG_PUSH/POP, CEREAL_RAPIDJSON_DIAG_OFF
495
-
496
- #if defined(__GNUC__)
497
- #define CEREAL_RAPIDJSON_GNUC \
498
- CEREAL_RAPIDJSON_VERSION_CODE(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
499
- #endif
500
-
501
- #if defined(__clang__) || (defined(CEREAL_RAPIDJSON_GNUC) && CEREAL_RAPIDJSON_GNUC >= CEREAL_RAPIDJSON_VERSION_CODE(4,2,0))
502
-
503
- #define CEREAL_RAPIDJSON_PRAGMA(x) _Pragma(CEREAL_RAPIDJSON_STRINGIFY(x))
504
- #define CEREAL_RAPIDJSON_DIAG_PRAGMA(x) CEREAL_RAPIDJSON_PRAGMA(GCC diagnostic x)
505
- #define CEREAL_RAPIDJSON_DIAG_OFF(x) \
506
- CEREAL_RAPIDJSON_DIAG_PRAGMA(ignored CEREAL_RAPIDJSON_STRINGIFY(CEREAL_RAPIDJSON_JOIN(-W,x)))
507
-
508
- // push/pop support in Clang and GCC>=4.6
509
- #if defined(__clang__) || (defined(CEREAL_RAPIDJSON_GNUC) && CEREAL_RAPIDJSON_GNUC >= CEREAL_RAPIDJSON_VERSION_CODE(4,6,0))
510
- #define CEREAL_RAPIDJSON_DIAG_PUSH CEREAL_RAPIDJSON_DIAG_PRAGMA(push)
511
- #define CEREAL_RAPIDJSON_DIAG_POP CEREAL_RAPIDJSON_DIAG_PRAGMA(pop)
512
- #else // GCC >= 4.2, < 4.6
513
- #define CEREAL_RAPIDJSON_DIAG_PUSH /* ignored */
514
- #define CEREAL_RAPIDJSON_DIAG_POP /* ignored */
515
- #endif
516
-
517
- #elif defined(_MSC_VER)
518
-
519
- // pragma (MSVC specific)
520
- #define CEREAL_RAPIDJSON_PRAGMA(x) __pragma(x)
521
- #define CEREAL_RAPIDJSON_DIAG_PRAGMA(x) CEREAL_RAPIDJSON_PRAGMA(warning(x))
522
-
523
- #define CEREAL_RAPIDJSON_DIAG_OFF(x) CEREAL_RAPIDJSON_DIAG_PRAGMA(disable: x)
524
- #define CEREAL_RAPIDJSON_DIAG_PUSH CEREAL_RAPIDJSON_DIAG_PRAGMA(push)
525
- #define CEREAL_RAPIDJSON_DIAG_POP CEREAL_RAPIDJSON_DIAG_PRAGMA(pop)
526
-
527
- #else
528
-
529
- #define CEREAL_RAPIDJSON_DIAG_OFF(x) /* ignored */
530
- #define CEREAL_RAPIDJSON_DIAG_PUSH /* ignored */
531
- #define CEREAL_RAPIDJSON_DIAG_POP /* ignored */
532
-
533
- #endif // CEREAL_RAPIDJSON_DIAG_*
534
-
535
- ///////////////////////////////////////////////////////////////////////////////
536
- // C++11 features
537
-
538
- #ifndef CEREAL_RAPIDJSON_HAS_CXX11_RVALUE_REFS
539
- #if defined(__clang__)
540
- #if __has_feature(cxx_rvalue_references) && \
541
- (defined(_MSC_VER) || defined(_LIBCPP_VERSION) || defined(__GLIBCXX__) && __GLIBCXX__ >= 20080306)
542
- #define CEREAL_RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
543
- #else
544
- #define CEREAL_RAPIDJSON_HAS_CXX11_RVALUE_REFS 0
545
- #endif
546
- #elif (defined(CEREAL_RAPIDJSON_GNUC) && (CEREAL_RAPIDJSON_GNUC >= CEREAL_RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
547
- (defined(_MSC_VER) && _MSC_VER >= 1600) || \
548
- (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140 && defined(__GXX_EXPERIMENTAL_CXX0X__))
549
-
550
- #define CEREAL_RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
551
- #else
552
- #define CEREAL_RAPIDJSON_HAS_CXX11_RVALUE_REFS 0
553
- #endif
554
- #endif // CEREAL_RAPIDJSON_HAS_CXX11_RVALUE_REFS
555
-
556
- #ifndef CEREAL_RAPIDJSON_HAS_CXX11_NOEXCEPT
557
- #if defined(__clang__)
558
- #define CEREAL_RAPIDJSON_HAS_CXX11_NOEXCEPT __has_feature(cxx_noexcept)
559
- #elif (defined(CEREAL_RAPIDJSON_GNUC) && (CEREAL_RAPIDJSON_GNUC >= CEREAL_RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
560
- (defined(_MSC_VER) && _MSC_VER >= 1900) || \
561
- (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140 && defined(__GXX_EXPERIMENTAL_CXX0X__))
562
- #define CEREAL_RAPIDJSON_HAS_CXX11_NOEXCEPT 1
563
- #else
564
- #define CEREAL_RAPIDJSON_HAS_CXX11_NOEXCEPT 0
565
- #endif
566
- #endif
567
- #if CEREAL_RAPIDJSON_HAS_CXX11_NOEXCEPT
568
- #define CEREAL_RAPIDJSON_NOEXCEPT noexcept
569
- #else
570
- #define CEREAL_RAPIDJSON_NOEXCEPT /* noexcept */
571
- #endif // CEREAL_RAPIDJSON_HAS_CXX11_NOEXCEPT
572
-
573
- // no automatic detection, yet
574
- #ifndef CEREAL_RAPIDJSON_HAS_CXX11_TYPETRAITS
575
- #if (defined(_MSC_VER) && _MSC_VER >= 1700)
576
- #define CEREAL_RAPIDJSON_HAS_CXX11_TYPETRAITS 1
577
- #else
578
- #define CEREAL_RAPIDJSON_HAS_CXX11_TYPETRAITS 0
579
- #endif
580
- #endif
581
-
582
- #ifndef CEREAL_RAPIDJSON_HAS_CXX11_RANGE_FOR
583
- #if defined(__clang__)
584
- #define CEREAL_RAPIDJSON_HAS_CXX11_RANGE_FOR __has_feature(cxx_range_for)
585
- #elif (defined(CEREAL_RAPIDJSON_GNUC) && (CEREAL_RAPIDJSON_GNUC >= CEREAL_RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
586
- (defined(_MSC_VER) && _MSC_VER >= 1700) || \
587
- (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140 && defined(__GXX_EXPERIMENTAL_CXX0X__))
588
- #define CEREAL_RAPIDJSON_HAS_CXX11_RANGE_FOR 1
589
- #else
590
- #define CEREAL_RAPIDJSON_HAS_CXX11_RANGE_FOR 0
591
- #endif
592
- #endif // CEREAL_RAPIDJSON_HAS_CXX11_RANGE_FOR
593
-
594
- //!@endcond
595
-
596
- //! Assertion (in non-throwing contexts).
597
- /*! \ingroup CEREAL_RAPIDJSON_CONFIG
598
- Some functions provide a \c noexcept guarantee, if the compiler supports it.
599
- In these cases, the \ref CEREAL_RAPIDJSON_ASSERT macro cannot be overridden to
600
- throw an exception. This macro adds a separate customization point for
601
- such cases.
602
-
603
- Defaults to C \c assert() (as \ref CEREAL_RAPIDJSON_ASSERT), if \c noexcept is
604
- supported, and to \ref CEREAL_RAPIDJSON_ASSERT otherwise.
605
- */
606
-
607
- ///////////////////////////////////////////////////////////////////////////////
608
- // CEREAL_RAPIDJSON_NOEXCEPT_ASSERT
609
-
610
- #ifndef CEREAL_RAPIDJSON_NOEXCEPT_ASSERT
611
- #ifdef CEREAL_RAPIDJSON_ASSERT_THROWS
612
- #if CEREAL_RAPIDJSON_HAS_CXX11_NOEXCEPT
613
- #define CEREAL_RAPIDJSON_NOEXCEPT_ASSERT(x)
614
- #else
615
- #define CEREAL_RAPIDJSON_NOEXCEPT_ASSERT(x) CEREAL_RAPIDJSON_ASSERT(x)
616
- #endif // CEREAL_RAPIDJSON_HAS_CXX11_NOEXCEPT
617
- #else
618
- #define CEREAL_RAPIDJSON_NOEXCEPT_ASSERT(x) CEREAL_RAPIDJSON_ASSERT(x)
619
- #endif // CEREAL_RAPIDJSON_ASSERT_THROWS
620
- #endif // CEREAL_RAPIDJSON_NOEXCEPT_ASSERT
621
-
622
- ///////////////////////////////////////////////////////////////////////////////
623
- // new/delete
624
-
625
- #ifndef CEREAL_RAPIDJSON_NEW
626
- ///! customization point for global \c new
627
- #define CEREAL_RAPIDJSON_NEW(TypeName) new TypeName
628
- #endif
629
- #ifndef CEREAL_RAPIDJSON_DELETE
630
- ///! customization point for global \c delete
631
- #define CEREAL_RAPIDJSON_DELETE(x) delete x
632
- #endif
633
-
634
- ///////////////////////////////////////////////////////////////////////////////
635
- // Type
636
-
637
- /*! \namespace rapidjson
638
- \brief main RapidJSON namespace
639
- \see CEREAL_RAPIDJSON_NAMESPACE
640
- */
641
- CEREAL_RAPIDJSON_NAMESPACE_BEGIN
642
-
643
- //! Type of JSON value
644
- enum Type {
645
- kNullType = 0, //!< null
646
- kFalseType = 1, //!< false
647
- kTrueType = 2, //!< true
648
- kObjectType = 3, //!< object
649
- kArrayType = 4, //!< array
650
- kStringType = 5, //!< string
651
- kNumberType = 6 //!< number
652
- };
653
-
654
- CEREAL_RAPIDJSON_NAMESPACE_END
655
-
656
- #endif // CEREAL_RAPIDJSON_CEREAL_RAPIDJSON_H_