rapidjson 0.1.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 (53) hide show
  1. checksums.yaml +7 -0
  2. data/CODE_OF_CONDUCT.md +84 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +110 -0
  5. data/Rakefile +20 -0
  6. data/ext/rapidjson/buffer.hh +66 -0
  7. data/ext/rapidjson/cext.cc +77 -0
  8. data/ext/rapidjson/cext.hh +20 -0
  9. data/ext/rapidjson/encoder.hh +150 -0
  10. data/ext/rapidjson/extconf.rb +19 -0
  11. data/ext/rapidjson/parser.hh +149 -0
  12. data/ext/rapidjson/rapidjson/include/rapidjson/allocators.h +692 -0
  13. data/ext/rapidjson/rapidjson/include/rapidjson/cursorstreamwrapper.h +78 -0
  14. data/ext/rapidjson/rapidjson/include/rapidjson/document.h +3027 -0
  15. data/ext/rapidjson/rapidjson/include/rapidjson/encodedstream.h +299 -0
  16. data/ext/rapidjson/rapidjson/include/rapidjson/encodings.h +716 -0
  17. data/ext/rapidjson/rapidjson/include/rapidjson/error/en.h +122 -0
  18. data/ext/rapidjson/rapidjson/include/rapidjson/error/error.h +216 -0
  19. data/ext/rapidjson/rapidjson/include/rapidjson/filereadstream.h +99 -0
  20. data/ext/rapidjson/rapidjson/include/rapidjson/filewritestream.h +104 -0
  21. data/ext/rapidjson/rapidjson/include/rapidjson/fwd.h +151 -0
  22. data/ext/rapidjson/rapidjson/include/rapidjson/internal/biginteger.h +297 -0
  23. data/ext/rapidjson/rapidjson/include/rapidjson/internal/clzll.h +71 -0
  24. data/ext/rapidjson/rapidjson/include/rapidjson/internal/diyfp.h +261 -0
  25. data/ext/rapidjson/rapidjson/include/rapidjson/internal/dtoa.h +249 -0
  26. data/ext/rapidjson/rapidjson/include/rapidjson/internal/ieee754.h +78 -0
  27. data/ext/rapidjson/rapidjson/include/rapidjson/internal/itoa.h +308 -0
  28. data/ext/rapidjson/rapidjson/include/rapidjson/internal/meta.h +186 -0
  29. data/ext/rapidjson/rapidjson/include/rapidjson/internal/pow10.h +55 -0
  30. data/ext/rapidjson/rapidjson/include/rapidjson/internal/regex.h +739 -0
  31. data/ext/rapidjson/rapidjson/include/rapidjson/internal/stack.h +232 -0
  32. data/ext/rapidjson/rapidjson/include/rapidjson/internal/strfunc.h +83 -0
  33. data/ext/rapidjson/rapidjson/include/rapidjson/internal/strtod.h +293 -0
  34. data/ext/rapidjson/rapidjson/include/rapidjson/internal/swap.h +46 -0
  35. data/ext/rapidjson/rapidjson/include/rapidjson/istreamwrapper.h +128 -0
  36. data/ext/rapidjson/rapidjson/include/rapidjson/memorybuffer.h +70 -0
  37. data/ext/rapidjson/rapidjson/include/rapidjson/memorystream.h +71 -0
  38. data/ext/rapidjson/rapidjson/include/rapidjson/msinttypes/inttypes.h +316 -0
  39. data/ext/rapidjson/rapidjson/include/rapidjson/msinttypes/stdint.h +300 -0
  40. data/ext/rapidjson/rapidjson/include/rapidjson/ostreamwrapper.h +81 -0
  41. data/ext/rapidjson/rapidjson/include/rapidjson/pointer.h +1482 -0
  42. data/ext/rapidjson/rapidjson/include/rapidjson/prettywriter.h +277 -0
  43. data/ext/rapidjson/rapidjson/include/rapidjson/rapidjson.h +741 -0
  44. data/ext/rapidjson/rapidjson/include/rapidjson/reader.h +2246 -0
  45. data/ext/rapidjson/rapidjson/include/rapidjson/schema.h +2795 -0
  46. data/ext/rapidjson/rapidjson/include/rapidjson/stream.h +223 -0
  47. data/ext/rapidjson/rapidjson/include/rapidjson/stringbuffer.h +121 -0
  48. data/ext/rapidjson/rapidjson/include/rapidjson/uri.h +481 -0
  49. data/ext/rapidjson/rapidjson/include/rapidjson/writer.h +710 -0
  50. data/lib/rapidjson/json_gem.rb +36 -0
  51. data/lib/rapidjson/version.rb +5 -0
  52. data/lib/rapidjson.rb +9 -0
  53. metadata +98 -0
