15 #ifndef CEREAL_RAPIDJSON_SCHEMA_H_
16 #define CEREAL_RAPIDJSON_SCHEMA_H_
23 #if !defined(CEREAL_RAPIDJSON_SCHEMA_USE_INTERNALREGEX)
24 #define CEREAL_RAPIDJSON_SCHEMA_USE_INTERNALREGEX 1
26 #define CEREAL_RAPIDJSON_SCHEMA_USE_INTERNALREGEX 0
29 #if !CEREAL_RAPIDJSON_SCHEMA_USE_INTERNALREGEX && defined(CEREAL_RAPIDJSON_SCHEMA_USE_STDREGEX) && (__cplusplus >=201103L || (defined(_MSC_VER) && _MSC_VER >= 1800))
30 #define CEREAL_RAPIDJSON_SCHEMA_USE_STDREGEX 1
32 #define CEREAL_RAPIDJSON_SCHEMA_USE_STDREGEX 0
35 #if CEREAL_RAPIDJSON_SCHEMA_USE_INTERNALREGEX
37 #elif CEREAL_RAPIDJSON_SCHEMA_USE_STDREGEX
41 #if CEREAL_RAPIDJSON_SCHEMA_USE_INTERNALREGEX || CEREAL_RAPIDJSON_SCHEMA_USE_STDREGEX
42 #define CEREAL_RAPIDJSON_SCHEMA_HAS_REGEX 1
44 #define CEREAL_RAPIDJSON_SCHEMA_HAS_REGEX 0
47 #ifndef CEREAL_RAPIDJSON_SCHEMA_VERBOSE
48 #define CEREAL_RAPIDJSON_SCHEMA_VERBOSE 0
51 #if CEREAL_RAPIDJSON_SCHEMA_VERBOSE
55 CEREAL_RAPIDJSON_DIAG_PUSH
58 CEREAL_RAPIDJSON_DIAG_OFF(effc++)
62 CEREAL_RAPIDJSON_DIAG_OFF(weak-vtables)
63 CEREAL_RAPIDJSON_DIAG_OFF(exit-time-destructors)
64 CEREAL_RAPIDJSON_DIAG_OFF(c++98-compat-pedantic)
65 CEREAL_RAPIDJSON_DIAG_OFF(variadic-macros)
66 #elif defined(_MSC_VER)
67 CEREAL_RAPIDJSON_DIAG_OFF(4512)
75 #if CEREAL_RAPIDJSON_SCHEMA_VERBOSE
79 inline void PrintInvalidKeyword(
const char* keyword) {
80 printf(
"Fail keyword: %s\n", keyword);
83 inline void PrintInvalidKeyword(
const wchar_t* keyword) {
84 wprintf(L
"Fail keyword: %ls\n", keyword);
87 inline void PrintInvalidDocument(
const char* document) {
88 printf(
"Fail document: %s\n\n", document);
91 inline void PrintInvalidDocument(
const wchar_t* document) {
92 wprintf(L
"Fail document: %ls\n\n", document);
95 inline void PrintValidatorPointers(
unsigned depth,
const char* s,
const char*
d) {
96 printf(
"S: %*s%s\nD: %*s%s\n\n", depth * 4,
" ", s, depth * 4,
" ",
d);
99 inline void PrintValidatorPointers(
unsigned depth,
const wchar_t* s,
const wchar_t*
d) {
100 wprintf(L
"S: %*ls%ls\nD: %*ls%ls\n\n", depth * 4, L
" ", s, depth * 4, L
" ",
d);
110 #if CEREAL_RAPIDJSON_SCHEMA_VERBOSE
111 #define CEREAL_RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) internal::PrintInvalidKeyword(keyword)
113 #define CEREAL_RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword)
116 #define CEREAL_RAPIDJSON_INVALID_KEYWORD_RETURN(keyword)\
117 CEREAL_RAPIDJSON_MULTILINEMACRO_BEGIN\
118 context.invalidKeyword = keyword.GetString();\
119 CEREAL_RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword.GetString());\
121 CEREAL_RAPIDJSON_MULTILINEMACRO_END
126 template <
typename ValueType,
typename Allocator>
131 template <
typename SchemaDocumentType>
146 template <
typename SchemaType>
162 template <
typename SchemaType>
165 typedef typename SchemaType::Ch
Ch;
166 typedef typename SchemaType::SValue
SValue;
219 template<
typename Encoding,
typename Allocator>
222 typedef typename Encoding::Ch
Ch;
255 for (
SizeType i = 0; i < memberCount; i++)
256 h ^=
Hash(kv[i * 2], kv[i * 2 + 1]);
257 *
stack_.template Push<uint64_t>() = h;
265 for (
SizeType i = 0; i < elementCount; i++)
267 *
stack_.template Push<uint64_t>() = h;
275 return *
stack_.template Top<uint64_t>();
295 const unsigned char*
d =
static_cast<const unsigned char*
>(data);
296 for (
size_t i = 0; i < len; i++)
298 *
stack_.template Push<uint64_t>() = h;
315 template <
typename SchemaDocumentType>
321 typedef typename ValueType::Ch
Ch;
395 template <
typename SchemaDocumentType>
398 typedef typename SchemaDocumentType::ValueType
ValueType;
402 typedef typename EncodingType::Ch
Ch;
446 typedef typename SchemaDocumentType::ValueType
ValueType;
447 typedef typename ValueType::ConstValueIterator ConstValueIterator;
448 typedef typename ValueType::ConstMemberIterator ConstMemberIterator;
450 if (!
value.IsObject())
457 else if (v->IsArray())
458 for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr)
463 if (v->IsArray() && v->Size() > 0) {
465 for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr) {
467 char buffer[256u + 24];
469 EnumHasherType h(&hasherAllocator, 256);
475 if (schemaDocument) {
482 schemaDocument->CreateSchema(&
not_, p.Append(GetNotString(),
allocator_), *v, document);
496 if (properties && properties->IsObject())
497 for (ConstMemberIterator itr = properties->MemberBegin(); itr != properties->MemberEnd(); ++itr)
500 if (required && required->IsArray())
501 for (ConstValueIterator itr = required->Begin(); itr != required->End(); ++itr)
505 if (dependencies && dependencies->IsObject())
506 for (ConstMemberIterator itr = dependencies->MemberBegin(); itr != dependencies->MemberEnd(); ++itr) {
508 if (itr->value.IsArray())
509 for (ConstValueIterator i = itr->value.Begin(); i != itr->value.End(); ++i)
514 if (allProperties.Size() > 0) {
525 if (properties && properties->IsObject()) {
527 for (ConstMemberIterator itr = properties->MemberBegin(); itr != properties->MemberEnd(); ++itr) {
539 for (ConstMemberIterator itr = v->MemberBegin(); itr != v->MemberEnd(); ++itr) {
547 if (required && required->IsArray())
548 for (ConstValueIterator itr = required->Begin(); itr != required->End(); ++itr)
549 if (itr->IsString()) {
557 if (dependencies && dependencies->IsObject()) {
560 for (ConstMemberIterator itr = dependencies->MemberBegin(); itr != dependencies->MemberEnd(); ++itr) {
563 if (itr->value.IsArray()) {
566 for (ConstValueIterator targetItr = itr->value.Begin(); targetItr != itr->value.End(); ++targetItr) {
572 else if (itr->value.IsObject()) {
574 schemaDocument->CreateSchema(&
properties_[sourceIndex].dependenciesSchema, q.Append(itr->name,
allocator_), itr->value, document);
585 else if (v->IsObject())
596 schemaDocument->CreateSchema(&
itemsList_, q, *v, document);
597 else if (v->IsArray()) {
600 for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr, index++)
611 else if (v->IsObject())
637 if (v->IsNumber() && v->GetDouble() > 0.0)
648 AllocatorType::Free(
enum_);
660 #if CEREAL_RAPIDJSON_SCHEMA_HAS_REGEX
705 bool otherValid =
false;
710 bool patternValid =
true;
711 for (
SizeType i = 0; i < count; i++)
713 patternValid =
false;
724 if (!patternValid || !otherValid) {
729 else if (!patternValid && !otherValid) {
762 bool oneValid =
false;
851 if (internal::CountStringCodePoint<EncodingType>(str, length, &count)) {
946 if (
properties_[index].schema->defaultValueLength_ == 0 )
967 if (
source.dependencies) {
974 else if (
source.dependenciesSchema) {
976 if (!dependenciesValidator->
IsValid())
1017 #define CEREAL_RAPIDJSON_STRING_(name, ...) \
1018 static const ValueType& Get##name##String() {\
1019 static const Ch s[] = { __VA_ARGS__, '\0' };\
1020 static const ValueType v(s, static_cast<SizeType>(sizeof(s) / sizeof(Ch) - 1));\
1037 CEREAL_RAPIDJSON_STRING_(Properties, 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
1039 CEREAL_RAPIDJSON_STRING_(Dependencies, '
d', 'e', 'p', 'e', 'n', '
d', 'e', 'n', 'c', 'i', 'e', 's')
1040 CEREAL_RAPIDJSON_STRING_(PatternProperties, 'p', '
a', 't', 't', 'e', 'r', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
1041 CEREAL_RAPIDJSON_STRING_(AdditionalProperties, '
a', '
d', '
d', 'i', 't', 'i', 'o', 'n', '
a', 'l', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
1042 CEREAL_RAPIDJSON_STRING_(MinProperties, 'm', 'i', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
1043 CEREAL_RAPIDJSON_STRING_(MaxProperties, 'm', '
a', 'x', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
1047 CEREAL_RAPIDJSON_STRING_(AdditionalItems, '
a', '
d', '
d', 'i', 't', 'i', 'o', 'n', '
a', 'l', 'I', 't', 'e', 'm', 's')
1048 CEREAL_RAPIDJSON_STRING_(UniqueItems, 'u', 'n', 'i', 'q', 'u', 'e', 'I', 't', 'e', 'm', 's')
1054 CEREAL_RAPIDJSON_STRING_(ExclusiveMinimum, 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', 'M', 'i', 'n', 'i', 'm', 'u', 'm')
1055 CEREAL_RAPIDJSON_STRING_(ExclusiveMaximum, 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', 'M', '
a', 'x', 'i', 'm', 'u', 'm')
1056 CEREAL_RAPIDJSON_STRING_(MultipleOf, 'm', 'u', 'l', 't', 'i', 'p', 'l', 'e', 'O', 'f')
1059 #undef CEREAL_RAPIDJSON_STRING_
1073 #if CEREAL_RAPIDJSON_SCHEMA_USE_INTERNALREGEX
1075 #elif CEREAL_RAPIDJSON_SCHEMA_USE_STDREGEX
1089 template <
typename V1,
typename V2>
1091 for (
typename V1::ConstValueIterator itr =
a.Begin(); itr !=
a.End(); ++itr)
1099 typename ValueType::ConstMemberIterator itr =
value.FindMember(name);
1100 return itr !=
value.MemberEnd() ? &(itr->value) : 0;
1111 if (v->IsUint64() && v->GetUint64() <=
SizeType(~0))
1112 out =
static_cast<SizeType>(v->GetUint64());
1117 if (v->IsArray() && v->Size() > 0) {
1119 out.
count = v->Size();
1123 schemaDocument.CreateSchema(&out.
schemas[i], q.Append(i,
allocator_), (*v)[i], document);
1130 #if CEREAL_RAPIDJSON_SCHEMA_USE_INTERNALREGEX
1131 template <
typename ValueType>
1133 if (
value.IsString()) {
1137 AllocatorType::Free(r);
1149 #elif CEREAL_RAPIDJSON_SCHEMA_USE_STDREGEX
1150 template <
typename ValueType>
1152 if (
value.IsString()) {
1155 return new (r)
RegexType(
value.GetString(), std::size_t(
value.GetStringLength()), std::regex_constants::ECMAScript);
1157 catch (
const std::regex_error&) {
1158 AllocatorType::Free(r);
1165 std::match_results<const Ch*> r;
1166 return std::regex_search(str, str + length, r, *pattern);
1169 template <
typename ValueType>
1223 SizeType len = name.GetStringLength();
1224 const Ch* str = name.GetString();
1226 if (
properties_[index].name.GetStringLength() == len &&
1348 double a = std::abs(
d), b = std::abs(
multipleOf_.GetDouble());
1349 double q = std::floor(
a / b);
1350 double r =
a - q * b;
1445 template<
typename Stack,
typename Ch>
1448 *documentStack.template Push<Ch>() =
'/';
1450 size_t length =
static_cast<size_t>((
sizeof(
SizeType) == 4 ?
u32toa(index, buffer) :
u64toa(index, buffer)) - buffer);
1451 for (
size_t i = 0; i < length; i++)
1452 *documentStack.template Push<Ch>() =
static_cast<Ch
>(buffer[i]);
1457 template <
typename Stack>
1461 char *buffer = documentStack.template Push<char>(1 + 10);
1464 documentStack.template Pop<char>(
static_cast<size_t>(10 - (end - buffer)));
1467 char *buffer = documentStack.template Push<char>(1 + 20);
1470 documentStack.template Pop<char>(
static_cast<size_t>(20 - (end - buffer)));
1480 template <
typename SchemaDocumentType>
1483 typedef typename SchemaDocumentType::Ch
Ch;
1501 template <
typename ValueT,
typename Allocator = CrtAllocator>
1508 typedef typename EncodingType::Ch
Ch;
1513 template <
typename,
typename,
typename>
1561 else if (refEntry->
schema)
1564 refEntry->~SchemaRefEntry();
1572 #if CEREAL_RAPIDJSON_HAS_CXX11_RVALUE_REFS
1582 uri_(std::move(rhs.uri_))
1584 rhs.remoteProvider_ = 0;
1586 rhs.ownAllocator_ = 0;
1594 schemaMap_.template Pop<SchemaEntry>(1)->~SchemaEntry();
1644 for (
typename ValueType::ConstMemberIterator itr = v.MemberBegin(); itr != v.MemberEnd(); ++itr)
1648 for (
SizeType i = 0; i < v.Size(); i++)
1665 static const Ch kRefString[] = {
'$',
'r',
'e',
'f',
'\0' };
1666 static const ValueType kRefValue(kRefString, 4);
1668 typename ValueType::ConstMemberIterator itr = v.FindMember(kRefValue);
1669 if (itr == v.MemberEnd())
1672 if (itr->value.IsString()) {
1673 SizeType len = itr->value.GetStringLength();
1675 const Ch* s = itr->value.GetString();
1677 while (i < len && s[i] !=
'#')
1695 else if (s[i] ==
'#') {
1713 if (
pointer == target->pointer)
1714 return target->schema;
1720 if (schema == target->schema)
1721 return target->pointer;
1761 typename SchemaDocumentType,
1774 typedef typename EncodingType::Ch
Ch;
1786 const SchemaDocumentType& schemaDocument,
1787 StateAllocator* allocator = 0,
1792 root_(schemaDocument.GetRoot()),
1816 const SchemaDocumentType& schemaDocument,
1817 OutputHandler& outputHandler,
1818 StateAllocator* allocator = 0,
1823 root_(schemaDocument.GetRoot()),
1895 exclusive ? &SchemaType::GetExclusiveMaximumString : 0);
1899 exclusive ? &SchemaType::GetExclusiveMaximumString : 0);
1903 exclusive ? &SchemaType::GetExclusiveMaximumString : 0);
1907 exclusive ? &SchemaType::GetExclusiveMinimumString : 0);
1911 exclusive ? &SchemaType::GetExclusiveMinimumString : 0);
1915 exclusive ? &SchemaType::GetExclusiveMinimumString : 0);
1978 for (
SizeType i = 0; i < count; ++i)
2033 for (
SizeType i = 0; i < count; ++i) {
2038 AddErrorArray(SchemaType::GetAnyOfString(), subvalidators, count);
2041 AddErrorArray(SchemaType::GetOneOfString(), subvalidators, count);
2048 #define CEREAL_RAPIDJSON_STRING_(name, ...) \
2049 static const StringRefType& Get##name##String() {\
2050 static const Ch s[] = { __VA_ARGS__, '\0' };\
2051 static const StringRefType v(s, static_cast<SizeType>(sizeof(s) / sizeof(Ch) - 1)); \
2055 CEREAL_RAPIDJSON_STRING_(InstanceRef,
'i',
'n',
's',
't',
'a',
'n',
'c',
'e',
'R',
'e',
'f')
2059 CEREAL_RAPIDJSON_STRING_(
Disallowed, '
d', 'i', 's', '
a', 'l', 'l', 'o', 'w', 'e', '
d')
2062 CEREAL_RAPIDJSON_STRING_(Duplicates, '
d', 'u', 'p', 'l', 'i', 'c', '
a', 't', 'e', 's')
2064 #undef CEREAL_RAPIDJSON_STRING_
2066 #if CEREAL_RAPIDJSON_SCHEMA_VERBOSE
2067 #define CEREAL_RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() \
2068 CEREAL_RAPIDJSON_MULTILINEMACRO_BEGIN\
2069 *documentStack_.template Push<Ch>() = '\0';\
2070 documentStack_.template Pop<Ch>(1);\
2071 internal::PrintInvalidDocument(documentStack_.template Bottom<Ch>());\
2072 CEREAL_RAPIDJSON_MULTILINEMACRO_END
2074 #define CEREAL_RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_()
2077 #define CEREAL_RAPIDJSON_SCHEMA_HANDLE_BEGIN_(method, arg1)\
2078 if (!valid_) return false; \
2079 if (!BeginValue() || !CurrentSchema().method arg1) {\
2080 CEREAL_RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_();\
2081 return valid_ = false;\
2084 #define CEREAL_RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2)\
2085 for (Context* context = schemaStack_.template Bottom<Context>(); context != schemaStack_.template End<Context>(); context++) {\
2086 if (context->hasher)\
2087 static_cast<HasherType*>(context->hasher)->method arg2;\
2088 if (context->validators)\
2089 for (SizeType i_ = 0; i_ < context->validatorCount; i_++)\
2090 static_cast<GenericSchemaValidator*>(context->validators[i_])->method arg2;\
2091 if (context->patternPropertiesValidators)\
2092 for (SizeType i_ = 0; i_ < context->patternPropertiesValidatorCount; i_++)\
2093 static_cast<GenericSchemaValidator*>(context->patternPropertiesValidators[i_])->method arg2;\
2096 #define CEREAL_RAPIDJSON_SCHEMA_HANDLE_END_(method, arg2)\
2097 return valid_ = EndValue() && (!outputHandler_ || outputHandler_->method arg2)
2099 #define CEREAL_RAPIDJSON_SCHEMA_HANDLE_VALUE_(method, arg1, arg2) \
2100 CEREAL_RAPIDJSON_SCHEMA_HANDLE_BEGIN_ (method, arg1);\
2101 CEREAL_RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2);\
2102 CEREAL_RAPIDJSON_SCHEMA_HANDLE_END_ (method, arg2)
2123 if (!
valid_)
return false;
2131 if (!
valid_)
return false;
2144 if (!
valid_)
return false;
2150 #undef CEREAL_RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_
2151 #undef CEREAL_RAPIDJSON_SCHEMA_HANDLE_BEGIN_
2152 #undef CEREAL_RAPIDJSON_SCHEMA_HANDLE_PARALLEL_
2153 #undef CEREAL_RAPIDJSON_SCHEMA_HANDLE_VALUE_
2158 #if CEREAL_RAPIDJSON_SCHEMA_VERBOSE
2167 StateAllocator::Free(v);
2181 StateAllocator::Free(h);
2189 StateAllocator::Free(p);
2198 const SchemaDocumentType& schemaDocument,
2200 const char* basePath,
size_t basePathSize,
2204 StateAllocator* allocator = 0,
2223 if (basePath && basePathSize)
2224 memcpy(
documentStack_.template Push<char>(basePathSize), basePath, basePathSize);
2245 typename Context::PatternValidatorType patternValidatorType =
CurrentContext().valuePatternValidatorType;
2251 CurrentContext().objectPatternValidatorType = patternValidatorType;
2252 ISchemaValidator**& va =
CurrentContext().patternPropertiesValidators;
2254 va =
static_cast<ISchemaValidator**
>(
MallocState(
sizeof(ISchemaValidator*) * count));
2255 for (
SizeType i = 0; i < count; i++)
2268 #if CEREAL_RAPIDJSON_SCHEMA_VERBOSE
2283 if (context.valueUniqueness) {
2288 if (itr->GetUint64() == h) {
2306 for (
SizeType i = 0; i < len; i++) {
2307 if (str[i] ==
'~') {
2311 else if (str[i] ==
'/') {
2325 a->~HashCodeArray();
2326 StateAllocator::Free(
a);
2334 ((parent && instancePointer.GetTokenCount() > 0)
2335 ?
PointerType(instancePointer.GetTokens(), instancePointer.GetTokenCount() - 1)
2336 : instancePointer).StringifyUriFragment(sb);
2352 if (member ==
error_.MemberEnd())
2355 if (member->value.IsObject()) {
2358 member->value = errors;
2364 void AddCurrentError(
const typename SchemaType::ValueType& keyword,
bool parent =
false) {
2376 const typename SchemaType::ValueType& (*exclusive)() = 0) {
2386 ISchemaValidator** subvalidators,
SizeType count) {
2388 for (
SizeType i = 0; i < count; ++i)
2412 #if CEREAL_RAPIDJSON_SCHEMA_VERBOSE
2433 unsigned parseFlags,
2434 typename InputStream,
2435 typename SourceEncoding,
2441 typedef typename InputStream::Ch
Ch;
2451 template <
typename Handler>
2483 const SchemaDocumentType&
sd_;
2495 CEREAL_RAPIDJSON_DIAG_POP
#define CEREAL_RAPIDJSON_ASSERT(x)
Definition: json.hpp:50
EncodingType
Definition: Xml.h:26
C-runtime library allocator.
Definition: allocators.h:75
(Constant) member iterator for a JSON object value
Definition: document.h:105
SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator.
Definition: reader.h:537
JSON schema document.
Definition: schema.h:1502
const SchemaType * GetTypeless() const
Definition: schema.h:1725
internal::Stack< Allocator > schemaRef_
Definition: schema.h:1736
bool HandleRefSchema(const PointerType &source, const SchemaType **schema, const ValueType &v, const ValueType &document)
Definition: schema.h:1664
void CreateSchemaRecursive(const SchemaType **schema, const PointerType &pointer, const ValueType &v, const ValueType &document)
Definition: schema.h:1635
static const size_t kInitialSchemaMapSize
Definition: schema.h:1727
const SchemaType & GetRoot() const
Get the root schema.
Definition: schema.h:1607
const SchemaType * root_
Root schema.
Definition: schema.h:1733
static const size_t kInitialSchemaRefSize
Definition: schema.h:1728
GenericSchemaDocument & operator=(const GenericSchemaDocument &)
Prohibit assignment.
const SchemaType * GetSchema(const PointerType &pointer) const
Definition: schema.h:1711
~GenericSchemaDocument()
Destructor.
Definition: schema.h:1592
URIType uri_
Definition: schema.h:1737
SchemaType * typeless_
Definition: schema.h:1734
internal::Stack< Allocator > schemaMap_
Definition: schema.h:1735
Allocator * allocator_
Definition: schema.h:1731
Allocator * ownAllocator_
Definition: schema.h:1732
IGenericRemoteSchemaDocumentProvider< GenericSchemaDocument > IRemoteSchemaDocumentProviderType
Definition: schema.h:1505
void CreateSchema(const SchemaType **schema, const PointerType &pointer, const ValueType &v, const ValueType &document)
Definition: schema.h:1652
EncodingType::Ch Ch
Definition: schema.h:1508
Allocator AllocatorType
Definition: schema.h:1506
GenericValue< EncodingType, Allocator > URIType
Definition: schema.h:1511
internal::Schema< GenericSchemaDocument > SchemaType
Definition: schema.h:1509
ValueType::EncodingType EncodingType
Definition: schema.h:1507
PointerType GetPointer(const SchemaType *schema) const
Definition: schema.h:1718
ValueT ValueType
Definition: schema.h:1504
GenericSchemaDocument(const GenericSchemaDocument &)
Prohibit copying.
IRemoteSchemaDocumentProviderType * remoteProvider_
Definition: schema.h:1730
GenericSchemaDocument(const ValueType &document, const Ch *uri=0, SizeType uriLength=0, IRemoteSchemaDocumentProviderType *remoteProvider=0, Allocator *allocator=0)
Constructor.
Definition: schema.h:1526
GenericPointer< ValueType, Allocator > PointerType
Definition: schema.h:1510
const URIType & GetURI() const
Definition: schema.h:1604
JSON Schema Validator.
Definition: schema.h:1768
static const size_t kDefaultDocumentStackCapacity
Definition: schema.h:2400
virtual void DestroryHasher(void *hasher)
Definition: schema.h:2178
Context & CurrentContext()
Definition: schema.h:2396
ValueType missingDependents_
Definition: schema.h:2410
void AddError(ValueType &keyword, ValueType &error)
Definition: schema.h:2350
void BelowMinimum(int64_t actual, const SValue &expected, bool exclusive)
Definition: schema.h:1905
const ValueType & GetError() const
Definition: schema.h:1862
CEREAL_RAPIDJSON_FORCEINLINE void PushSchema(const SchemaType &schema)
Definition: schema.h:2320
StateAllocator * ownStateAllocator_
Definition: schema.h:2404
StateAllocator * stateAllocator_
Definition: schema.h:2403
GenericSchemaValidator(const SchemaDocumentType &schemaDocument, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)
Constructor without output handler.
Definition: schema.h:1785
void DisallowedValue()
Definition: schema.h:2015
void AddCurrentError(const typename SchemaType::ValueType &keyword, bool parent=false)
Definition: schema.h:2364
void TooLong(const Ch *str, SizeType length, SizeType expected)
Definition: schema.h:1918
void AddDependencySchemaError(const SValue &sourceName, ISchemaValidator *subvalidator)
Definition: schema.h:2001
void PropertyViolations(ISchemaValidator **subvalidators, SizeType count)
Definition: schema.h:1977
void DisallowedItem(SizeType index)
Definition: schema.h:1932
CEREAL_RAPIDJSON_FORCEINLINE void PopSchema()
Definition: schema.h:2322
bool String(const Ch *str, SizeType length, bool copy)
Definition: schema.h:2113
bool BeginValue()
Definition: schema.h:2233
SchemaType::SValue SValue
Definition: schema.h:1773
~GenericSchemaValidator()
Destructor.
Definition: schema.h:1840
void StartMissingProperties()
Definition: schema.h:1962
void NotAllOf(ISchemaValidator **subvalidators, SizeType count)
Definition: schema.h:2032
const SchemaDocumentType * schemaDocument_
Definition: schema.h:2401
GenericValue< EncodingType, StateAllocator > ValueType
Definition: schema.h:1776
void DisallowedProperty(const Ch *name, SizeType length)
Definition: schema.h:1981
void Reset()
Reset the internal states.
Definition: schema.h:1846
void AboveMaximum(int64_t actual, const SValue &expected, bool exclusive)
Definition: schema.h:1893
virtual void FreeState(void *p)
Definition: schema.h:2188
bool EndMissingProperties()
Definition: schema.h:1968
void MergeError(ValueType &other)
Definition: schema.h:2369
bool StartObject()
Definition: schema.h:2116
PointerType GetInvalidSchemaPointer() const
Gets the JSON pointer pointed to the invalid schema.
Definition: schema.h:1865
void NotMultipleOf(uint64_t actual, const SValue &expected)
Definition: schema.h:1887
GenericStringRef< Ch > StringRefType
Definition: schema.h:1775
bool valid_
Definition: schema.h:2411
bool EndArray(SizeType elementCount)
Definition: schema.h:2143
void AddExpectedType(const typename SchemaType::ValueType &expectedType)
Definition: schema.h:2022
bool Key(const Ch *str, SizeType len, bool copy)
Definition: schema.h:2122
bool Null()
Definition: schema.h:2104
const SchemaType & root_
Definition: schema.h:2402
void StartDependencyErrors()
Definition: schema.h:1987
void TooShort(const Ch *str, SizeType length, SizeType expected)
Definition: schema.h:1922
void TooManyItems(SizeType actualCount, SizeType expectedCount)
Definition: schema.h:1941
ValueType & GetError()
Gets the error object.
Definition: schema.h:1861
virtual void * MallocState(size_t size)
Definition: schema.h:2184
void DuplicateItems(SizeType index1, SizeType index2)
Definition: schema.h:1945
StateAllocator & GetStateAllocator()
Definition: schema.h:2227
void AddMissingDependentProperty(const SValue &targetName)
Definition: schema.h:1993
GenericSchemaValidator(const SchemaDocumentType &schemaDocument, const SchemaType &root, const char *basePath, size_t basePathSize, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)
Definition: schema.h:2197
EncodingType::Ch Ch
Definition: schema.h:1774
void AddMissingProperty(const SValue &name)
Definition: schema.h:1965
virtual bool IsValid() const
Checks whether the current state is valid.
Definition: schema.h:1858
const Context & CurrentContext() const
Definition: schema.h:2397
void AboveMaximum(uint64_t actual, const SValue &expected, bool exclusive)
Definition: schema.h:1897
internal::Stack< StateAllocator > documentStack_
stack to store the current path of validating document (Ch)
Definition: schema.h:2406
void StartDisallowedType()
Definition: schema.h:2019
ValueType error_
Definition: schema.h:2408
bool Bool(bool b)
Definition: schema.h:2105
bool Uint(unsigned u)
Definition: schema.h:2107
bool EndObject(SizeType memberCount)
Definition: schema.h:2130
void AddNumberError(const typename SchemaType::ValueType &keyword, ValueType &actual, const SValue &expected, const typename SchemaType::ValueType &(*exclusive)()=0)
Definition: schema.h:2375
static const size_t kDefaultSchemaStackCapacity
Definition: schema.h:2399
void NoneOf(ISchemaValidator **subvalidators, SizeType count)
Definition: schema.h:2037
void TooFewProperties(SizeType actualCount, SizeType expectedCount)
Definition: schema.h:1958
void NotMultipleOf(int64_t actual, const SValue &expected)
Definition: schema.h:1884
bool EndDependencyErrors()
Definition: schema.h:2005
const Ch * GetInvalidSchemaKeyword() const
Gets the keyword of invalid schema.
Definition: schema.h:1870
internal::Hasher< EncodingType, StateAllocator > HasherType
Definition: schema.h:2195
bool StartArray()
Definition: schema.h:2137
virtual void * CreateHasher()
Definition: schema.h:2170
void AboveMaximum(double actual, const SValue &expected, bool exclusive)
Definition: schema.h:1901
bool Uint64(uint64_t u)
Definition: schema.h:2109
virtual uint64_t GetHashCode(void *hasher)
Definition: schema.h:2174
OutputHandler * outputHandler_
Definition: schema.h:2407
PointerType GetInvalidDocumentPointer() const
Gets the JSON pointer pointed to the invalid value.
Definition: schema.h:1875
GenericSchemaValidator(const SchemaDocumentType &schemaDocument, OutputHandler &outputHandler, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)
Constructor with output handler.
Definition: schema.h:1815
void StartMissingDependentProperties()
Definition: schema.h:1990
bool Int64(int64_t i)
Definition: schema.h:2108
SchemaType::Context Context
Definition: schema.h:2193
SchemaDocumentType::SchemaType SchemaType
Definition: schema.h:1770
void Disallowed()
Definition: schema.h:2043
SchemaType::EncodingType EncodingType
Definition: schema.h:1772
void AppendToken(const Ch *str, SizeType len)
Definition: schema.h:2303
const SchemaType & CurrentSchema() const
Definition: schema.h:2395
void BelowMinimum(uint64_t actual, const SValue &expected, bool exclusive)
Definition: schema.h:1909
void NotOneOf(ISchemaValidator **subvalidators, SizeType count)
Definition: schema.h:2040
void TooManyProperties(SizeType actualCount, SizeType expectedCount)
Definition: schema.h:1954
bool Int(int i)
Definition: schema.h:2106
SchemaDocumentType::PointerType PointerType
Definition: schema.h:1771
void EndDisallowedType(const typename SchemaType::ValueType &actualType)
Definition: schema.h:2025
GenericValue< UTF8<>, StateAllocator > HashCodeArray
Definition: schema.h:2194
virtual void DestroySchemaValidator(ISchemaValidator *validator)
Definition: schema.h:2164
bool RawNumber(const Ch *str, SizeType length, bool copy)
Definition: schema.h:2111
internal::Stack< StateAllocator > schemaStack_
stack to store the current path of schema (BaseSchemaType *)
Definition: schema.h:2405
void NotMultipleOf(double actual, const SValue &expected)
Definition: schema.h:1890
bool EndValue()
Definition: schema.h:2264
bool Double(double d)
Definition: schema.h:2110
virtual ISchemaValidator * CreateSchemaValidator(const SchemaType &root)
Definition: schema.h:2156
void DoesNotMatch(const Ch *str, SizeType length)
Definition: schema.h:1926
void TooFewItems(SizeType actualCount, SizeType expectedCount)
Definition: schema.h:1937
void AddErrorArray(const typename SchemaType::ValueType &keyword, ISchemaValidator **subvalidators, SizeType count)
Definition: schema.h:2385
void AddErrorLocation(ValueType &result, bool parent)
Definition: schema.h:2331
ValueType currentError_
Definition: schema.h:2409
void EndMissingDependentProperties(const SValue &sourceName)
Definition: schema.h:1996
void BelowMinimum(double actual, const SValue &expected, bool exclusive)
Definition: schema.h:1913
Represents an in-memory output stream.
Definition: stringbuffer.h:41
void Clear()
Definition: stringbuffer.h:60
Ch * Push(size_t count)
Definition: stringbuffer.h:69
size_t GetSize() const
Get the size of string in bytes in the string buffer.
Definition: stringbuffer.h:82
const Ch * GetString() const
Definition: stringbuffer.h:73
Definition: schema.h:1481
virtual ~IGenericRemoteSchemaDocumentProvider()
Definition: schema.h:1485
virtual const SchemaDocumentType * GetRemoteDocument(const Ch *uri, SizeType length)=0
SchemaDocumentType::Ch Ch
Definition: schema.h:1483
Default memory allocator used by the parser and DOM.
Definition: allocators.h:115
A helper class for parsing with validation.
Definition: schema.h:2438
ValueType error_
Definition: schema.h:2490
PointerType invalidSchemaPointer_
Definition: schema.h:2486
SchemaDocumentType::PointerType PointerType
Definition: schema.h:2440
const Ch * invalidSchemaKeyword_
Definition: schema.h:2487
bool IsValid() const
Definition: schema.h:2475
bool isValid_
Definition: schema.h:2491
const PointerType & GetInvalidDocumentPointer() const
Definition: schema.h:2478
InputStream::Ch Ch
Definition: schema.h:2441
bool operator()(Handler &handler)
Definition: schema.h:2452
const ValueType & GetError() const
Definition: schema.h:2479
StackAllocator allocator_
Definition: schema.h:2489
ParseResult parseResult_
Definition: schema.h:2485
const SchemaDocumentType & sd_
Definition: schema.h:2483
const PointerType & GetInvalidSchemaPointer() const
Definition: schema.h:2476
const Ch * GetInvalidSchemaKeyword() const
Definition: schema.h:2477
PointerType invalidDocumentPointer_
Definition: schema.h:2488
const ParseResult & GetParseResult() const
Definition: schema.h:2474
SchemaValidatingReader(InputStream &is, const SchemaDocumentType &sd)
Constructor.
Definition: schema.h:2449
GenericValue< SourceEncoding, StackAllocator > ValueType
Definition: schema.h:2442
InputStream & is_
Definition: schema.h:2482
bool Search(InputStream &is)
Definition: regex.h:640
Regular expression engine with subset of ECMAscript grammar.
Definition: regex.h:114
bool IsValid() const
Definition: regex.h:135
bool WriteBuffer(Type type, const void *data, size_t len)
Definition: schema.h:292
static const size_t kDefaultSize
Definition: schema.h:279
bool Bool(bool b)
Definition: schema.h:227
bool Uint64(uint64_t u)
Definition: schema.h:231
bool StartObject()
Definition: schema.h:250
bool Key(const Ch *str, SizeType len, bool copy)
Definition: schema.h:251
bool StartArray()
Definition: schema.h:261
Encoding::Ch Ch
Definition: schema.h:222
bool Uint(unsigned u)
Definition: schema.h:229
bool Null()
Definition: schema.h:226
bool EndObject(SizeType memberCount)
Definition: schema.h:252
Hasher(Allocator *allocator=0, size_t stackCapacity=kDefaultSize)
Definition: schema.h:224
bool Double(double d)
Definition: schema.h:232
bool String(const Ch *str, SizeType len, bool)
Definition: schema.h:245
bool Int(int i)
Definition: schema.h:228
bool WriteNumber(const Number &n)
Definition: schema.h:290
uint64_t GetHashCode() const
Definition: schema.h:273
static uint64_t Hash(uint64_t h, uint64_t d)
Definition: schema.h:302
bool EndArray(SizeType elementCount)
Definition: schema.h:262
bool Int64(int64_t i)
Definition: schema.h:230
bool IsValid() const
Definition: schema.h:271
bool RawNumber(const Ch *str, SizeType len, bool)
Definition: schema.h:240
Stack< Allocator > stack_
Definition: schema.h:309
bool WriteType(Type type)
Definition: schema.h:288
virtual void DestroySchemaValidator(ISchemaValidator *validator)=0
virtual void FreeState(void *p)=0
virtual void * CreateHasher()=0
virtual void DestroryHasher(void *hasher)=0
virtual void * MallocState(size_t size)=0
virtual uint64_t GetHashCode(void *hasher)=0
virtual ~ISchemaStateFactory()
Definition: schema.h:149
virtual ISchemaValidator * CreateSchemaValidator(const SchemaType &)=0
virtual bool IsValid() const =0
virtual ~ISchemaValidator()
Definition: schema.h:139
virtual void EndMissingDependentProperties(const SValue &sourceName)=0
virtual void DisallowedItem(SizeType index)=0
virtual void NotMultipleOf(int64_t actual, const SValue &expected)=0
SchemaType::Ch Ch
Definition: schema.h:165
SchemaType::SValue SValue
Definition: schema.h:166
virtual void AddMissingDependentProperty(const SValue &targetName)=0
virtual void TooManyProperties(SizeType actualCount, SizeType expectedCount)=0
virtual bool EndMissingProperties()=0
virtual void DuplicateItems(SizeType index1, SizeType index2)=0
virtual void AddMissingProperty(const SValue &name)=0
virtual void NotAllOf(ISchemaValidator **subvalidators, SizeType count)=0
virtual void AddDependencySchemaError(const SValue &souceName, ISchemaValidator *subvalidator)=0
virtual void Disallowed()=0
virtual void TooShort(const Ch *str, SizeType length, SizeType expected)=0
virtual void BelowMinimum(int64_t actual, const SValue &expected, bool exclusive)=0
virtual void AboveMaximum(double actual, const SValue &expected, bool exclusive)=0
virtual void AddExpectedType(const typename SchemaType::ValueType &expectedType)=0
virtual void DisallowedProperty(const Ch *name, SizeType length)=0
virtual void NoneOf(ISchemaValidator **subvalidators, SizeType count)=0
virtual void NotOneOf(ISchemaValidator **subvalidators, SizeType count)=0
virtual void AboveMaximum(uint64_t actual, const SValue &expected, bool exclusive)=0
virtual ~IValidationErrorHandler()
Definition: schema.h:168
virtual void AboveMaximum(int64_t actual, const SValue &expected, bool exclusive)=0
virtual bool EndDependencyErrors()=0
virtual void BelowMinimum(double actual, const SValue &expected, bool exclusive)=0
virtual void TooManyItems(SizeType actualCount, SizeType expectedCount)=0
virtual void DoesNotMatch(const Ch *str, SizeType length)=0
virtual void StartDisallowedType()=0
virtual void BelowMinimum(uint64_t actual, const SValue &expected, bool exclusive)=0
virtual void StartDependencyErrors()=0
virtual void PropertyViolations(ISchemaValidator **subvalidators, SizeType count)=0
virtual void StartMissingProperties()=0
virtual void DisallowedValue()=0
virtual void EndDisallowedType(const typename SchemaType::ValueType &actualType)=0
virtual void NotMultipleOf(uint64_t actual, const SValue &expected)=0
virtual void NotMultipleOf(double actual, const SValue &expected)=0
virtual void TooFewProperties(SizeType actualCount, SizeType expectedCount)=0
virtual void TooLong(const Ch *str, SizeType length, SizeType expected)=0
virtual void StartMissingDependentProperties()=0
virtual void TooFewItems(SizeType actualCount, SizeType expectedCount)=0
bool Int64(Context &context, int64_t i) const
Definition: schema.h:813
void CreateSchemaValidators(Context &context, const SchemaArray &schemas) const
Definition: schema.h:1216
bool exclusiveMaximum_
Definition: schema.h:1440
SizeType notValidatorIndex_
Definition: schema.h:1409
bool StartArray(Context &context) const
Definition: schema.h:988
bool CheckUint(Context &context, uint64_t i) const
Definition: schema.h:1283
bool StartObject(Context &context) const
Definition: schema.h:871
SchemaDocumentType::PointerType PointerType
Definition: schema.h:400
bool additionalProperties_
Definition: schema.h:1418
bool exclusiveMinimum_
Definition: schema.h:1439
bool Int(Context &context, int i) const
Definition: schema.h:801
bool Uint64(Context &context, uint64_t u) const
Definition: schema.h:819
bool uniqueItems_
Definition: schema.h:1430
SizeType maxLength_
Definition: schema.h:1434
bool FindPropertyIndex(const ValueType &name, SizeType *outIndex) const
Definition: schema.h:1222
AllocatorType * allocator_
Definition: schema.h:1397
static void AssignIfExist(SizeType &out, const ValueType &value, const ValueType &name)
Definition: schema.h:1109
IValidationErrorHandler< Schema > ErrorHandler
Definition: schema.h:406
Schema(SchemaDocumentType *schemaDocument, const PointerType &p, const ValueType &value, const ValueType &document, AllocatorType *allocator)
Definition: schema.h:409
SizeType validatorCount_
Definition: schema.h:1408
SValue maximum_
Definition: schema.h:1437
bool CheckDoubleMultipleOf(Context &context, double d) const
Definition: schema.h:1347
const PointerType & GetPointer() const
Definition: schema.h:672
SchemaArray oneOf_
Definition: schema.h:1405
SizeType minItems_
Definition: schema.h:1427
~Schema()
Definition: schema.h:647
static void AssignIfExist(bool &out, const ValueType &value, const ValueType &name)
Definition: schema.h:1103
void AddType(const ValueType &type)
Definition: schema.h:1175
bool additionalItems_
Definition: schema.h:1429
bool CheckDoubleMinimum(Context &context, double d) const
Definition: schema.h:1331
bool EndObject(Context &context, SizeType memberCount) const
Definition: schema.h:941
static bool IsPatternMatch(const RegexType *pattern, const Ch *str, SizeType)
Definition: schema.h:1145
SizeType maxProperties_
Definition: schema.h:1417
Property * properties_
Definition: schema.h:1411
void DisallowedType(Context &context, const ValueType &actualType) const
Definition: schema.h:1358
bool CheckInt(Context &context, int64_t i) const
Definition: schema.h:1235
const SchemaType * typeless_
Definition: schema.h:1400
internal::GenericRegex< EncodingType, AllocatorType > RegexType
Definition: schema.h:1074
SchemaDocumentType::AllocatorType AllocatorType
Definition: schema.h:399
bool EndArray(Context &context, SizeType elementCount) const
Definition: schema.h:1000
const SchemaType * additionalPropertiesSchema_
Definition: schema.h:1412
SizeType defaultValueLength_
Definition: schema.h:1442
bool Double(Context &context, double d) const
Definition: schema.h:825
bool CreateParallelValidator(Context &context) const
Definition: schema.h:1185
SchemaDocumentType::ValueType ValueType
Definition: schema.h:398
const SchemaType * additionalItemsSchema_
Definition: schema.h:1423
const SValue & GetURI() const
Definition: schema.h:668
RegexType * CreatePattern(const ValueType &value)
Definition: schema.h:1132
unsigned type_
Definition: schema.h:1407
bool String(Context &context, const Ch *str, SizeType length, bool) const
Definition: schema.h:843
bool CheckDoubleMaximum(Context &context, double d) const
Definition: schema.h:1339
void AddUniqueElement(V1 &a, const V2 &v)
Definition: schema.h:1090
SizeType enumCount_
Definition: schema.h:1402
EncodingType::Ch Ch
Definition: schema.h:402
SValue minimum_
Definition: schema.h:1436
PatternProperty * patternProperties_
Definition: schema.h:1413
ValueType::EncodingType EncodingType
Definition: schema.h:401
SchemaArray allOf_
Definition: schema.h:1403
SizeType minProperties_
Definition: schema.h:1416
bool hasSchemaDependencies_
Definition: schema.h:1421
GenericValue< EncodingType, AllocatorType > SValue
Definition: schema.h:405
bool Bool(Context &context, bool) const
Definition: schema.h:793
const SchemaType ** itemsTuple_
Definition: schema.h:1425
const SchemaType * not_
Definition: schema.h:1406
SizeType minLength_
Definition: schema.h:1433
bool Uint(Context &context, unsigned u) const
Definition: schema.h:807
bool Key(Context &context, const Ch *str, SizeType len, bool) const
Definition: schema.h:892
PointerType pointer_
Definition: schema.h:1399
SizeType maxItems_
Definition: schema.h:1428
Schema< SchemaDocumentType > SchemaType
Definition: schema.h:404
SchemaValidationContext< SchemaDocumentType > Context
Definition: schema.h:403
SValue uri_
Definition: schema.h:1398
bool Null(Context &context) const
Definition: schema.h:785
SizeType itemsTupleCount_
Definition: schema.h:1426
SizeType patternPropertyCount_
Definition: schema.h:1414
bool hasRequired_
Definition: schema.h:1420
CEREAL_RAPIDJSON_FORCEINLINE bool EndValue(Context &context) const
Definition: schema.h:703
SizeType propertyCount_
Definition: schema.h:1415
RegexType * pattern_
Definition: schema.h:1432
bool hasDependencies_
Definition: schema.h:1419
bool BeginValue(Context &context) const
Definition: schema.h:676
uint64_t * enum_
Definition: schema.h:1401
static const ValueType * GetMember(const ValueType &value, const ValueType &name)
Definition: schema.h:1098
void AssignIfExist(SchemaArray &out, SchemaDocumentType &schemaDocument, const PointerType &p, const ValueType &value, const ValueType &name, const ValueType &document)
Definition: schema.h:1115
SValue multipleOf_
Definition: schema.h:1438
SchemaValueType
Definition: schema.h:1062
@ kArraySchemaType
Definition: schema.h:1066
@ kNumberSchemaType
Definition: schema.h:1068
@ kStringSchemaType
Definition: schema.h:1067
@ kNullSchemaType
Definition: schema.h:1063
@ kObjectSchemaType
Definition: schema.h:1065
@ kIntegerSchemaType
Definition: schema.h:1069
@ kBooleanSchemaType
Definition: schema.h:1064
@ kTotalSchemaType
Definition: schema.h:1070
const SchemaType * itemsList_
Definition: schema.h:1424
SchemaArray anyOf_
Definition: schema.h:1404
A type-unsafe stack for storing different types of data.
Definition: stack.h:37
Concept for allocating, resizing and freeing memory block.
Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...
#define CEREAL_RAPIDJSON_NAMESPACE_BEGIN
provide custom rapidjson namespace (opening expression)
Definition: rapidjson.h:121
#define CEREAL_RAPIDJSON_NAMESPACE_END
provide custom rapidjson namespace (closing expression)
Definition: rapidjson.h:124
type
The type the bitset is encoded with.
Definition: bitset.hpp:44
Definition: document.h:416
char * u32toa(uint32_t value, char *buffer)
Definition: itoa.h:39
char * u64toa(uint64_t value, char *buffer)
Definition: itoa.h:126
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1282
const GenericPointer< typename T::ValueType > & pointer
Definition: pointer.h:1181
const CharType(& source)[N]
Definition: pointer.h:1204
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1181
Type
Type of JSON value.
Definition: rapidjson.h:644
@ kFalseType
false
Definition: rapidjson.h:646
@ kObjectType
object
Definition: rapidjson.h:648
@ kTrueType
true
Definition: rapidjson.h:647
@ kStringType
string
Definition: rapidjson.h:650
@ kNullType
null
Definition: rapidjson.h:645
@ kArrayType
array
Definition: rapidjson.h:649
@ kNumberType
number
Definition: rapidjson.h:651
#define CEREAL_RAPIDJSON_DELETE(x)
! customization point for global delete
Definition: rapidjson.h:631
#define CEREAL_RAPIDJSON_UINT64_C2(high32, low32)
Construct a 64-bit literal by a pair of 32-bit integer.
Definition: rapidjson.h:289
#define CEREAL_RAPIDJSON_NEW(TypeName)
! customization point for global new
Definition: rapidjson.h:627
CEREAL_RAPIDJSON_NAMESPACE_BEGIN typedef unsigned SizeType
Size type (for string lengths, array sizes, etc.)
Definition: rapidjson.h:384
GenericSchemaValidator< SchemaDocument > SchemaValidator
Definition: schema.h:2417
#define CEREAL_RAPIDJSON_SCHEMA_VERBOSE
Definition: schema.h:48
#define CEREAL_RAPIDJSON_INVALID_KEYWORD_RETURN(keyword)
Definition: schema.h:116
#define CEREAL_RAPIDJSON_SCHEMA_HANDLE_BEGIN_(method, arg1)
Definition: schema.h:2077
#define CEREAL_RAPIDJSON_STRING_(name,...)
Definition: schema.h:2048
GenericSchemaDocument< Value > SchemaDocument
GenericSchemaDocument using Value type.
Definition: schema.h:1741
#define CEREAL_RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2)
Definition: schema.h:2084
#define CEREAL_RAPIDJSON_SCHEMA_HANDLE_END_(method, arg2)
Definition: schema.h:2096
#define CEREAL_RAPIDJSON_SCHEMA_HANDLE_VALUE_(method, arg1, arg2)
Definition: schema.h:2099
IGenericRemoteSchemaDocumentProvider< SchemaDocument > IRemoteSchemaDocumentProvider
IGenericRemoteSchemaDocumentProvider using SchemaDocument.
Definition: schema.h:1743
signed __int64 int64_t
Definition: stdint.h:135
unsigned __int64 uint64_t
Definition: stdint.h:136
Definition: schema.h:1622
bool owned
Definition: schema.h:1632
~SchemaEntry()
Definition: schema.h:1624
PointerType pointer
Definition: schema.h:1630
SchemaType * schema
Definition: schema.h:1631
SchemaEntry(const PointerType &p, SchemaType *s, bool o, Allocator *allocator)
Definition: schema.h:1623
Definition: schema.h:1615
SchemaRefEntry(const PointerType &s, const PointerType &t, const SchemaType **outSchema, Allocator *allocator)
Definition: schema.h:1616
PointerType target
Definition: schema.h:1618
const SchemaType ** schema
Definition: schema.h:1619
PointerType source
Definition: schema.h:1617
Reference to a constant string (not taking a copy)
Definition: document.h:263
Result of parsing (wraps ParseErrorCode)
Definition: error.h:106
double d
Definition: schema.h:285
union internal::Hasher::Number::U u
bool arrayUniqueness
Definition: schema.h:389
SizeType validatorCount
Definition: schema.h:378
const SchemaType ** patternPropertiesSchemas
Definition: schema.h:381
ISchemaValidator ** validators
Definition: schema.h:377
SizeType arrayElementIndex
Definition: schema.h:385
bool valueUniqueness
Definition: schema.h:388
SizeType patternPropertiesValidatorCount
Definition: schema.h:380
ISchemaStateFactory< SchemaType > SchemaValidatorFactoryType
Definition: schema.h:318
const SchemaType * valueSchema
Definition: schema.h:373
bool * propertyExist
Definition: schema.h:386
void * hasher
Definition: schema.h:375
IValidationErrorHandler< SchemaType > ErrorHandlerType
Definition: schema.h:319
PatternValidatorType
Definition: schema.h:323
@ kPatternValidatorWithProperty
Definition: schema.h:325
@ kPatternValidatorWithAdditionalProperty
Definition: schema.h:326
@ kPatternValidatorOnly
Definition: schema.h:324
void * arrayElementHashCodes
Definition: schema.h:376
ISchemaValidator ** patternPropertiesValidators
Definition: schema.h:379
SizeType patternPropertiesSchemaCount
Definition: schema.h:382
Schema< SchemaDocumentType > SchemaType
Definition: schema.h:317
const Ch * invalidKeyword
Definition: schema.h:374
~SchemaValidationContext()
Definition: schema.h:351
ValueType::Ch Ch
Definition: schema.h:321
SchemaType::ValueType ValueType
Definition: schema.h:320
PatternValidatorType valuePatternValidatorType
Definition: schema.h:383
SchemaValidationContext(SchemaValidatorFactoryType &f, ErrorHandlerType &eh, const SchemaType *s)
Definition: schema.h:329
ErrorHandlerType & error_handler
Definition: schema.h:371
PatternValidatorType objectPatternValidatorType
Definition: schema.h:384
SchemaValidatorFactoryType & factory
Definition: schema.h:370
bool inArray
Definition: schema.h:387
const SchemaType * schema
Definition: schema.h:372
Definition: schema.h:1385
~PatternProperty()
Definition: schema.h:1387
RegexType * pattern
Definition: schema.h:1394
const SchemaType * schema
Definition: schema.h:1393
PatternProperty()
Definition: schema.h:1386
Definition: schema.h:1374
const SchemaType * dependenciesSchema
Definition: schema.h:1379
bool required
Definition: schema.h:1382
~Property()
Definition: schema.h:1376
const SchemaType * schema
Definition: schema.h:1378
SizeType dependenciesValidatorIndex
Definition: schema.h:1380
bool * dependencies
Definition: schema.h:1381
SValue name
Definition: schema.h:1377
Property()
Definition: schema.h:1375
Definition: schema.h:1081
SchemaArray()
Definition: schema.h:1082
const SchemaType ** schemas
Definition: schema.h:1084
~SchemaArray()
Definition: schema.h:1083
SizeType count
Definition: schema.h:1086
SizeType begin
Definition: schema.h:1085
static CEREAL_RAPIDJSON_FORCEINLINE void AppendIndexToken(Stack &documentStack, SizeType index)
Definition: schema.h:1459
Definition: schema.h:1446
static CEREAL_RAPIDJSON_FORCEINLINE void AppendIndexToken(Stack &documentStack, SizeType index)
Definition: schema.h:1447
int64_t i
Definition: schema.h:283
uint64_t u
Definition: schema.h:282