Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
rapidjson.h
Aller à la documentation de ce fichier.
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2// Tencent is pleased to support the open source community by making RapidJSON available.
3//
4// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
5//
6// Licensed under the MIT License (the "License"); you may not use this file except
7// in compliance with the License. You may obtain a copy of the License at
8//
9// http://opensource.org/licenses/MIT
10//
11// Unless required by applicable law or agreed to in writing, software distributed
12// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
13// CONDITIONS OF ANY KIND, either express or implied. See the License for the
14// specific language governing permissions and limitations under the License.
15
16#ifndef RAPIDJSON_RAPIDJSON_H_
17#define RAPIDJSON_RAPIDJSON_H_
18
24
39
40#include <cstdlib> // malloc(), realloc(), free(), size_t
41#include <cstring> // memset(), memcpy(), memmove(), memcmp()
42
44// RAPIDJSON_VERSION_STRING
45//
46// ALWAYS synchronize the following 3 macros with corresponding variables in /CMakeLists.txt.
47//
48
50// token stringification
51#define RAPIDJSON_STRINGIFY(x) RAPIDJSON_DO_STRINGIFY(x)
52#define RAPIDJSON_DO_STRINGIFY(x) #x
53
54// token concatenation
55#define RAPIDJSON_JOIN(X, Y) RAPIDJSON_DO_JOIN(X, Y)
56#define RAPIDJSON_DO_JOIN(X, Y) RAPIDJSON_DO_JOIN2(X, Y)
57#define RAPIDJSON_DO_JOIN2(X, Y) X##Y
59
76#define RAPIDJSON_MAJOR_VERSION 1
77#define RAPIDJSON_MINOR_VERSION 1
78#define RAPIDJSON_PATCH_VERSION 0
79#define RAPIDJSON_VERSION_STRING \
80 RAPIDJSON_STRINGIFY(RAPIDJSON_MAJOR_VERSION.RAPIDJSON_MINOR_VERSION.RAPIDJSON_PATCH_VERSION)
81
83// RAPIDJSON_NAMESPACE_(BEGIN|END)
118#ifndef RAPIDJSON_NAMESPACE
119#define RAPIDJSON_NAMESPACE rapidjson
120#endif
121#ifndef RAPIDJSON_NAMESPACE_BEGIN
122#define RAPIDJSON_NAMESPACE_BEGIN namespace RAPIDJSON_NAMESPACE {
123#endif
124#ifndef RAPIDJSON_NAMESPACE_END
125#define RAPIDJSON_NAMESPACE_END }
126#endif
127
129// __cplusplus macro
130
132
133#if defined(_MSC_VER)
134#define RAPIDJSON_CPLUSPLUS _MSVC_LANG
135#else
136#define RAPIDJSON_CPLUSPLUS __cplusplus
137#endif
138
140
142// RAPIDJSON_HAS_STDSTRING
143
144#ifndef RAPIDJSON_HAS_STDSTRING
145#ifdef RAPIDJSON_DOXYGEN_RUNNING
146#define RAPIDJSON_HAS_STDSTRING 1 // force generation of documentation
147#else
148#define RAPIDJSON_HAS_STDSTRING 0 // no std::string support by default
149#endif
160#endif // !defined(RAPIDJSON_HAS_STDSTRING)
161
162#if RAPIDJSON_HAS_STDSTRING
163#include <string>
164#endif // RAPIDJSON_HAS_STDSTRING
165
167// RAPIDJSON_USE_MEMBERSMAP
168
180#ifndef RAPIDJSON_USE_MEMBERSMAP
181#define RAPIDJSON_USE_MEMBERSMAP 0 // not by default
182#endif
183
185// RAPIDJSON_NO_INT64DEFINE
186
197#ifndef RAPIDJSON_NO_INT64DEFINE
199#if defined(_MSC_VER) && (_MSC_VER < 1800) // Visual Studio 2013
200#include "msinttypes/stdint.h"
201#include "msinttypes/inttypes.h"
202#else
203// Other compilers should have this.
204#include <stdint.h>
205#include <inttypes.h>
206#endif
208#ifdef RAPIDJSON_DOXYGEN_RUNNING
209#define RAPIDJSON_NO_INT64DEFINE
210#endif
211#endif // RAPIDJSON_NO_INT64TYPEDEF
212
214// RAPIDJSON_FORCEINLINE
215
216#ifndef RAPIDJSON_FORCEINLINE
218#if defined(_MSC_VER) && defined(NDEBUG)
219#define RAPIDJSON_FORCEINLINE __forceinline
220#elif defined(__GNUC__) && __GNUC__ >= 4 && defined(NDEBUG)
221#define RAPIDJSON_FORCEINLINE __attribute__((always_inline))
222#else
223#define RAPIDJSON_FORCEINLINE
224#endif
226#endif // RAPIDJSON_FORCEINLINE
227
229// RAPIDJSON_ENDIAN
230#define RAPIDJSON_LITTLEENDIAN 0
231#define RAPIDJSON_BIGENDIAN 1
232
234
246#ifndef RAPIDJSON_ENDIAN
247// Detect with GCC 4.6's macro
248# ifdef __BYTE_ORDER__
249# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
250# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
251# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
252# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
253# else
254# error Unknown machine endianness detected. User needs to define RAPIDJSON_ENDIAN.
255# endif // __BYTE_ORDER__
256// Detect with GLIBC's endian.h
257# elif defined(__GLIBC__)
258# include <endian.h>
259# if (__BYTE_ORDER == __LITTLE_ENDIAN)
260# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
261# elif (__BYTE_ORDER == __BIG_ENDIAN)
262# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
263# else
264# error Unknown machine endianness detected. User needs to define RAPIDJSON_ENDIAN.
265# endif // __GLIBC__
266// Detect with _LITTLE_ENDIAN and _BIG_ENDIAN macro
267# elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
268# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
269# elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
270# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
271// Detect with architecture macros
272# elif defined(__sparc) || defined(__sparc__) || defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || defined(__hpux) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) || defined(__s390__)
273# define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
274# 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__)
275# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
276# elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64))
277# define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
278# elif defined(RAPIDJSON_DOXYGEN_RUNNING)
279# define RAPIDJSON_ENDIAN
280# else
281# error Unknown machine endianness detected. User needs to define RAPIDJSON_ENDIAN.
282# endif
283#endif // RAPIDJSON_ENDIAN
284
286// RAPIDJSON_64BIT
287
289#ifndef RAPIDJSON_64BIT
290#if defined(__LP64__) || (defined(__x86_64__) && defined(__ILP32__)) || defined(_WIN64) || defined(__EMSCRIPTEN__)
291#define RAPIDJSON_64BIT 1
292#else
293#define RAPIDJSON_64BIT 0
294#endif
295#endif // RAPIDJSON_64BIT
296
298// RAPIDJSON_ALIGN
299
301
307#ifndef RAPIDJSON_ALIGN
308#define RAPIDJSON_ALIGN(x) (((x) + static_cast<size_t>(7u)) & ~static_cast<size_t>(7u))
309#endif
310
312// RAPIDJSON_UINT64_C2
313
315
320#ifndef RAPIDJSON_UINT64_C2
321#define RAPIDJSON_UINT64_C2(high32, low32) ((static_cast<uint64_t>(high32) << 32) | static_cast<uint64_t>(low32))
322#endif
323
325// RAPIDJSON_48BITPOINTER_OPTIMIZATION
326
328
335#ifndef RAPIDJSON_48BITPOINTER_OPTIMIZATION
336#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)
337#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 1
338#else
339#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 0
340#endif
341#endif // RAPIDJSON_48BITPOINTER_OPTIMIZATION
342
343#if RAPIDJSON_48BITPOINTER_OPTIMIZATION == 1
344#if RAPIDJSON_64BIT != 1
345#error RAPIDJSON_48BITPOINTER_OPTIMIZATION can only be set to 1 when RAPIDJSON_64BIT=1
346#endif
347#define RAPIDJSON_SETPOINTER(type, p, x) (p = reinterpret_cast<type *>((reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(RAPIDJSON_UINT64_C2(0xFFFF0000, 0x00000000))) | reinterpret_cast<uintptr_t>(reinterpret_cast<const void*>(x))))
348#define RAPIDJSON_GETPOINTER(type, p) (reinterpret_cast<type *>(reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(RAPIDJSON_UINT64_C2(0x0000FFFF, 0xFFFFFFFF))))
349#else
350#define RAPIDJSON_SETPOINTER(type, p, x) (p = (x))
351#define RAPIDJSON_GETPOINTER(type, p) (p)
352#endif
353
355// RAPIDJSON_SSE2/RAPIDJSON_SSE42/RAPIDJSON_NEON/RAPIDJSON_SIMD
356
383#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) \
384 || defined(RAPIDJSON_NEON) || defined(RAPIDJSON_DOXYGEN_RUNNING)
385#define RAPIDJSON_SIMD
386#endif
387
389// RAPIDJSON_NO_SIZETYPEDEFINE
390
391#ifndef RAPIDJSON_NO_SIZETYPEDEFINE
407#ifdef RAPIDJSON_DOXYGEN_RUNNING
408#define RAPIDJSON_NO_SIZETYPEDEFINE
409#endif
412
416typedef unsigned SizeType;
418#endif
419
420// always import std::size_t to rapidjson namespace
422using std::size_t;
424
426// RAPIDJSON_ASSERT
427
429
436#ifndef RAPIDJSON_ASSERT
437#include <cassert>
438#define RAPIDJSON_ASSERT(x) assert(x)
439#endif // RAPIDJSON_ASSERT
440
442// RAPIDJSON_STATIC_ASSERT
443
444// Prefer C++11 static_assert, if available
445#ifndef RAPIDJSON_STATIC_ASSERT
446#if RAPIDJSON_CPLUSPLUS >= 201103L || ( defined(_MSC_VER) && _MSC_VER >= 1800 )
447#define RAPIDJSON_STATIC_ASSERT(x) \
448 static_assert(x, RAPIDJSON_STRINGIFY(x))
449#endif // C++11
450#endif // RAPIDJSON_STATIC_ASSERT
451
452// Adopt C++03 implementation from boost
453#ifndef RAPIDJSON_STATIC_ASSERT
454#ifndef __clang__
456#endif
458template <bool x> struct STATIC_ASSERTION_FAILURE;
459template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
460template <size_t x> struct StaticAssertTest {};
462
463#if defined(__GNUC__) || defined(__clang__)
464#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
465#else
466#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
467#endif
468#ifndef __clang__
470#endif
471
477#define RAPIDJSON_STATIC_ASSERT(x) \
478 typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest< \
479 sizeof(::RAPIDJSON_NAMESPACE::STATIC_ASSERTION_FAILURE<bool(x) >)> \
480 RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
481#endif // RAPIDJSON_STATIC_ASSERT
482
484// RAPIDJSON_LIKELY, RAPIDJSON_UNLIKELY
485
487
491#ifndef RAPIDJSON_LIKELY
492#if defined(__GNUC__) || defined(__clang__)
493#define RAPIDJSON_LIKELY(x) __builtin_expect(!!(x), 1)
494#else
495#define RAPIDJSON_LIKELY(x) (x)
496#endif
497#endif
498
500
504#ifndef RAPIDJSON_UNLIKELY
505#if defined(__GNUC__) || defined(__clang__)
506#define RAPIDJSON_UNLIKELY(x) __builtin_expect(!!(x), 0)
507#else
508#define RAPIDJSON_UNLIKELY(x) (x)
509#endif
510#endif
511
513// Helpers
514
516
517#define RAPIDJSON_MULTILINEMACRO_BEGIN do {
518#define RAPIDJSON_MULTILINEMACRO_END \
519} while((void)0, 0)
520
521// adopted from Boost
522#define RAPIDJSON_VERSION_CODE(x,y,z) \
523 (((x)*100000) + ((y)*100) + (z))
524
525#if defined(__has_builtin)
526#define RAPIDJSON_HAS_BUILTIN(x) __has_builtin(x)
527#else
528#define RAPIDJSON_HAS_BUILTIN(x) 0
529#endif
530
532// RAPIDJSON_DIAG_PUSH/POP, RAPIDJSON_DIAG_OFF
533
534#if defined(__GNUC__)
535#define RAPIDJSON_GNUC \
536 RAPIDJSON_VERSION_CODE(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
537#endif
538
539#if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,2,0))
540
541#define RAPIDJSON_PRAGMA(x) _Pragma(RAPIDJSON_STRINGIFY(x))
542#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(GCC diagnostic x)
543#define RAPIDJSON_DIAG_OFF(x) \
544 RAPIDJSON_DIAG_PRAGMA(ignored RAPIDJSON_STRINGIFY(RAPIDJSON_JOIN(-W,x)))
545
546// push/pop support in Clang and GCC>=4.6
547#if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0))
548#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)
549#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop)
550#else // GCC >= 4.2, < 4.6
551#define RAPIDJSON_DIAG_PUSH /* ignored */
552#define RAPIDJSON_DIAG_POP /* ignored */
553#endif
554
555#elif defined(_MSC_VER)
556
557// pragma (MSVC specific)
558#define RAPIDJSON_PRAGMA(x) __pragma(x)
559#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(warning(x))
560
561#define RAPIDJSON_DIAG_OFF(x) RAPIDJSON_DIAG_PRAGMA(disable: x)
562#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)
563#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop)
564
565#else
566
567#define RAPIDJSON_DIAG_OFF(x) /* ignored */
568#define RAPIDJSON_DIAG_PUSH /* ignored */
569#define RAPIDJSON_DIAG_POP /* ignored */
570
571#endif // RAPIDJSON_DIAG_*
572
574// C++11 features
575
576#ifndef RAPIDJSON_HAS_CXX11
577#define RAPIDJSON_HAS_CXX11 (RAPIDJSON_CPLUSPLUS >= 201103L)
578#endif
579
580#ifndef RAPIDJSON_HAS_CXX11_RVALUE_REFS
581#if RAPIDJSON_HAS_CXX11
582#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
583#elif defined(__clang__)
584#if __has_feature(cxx_rvalue_references) && \
585 (defined(_MSC_VER) || defined(_LIBCPP_VERSION) || defined(__GLIBCXX__) && __GLIBCXX__ >= 20080306)
586#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
587#else
588#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0
589#endif
590#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
591 (defined(_MSC_VER) && _MSC_VER >= 1600) || \
592 (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140 && defined(__GXX_EXPERIMENTAL_CXX0X__))
593
594#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
595#else
596#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0
597#endif
598#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
599
600#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
601#include <utility> // std::move
602#endif
603
604#ifndef RAPIDJSON_HAS_CXX11_NOEXCEPT
605#if RAPIDJSON_HAS_CXX11
606#define RAPIDJSON_HAS_CXX11_NOEXCEPT 1
607#elif defined(__clang__)
608#define RAPIDJSON_HAS_CXX11_NOEXCEPT __has_feature(cxx_noexcept)
609#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
610 (defined(_MSC_VER) && _MSC_VER >= 1900) || \
611 (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140 && defined(__GXX_EXPERIMENTAL_CXX0X__))
612#define RAPIDJSON_HAS_CXX11_NOEXCEPT 1
613#else
614#define RAPIDJSON_HAS_CXX11_NOEXCEPT 0
615#endif
616#endif
617#ifndef RAPIDJSON_NOEXCEPT
618#if RAPIDJSON_HAS_CXX11_NOEXCEPT
619#define RAPIDJSON_NOEXCEPT noexcept
620#else
621#define RAPIDJSON_NOEXCEPT throw()
622#endif // RAPIDJSON_HAS_CXX11_NOEXCEPT
623#endif
624
625// no automatic detection, yet
626#ifndef RAPIDJSON_HAS_CXX11_TYPETRAITS
627#if (defined(_MSC_VER) && _MSC_VER >= 1700)
628#define RAPIDJSON_HAS_CXX11_TYPETRAITS 1
629#else
630#define RAPIDJSON_HAS_CXX11_TYPETRAITS 0
631#endif
632#endif
633
634#ifndef RAPIDJSON_HAS_CXX11_RANGE_FOR
635#if defined(__clang__)
636#define RAPIDJSON_HAS_CXX11_RANGE_FOR __has_feature(cxx_range_for)
637#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
638 (defined(_MSC_VER) && _MSC_VER >= 1700) || \
639 (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140 && defined(__GXX_EXPERIMENTAL_CXX0X__))
640#define RAPIDJSON_HAS_CXX11_RANGE_FOR 1
641#else
642#define RAPIDJSON_HAS_CXX11_RANGE_FOR 0
643#endif
644#endif // RAPIDJSON_HAS_CXX11_RANGE_FOR
645
647// C++17 features
648
649#ifndef RAPIDJSON_HAS_CXX17
650#define RAPIDJSON_HAS_CXX17 (RAPIDJSON_CPLUSPLUS >= 201703L)
651#endif
652
653#if RAPIDJSON_HAS_CXX17
654# define RAPIDJSON_DELIBERATE_FALLTHROUGH [[fallthrough]]
655#elif defined(__has_cpp_attribute)
656# if __has_cpp_attribute(clang::fallthrough)
657# define RAPIDJSON_DELIBERATE_FALLTHROUGH [[clang::fallthrough]]
658# elif __has_cpp_attribute(fallthrough)
659# define RAPIDJSON_DELIBERATE_FALLTHROUGH __attribute__((fallthrough))
660# else
661# define RAPIDJSON_DELIBERATE_FALLTHROUGH
662# endif
663#else
664# define RAPIDJSON_DELIBERATE_FALLTHROUGH
665#endif
666
668
670
679
681// RAPIDJSON_NOEXCEPT_ASSERT
682
683#ifndef RAPIDJSON_NOEXCEPT_ASSERT
684#ifdef RAPIDJSON_ASSERT_THROWS
685#include <cassert>
686#define RAPIDJSON_NOEXCEPT_ASSERT(x) assert(x)
687#else
688#define RAPIDJSON_NOEXCEPT_ASSERT(x) RAPIDJSON_ASSERT(x)
689#endif // RAPIDJSON_ASSERT_THROWS
690#endif // RAPIDJSON_NOEXCEPT_ASSERT
691
693// malloc/realloc/free
694
695#ifndef RAPIDJSON_MALLOC
697#define RAPIDJSON_MALLOC(size) std::malloc(size)
698#endif
699#ifndef RAPIDJSON_REALLOC
701#define RAPIDJSON_REALLOC(ptr, new_size) std::realloc(ptr, new_size)
702#endif
703#ifndef RAPIDJSON_FREE
705#define RAPIDJSON_FREE(ptr) std::free(ptr)
706#endif
707
709// new/delete
710
711#ifndef RAPIDJSON_NEW
713#define RAPIDJSON_NEW(TypeName) new TypeName
714#endif
715#ifndef RAPIDJSON_DELETE
717#define RAPIDJSON_DELETE(x) delete x
718#endif
719
721// Type
722
728
739
741
742#endif // RAPIDJSON_RAPIDJSON_H_
#define RAPIDJSON_NAMESPACE_BEGIN
provide custom rapidjson namespace (opening expression)
Definition rapidjson.h:122
#define RAPIDJSON_NAMESPACE_END
provide custom rapidjson namespace (closing expression)
Definition rapidjson.h:125
Type
Type of JSON value.
Definition rapidjson.h:730
@ kFalseType
false
Definition rapidjson.h:732
@ kObjectType
object
Definition rapidjson.h:734
@ kTrueType
true
Definition rapidjson.h:733
@ kStringType
string
Definition rapidjson.h:736
@ kNullType
null
Definition rapidjson.h:731
@ kArrayType
array
Definition rapidjson.h:735
@ kNumberType
number
Definition rapidjson.h:737
RAPIDJSON_NAMESPACE_BEGIN typedef unsigned SizeType
Size type (for string lengths, array sizes, etc.)
Definition rapidjson.h:416