@@ -0,0 +1,300 @@
1
+ // ISO C9x compliant stdint.h for Microsoft Visual Studio
2
+ // Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
3
+ //
4
+ // Copyright (c) 2006-2013 Alexander Chemeris
5
+ //
6
+ // Redistribution and use in source and binary forms, with or without
7
+ // modification, are permitted provided that the following conditions are met:
8
+ //
9
+ // 1. Redistributions of source code must retain the above copyright notice,
10
+ // this list of conditions and the following disclaimer.
11
+ //
12
+ // 2. Redistributions in binary form must reproduce the above copyright
13
+ // notice, this list of conditions and the following disclaimer in the
14
+ // documentation and/or other materials provided with the distribution.
15
+ //
16
+ // 3. Neither the name of the product nor the names of its contributors may
17
+ // be used to endorse or promote products derived from this software
18
+ // without specific prior written permission.
19
+ //
20
+ // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
21
+ // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22
+ // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
23
+ // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
+ // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26
+ // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27
+ // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28
+ // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29
+ // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ //
31
+ ///////////////////////////////////////////////////////////////////////////////
32
+
33
+ // The above software in this distribution may have been modified by
34
+ // THL A29 Limited ("Tencent Modifications").
35
+ // All Tencent Modifications are Copyright (C) 2015 THL A29 Limited.
36
+
37
+ #ifndef _MSC_VER // [
38
+ #error "Use this header only with Microsoft Visual C++ compilers!"
39
+ #endif // _MSC_VER ]
40
+
41
+ #ifndef _MSC_STDINT_H_ // [
42
+ #define _MSC_STDINT_H_
43
+
44
+ #if _MSC_VER > 1000
45
+ #pragma once
46
+ #endif
47
+
48
+ // miloyip: Originally Visual Studio 2010 uses its own stdint.h. However it generates warning with INT64_C(), so change to use this file for vs2010.
49
+ #if _MSC_VER >= 1600 // [
50
+ #include <stdint.h>
51
+
52
+ #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
53
+
54
+ #undef INT8_C
55
+ #undef INT16_C
56
+ #undef INT32_C
57
+ #undef INT64_C
58
+ #undef UINT8_C
59
+ #undef UINT16_C
60
+ #undef UINT32_C
61
+ #undef UINT64_C
62
+
63
+ // 7.18.4.1 Macros for minimum-width integer constants
64
+
65
+ #define INT8_C(val) val##i8
66
+ #define INT16_C(val) val##i16
67
+ #define INT32_C(val) val##i32
68
+ #define INT64_C(val) val##i64
69
+
70
+ #define UINT8_C(val) val##ui8
71
+ #define UINT16_C(val) val##ui16
72
+ #define UINT32_C(val) val##ui32
73
+ #define UINT64_C(val) val##ui64
74
+
75
+ // 7.18.4.2 Macros for greatest-width integer constants
76
+ // These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>.
77
+ // Check out Issue 9 for the details.
78
+ #ifndef INTMAX_C // [
79
+ # define INTMAX_C INT64_C
80
+ #endif // INTMAX_C ]
81
+ #ifndef UINTMAX_C // [
82
+ # define UINTMAX_C UINT64_C
83
+ #endif // UINTMAX_C ]
84
+
85
+ #endif // __STDC_CONSTANT_MACROS ]
86
+
87
+ #else // ] _MSC_VER >= 1700 [
88
+
89
+ #include <limits.h>
90
+
91
+ // For Visual Studio 6 in C++ mode and for many Visual Studio versions when
92
+ // compiling for ARM we have to wrap <wchar.h> include with 'extern "C++" {}'
93
+ // or compiler would give many errors like this:
94
+ // error C2733: second C linkage of overloaded function 'wmemchr' not allowed
95
+ #if defined(__cplusplus) && !defined(_M_ARM)
96
+ extern "C" {
97
+ #endif
98
+ # include <wchar.h>
99
+ #if defined(__cplusplus) && !defined(_M_ARM)
100
+ }
101
+ #endif
102
+
103
+ // Define _W64 macros to mark types changing their size, like intptr_t.
104
+ #ifndef _W64
105
+ # if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
106
+ # define _W64 __w64
107
+ # else
108
+ # define _W64
109
+ # endif
110
+ #endif
111
+
112
+
113
+ // 7.18.1 Integer types
114
+
115
+ // 7.18.1.1 Exact-width integer types
116
+
117
+ // Visual Studio 6 and Embedded Visual C++ 4 doesn't
118
+ // realize that, e.g. char has the same size as __int8
119
+ // so we give up on __intX for them.
120
+ #if (_MSC_VER < 1300)
121
+ typedef signed char int8_t;
122
+ typedef signed short int16_t;
123
+ typedef signed int int32_t;
124
+ typedef unsigned char uint8_t;
125
+ typedef unsigned short uint16_t;
126
+ typedef unsigned int uint32_t;
127
+ #else
128
+ typedef signed __int8 int8_t;
129
+ typedef signed __int16 int16_t;
130
+ typedef signed __int32 int32_t;
131
+ typedef unsigned __int8 uint8_t;
132
+ typedef unsigned __int16 uint16_t;
133
+ typedef unsigned __int32 uint32_t;
134
+ #endif
135
+ typedef signed __int64 int64_t;
136
+ typedef unsigned __int64 uint64_t;
137
+
138
+
139
+ // 7.18.1.2 Minimum-width integer types
140
+ typedef int8_t int_least8_t;
141
+ typedef int16_t int_least16_t;
142
+ typedef int32_t int_least32_t;
143
+ typedef int64_t int_least64_t;
144
+ typedef uint8_t uint_least8_t;
145
+ typedef uint16_t uint_least16_t;
146
+ typedef uint32_t uint_least32_t;
147
+ typedef uint64_t uint_least64_t;
148
+
149
+ // 7.18.1.3 Fastest minimum-width integer types
150
+ typedef int8_t int_fast8_t;
151
+ typedef int16_t int_fast16_t;
152
+ typedef int32_t int_fast32_t;
153
+ typedef int64_t int_fast64_t;
154
+ typedef uint8_t uint_fast8_t;
155
+ typedef uint16_t uint_fast16_t;
156
+ typedef uint32_t uint_fast32_t;
157
+ typedef uint64_t uint_fast64_t;
158
+
159
+ // 7.18.1.4 Integer types capable of holding object pointers
160
+ #ifdef _WIN64 // [
161
+ typedef signed __int64 intptr_t;
162
+ typedef unsigned __int64 uintptr_t;
163
+ #else // _WIN64 ][
164
+ typedef _W64 signed int intptr_t;
165
+ typedef _W64 unsigned int uintptr_t;
166
+ #endif // _WIN64 ]
167
+
168
+ // 7.18.1.5 Greatest-width integer types
169
+ typedef int64_t intmax_t;
170
+ typedef uint64_t uintmax_t;
171
+
172
+
173
+ // 7.18.2 Limits of specified-width integer types
174
+
175
+ #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
176
+
177
+ // 7.18.2.1 Limits of exact-width integer types
178
+ #define INT8_MIN ((int8_t)_I8_MIN)
179
+ #define INT8_MAX _I8_MAX
180
+ #define INT16_MIN ((int16_t)_I16_MIN)
181
+ #define INT16_MAX _I16_MAX
182
+ #define INT32_MIN ((int32_t)_I32_MIN)
183
+ #define INT32_MAX _I32_MAX
184
+ #define INT64_MIN ((int64_t)_I64_MIN)
185
+ #define INT64_MAX _I64_MAX
186
+ #define UINT8_MAX _UI8_MAX
187
+ #define UINT16_MAX _UI16_MAX
188
+ #define UINT32_MAX _UI32_MAX
189
+ #define UINT64_MAX _UI64_MAX
190
+
191
+ // 7.18.2.2 Limits of minimum-width integer types
192
+ #define INT_LEAST8_MIN INT8_MIN
193
+ #define INT_LEAST8_MAX INT8_MAX
194
+ #define INT_LEAST16_MIN INT16_MIN
195
+ #define INT_LEAST16_MAX INT16_MAX
196
+ #define INT_LEAST32_MIN INT32_MIN
197
+ #define INT_LEAST32_MAX INT32_MAX
198
+ #define INT_LEAST64_MIN INT64_MIN
199
+ #define INT_LEAST64_MAX INT64_MAX
200
+ #define UINT_LEAST8_MAX UINT8_MAX
201
+ #define UINT_LEAST16_MAX UINT16_MAX
202
+ #define UINT_LEAST32_MAX UINT32_MAX
203
+ #define UINT_LEAST64_MAX UINT64_MAX
204
+
205
+ // 7.18.2.3 Limits of fastest minimum-width integer types
206
+ #define INT_FAST8_MIN INT8_MIN
207
+ #define INT_FAST8_MAX INT8_MAX
208
+ #define INT_FAST16_MIN INT16_MIN
209
+ #define INT_FAST16_MAX INT16_MAX
210
+ #define INT_FAST32_MIN INT32_MIN
211
+ #define INT_FAST32_MAX INT32_MAX
212
+ #define INT_FAST64_MIN INT64_MIN
213
+ #define INT_FAST64_MAX INT64_MAX
214
+ #define UINT_FAST8_MAX UINT8_MAX
215
+ #define UINT_FAST16_MAX UINT16_MAX
216
+ #define UINT_FAST32_MAX UINT32_MAX
217
+ #define UINT_FAST64_MAX UINT64_MAX
218
+
219
+ // 7.18.2.4 Limits of integer types capable of holding object pointers
220
+ #ifdef _WIN64 // [
221
+ # define INTPTR_MIN INT64_MIN
222
+ # define INTPTR_MAX INT64_MAX
223
+ # define UINTPTR_MAX UINT64_MAX
224
+ #else // _WIN64 ][
225
+ # define INTPTR_MIN INT32_MIN
226
+ # define INTPTR_MAX INT32_MAX
227
+ # define UINTPTR_MAX UINT32_MAX
228
+ #endif // _WIN64 ]
229
+
230
+ // 7.18.2.5 Limits of greatest-width integer types
231
+ #define INTMAX_MIN INT64_MIN
232
+ #define INTMAX_MAX INT64_MAX
233
+ #define UINTMAX_MAX UINT64_MAX
234
+
235
+ // 7.18.3 Limits of other integer types
236
+
237
+ #ifdef _WIN64 // [
238
+ # define PTRDIFF_MIN _I64_MIN
239
+ # define PTRDIFF_MAX _I64_MAX
240
+ #else // _WIN64 ][
241
+ # define PTRDIFF_MIN _I32_MIN
242
+ # define PTRDIFF_MAX _I32_MAX
243
+ #endif // _WIN64 ]
244
+
245
+ #define SIG_ATOMIC_MIN INT_MIN
246
+ #define SIG_ATOMIC_MAX INT_MAX
247
+
248
+ #ifndef SIZE_MAX // [
249
+ # ifdef _WIN64 // [
250
+ # define SIZE_MAX _UI64_MAX
251
+ # else // _WIN64 ][
252
+ # define SIZE_MAX _UI32_MAX
253
+ # endif // _WIN64 ]
254
+ #endif // SIZE_MAX ]
255
+
256
+ // WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
257
+ #ifndef WCHAR_MIN // [
258
+ # define WCHAR_MIN 0
259
+ #endif // WCHAR_MIN ]
260
+ #ifndef WCHAR_MAX // [
261
+ # define WCHAR_MAX _UI16_MAX
262
+ #endif // WCHAR_MAX ]
263
+
264
+ #define WINT_MIN 0
265
+ #define WINT_MAX _UI16_MAX
266
+
267
+ #endif // __STDC_LIMIT_MACROS ]
268
+
269
+
270
+ // 7.18.4 Limits of other integer types
271
+
272
+ #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
273
+
274
+ // 7.18.4.1 Macros for minimum-width integer constants
275
+
276
+ #define INT8_C(val) val##i8
277
+ #define INT16_C(val) val##i16
278
+ #define INT32_C(val) val##i32
279
+ #define INT64_C(val) val##i64
280
+
281
+ #define UINT8_C(val) val##ui8
282
+ #define UINT16_C(val) val##ui16
283
+ #define UINT32_C(val) val##ui32
284
+ #define UINT64_C(val) val##ui64
285
+
286
+ // 7.18.4.2 Macros for greatest-width integer constants
287
+ // These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>.
288
+ // Check out Issue 9 for the details.
289
+ #ifndef INTMAX_C // [
290
+ # define INTMAX_C INT64_C
291
+ #endif // INTMAX_C ]
292
+ #ifndef UINTMAX_C // [
293
+ # define UINTMAX_C UINT64_C
294
+ #endif // UINTMAX_C ]
295
+
296
+ #endif // __STDC_CONSTANT_MACROS ]
297
+
298
+ #endif // _MSC_VER >= 1600 ]
299
+
300
+ #endif // _MSC_STDINT_H_ ]
@@ -0,0 +1,81 @@
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.
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 RAPIDJSON_OSTREAMWRAPPER_H_
16
+ #define RAPIDJSON_OSTREAMWRAPPER_H_
17
+
18
+ #include "stream.h"
19
+ #include <iosfwd>
20
+
21
+ #ifdef __clang__
22
+ RAPIDJSON_DIAG_PUSH
23
+ RAPIDJSON_DIAG_OFF(padded)
24
+ #endif
25
+
26
+ RAPIDJSON_NAMESPACE_BEGIN
27
+
28
+ //! Wrapper of \c std::basic_ostream into RapidJSON's Stream concept.
29
+ /*!
30
+ The classes can be wrapped including but not limited to:
31
+
32
+ - \c std::ostringstream
33
+ - \c std::stringstream
34
+ - \c std::wpstringstream
35
+ - \c std::wstringstream
36
+ - \c std::ifstream
37
+ - \c std::fstream
38
+ - \c std::wofstream
39
+ - \c std::wfstream
40
+
41
+ \tparam StreamType Class derived from \c std::basic_ostream.
42
+ */
43
+
44
+ template <typename StreamType>
45
+ class BasicOStreamWrapper {
46
+ public:
47
+ typedef typename StreamType::char_type Ch;
48
+ BasicOStreamWrapper(StreamType& stream) : stream_(stream) {}
49
+
50
+ void Put(Ch c) {
51
+ stream_.put(c);
52
+ }
53
+
54
+ void Flush() {
55
+ stream_.flush();
56
+ }
57
+
58
+ // Not implemented
59
+ char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
60
+ char Take() { RAPIDJSON_ASSERT(false); return 0; }
61
+ size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
62
+ char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
63
+ size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
64
+
65
+ private:
66
+ BasicOStreamWrapper(const BasicOStreamWrapper&);
67
+ BasicOStreamWrapper& operator=(const BasicOStreamWrapper&);
68
+
69
+ StreamType& stream_;
70
+ };
71
+
72
+ typedef BasicOStreamWrapper<std::ostream> OStreamWrapper;
73
+ typedef BasicOStreamWrapper<std::wostream> WOStreamWrapper;
74
+
75
+ #ifdef __clang__
76
+ RAPIDJSON_DIAG_POP
77
+ #endif
78
+
79
+ RAPIDJSON_NAMESPACE_END
80
+
81
+ #endif // RAPIDJSON_OSTREAMWRAPPER_H_