NDDEM
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
GenericSchemaDocument< ValueT, Allocator > Class Template Reference

JSON schema document. More...

#include <schema.h>

Classes

struct  SchemaEntry
 
struct  SchemaRefEntry
 

Public Types

typedef ValueT ValueType
 
typedef IGenericRemoteSchemaDocumentProvider< GenericSchemaDocumentIRemoteSchemaDocumentProviderType
 
typedef Allocator AllocatorType
 
typedef ValueType::EncodingType EncodingType
 
typedef EncodingType::Ch Ch
 
typedef internal::Schema< GenericSchemaDocumentSchemaType
 
typedef GenericPointer< ValueType, AllocatorPointerType
 
typedef GenericValue< EncodingType, AllocatorURIType
 

Public Member Functions

 GenericSchemaDocument (const ValueType &document, const Ch *uri=0, SizeType uriLength=0, IRemoteSchemaDocumentProviderType *remoteProvider=0, Allocator *allocator=0)
 Constructor. More...
 
 ~GenericSchemaDocument ()
 Destructor. More...
 
const URITypeGetURI () const
 
const SchemaTypeGetRoot () const
 Get the root schema. More...
 

Private Member Functions

 GenericSchemaDocument (const GenericSchemaDocument &)
 Prohibit copying. More...
 
GenericSchemaDocumentoperator= (const GenericSchemaDocument &)
 Prohibit assignment. More...
 
void CreateSchemaRecursive (const SchemaType **schema, const PointerType &pointer, const ValueType &v, const ValueType &document)
 
void CreateSchema (const SchemaType **schema, const PointerType &pointer, const ValueType &v, const ValueType &document)
 
bool HandleRefSchema (const PointerType &source, const SchemaType **schema, const ValueType &v, const ValueType &document)
 
const SchemaTypeGetSchema (const PointerType &pointer) const
 
PointerType GetPointer (const SchemaType *schema) const
 
const SchemaTypeGetTypeless () const
 

Private Attributes

IRemoteSchemaDocumentProviderTyperemoteProvider_
 
Allocatorallocator_
 
AllocatorownAllocator_
 
const SchemaTyperoot_
 Root schema. More...
 
SchemaTypetypeless_
 
internal::Stack< AllocatorschemaMap_
 
internal::Stack< AllocatorschemaRef_
 
URIType uri_
 

Static Private Attributes

static const size_t kInitialSchemaMapSize = 64
 
static const size_t kInitialSchemaRefSize = 64
 

Friends

class internal::Schema< GenericSchemaDocument >
 
template<typename , typename , typename >
class GenericSchemaValidator
 

Detailed Description

template<typename ValueT, typename Allocator = CrtAllocator>
class GenericSchemaDocument< ValueT, Allocator >

JSON schema document.

A JSON schema document is a compiled version of a JSON schema. It is basically a tree of internal::Schema.

Note
This is an immutable class (i.e. its instance cannot be modified after construction).
Template Parameters
ValueTType of JSON value (e.g. Value ), which also determine the encoding.
AllocatorAllocator type for allocating memory of this document.

Member Typedef Documentation

◆ AllocatorType

template<typename ValueT , typename Allocator = CrtAllocator>
typedef Allocator GenericSchemaDocument< ValueT, Allocator >::AllocatorType

◆ Ch

template<typename ValueT , typename Allocator = CrtAllocator>
typedef EncodingType::Ch GenericSchemaDocument< ValueT, Allocator >::Ch

◆ EncodingType

template<typename ValueT , typename Allocator = CrtAllocator>
typedef ValueType::EncodingType GenericSchemaDocument< ValueT, Allocator >::EncodingType

◆ IRemoteSchemaDocumentProviderType

template<typename ValueT , typename Allocator = CrtAllocator>
typedef IGenericRemoteSchemaDocumentProvider<GenericSchemaDocument> GenericSchemaDocument< ValueT, Allocator >::IRemoteSchemaDocumentProviderType

◆ PointerType

template<typename ValueT , typename Allocator = CrtAllocator>
typedef GenericPointer<ValueType, Allocator> GenericSchemaDocument< ValueT, Allocator >::PointerType

◆ SchemaType

template<typename ValueT , typename Allocator = CrtAllocator>
typedef internal::Schema<GenericSchemaDocument> GenericSchemaDocument< ValueT, Allocator >::SchemaType

◆ URIType

template<typename ValueT , typename Allocator = CrtAllocator>
typedef GenericValue<EncodingType, Allocator> GenericSchemaDocument< ValueT, Allocator >::URIType

◆ ValueType

template<typename ValueT , typename Allocator = CrtAllocator>
typedef ValueT GenericSchemaDocument< ValueT, Allocator >::ValueType

Constructor & Destructor Documentation

◆ GenericSchemaDocument() [1/2]

template<typename ValueT , typename Allocator = CrtAllocator>
GenericSchemaDocument< ValueT, Allocator >::GenericSchemaDocument ( const ValueType document,
const Ch uri = 0,
SizeType  uriLength = 0,
IRemoteSchemaDocumentProviderType remoteProvider = 0,
Allocator allocator = 0 
)
inlineexplicit

Constructor.

Compile a JSON document into schema document.

Parameters
documentA JSON document as source.
uriThe base URI of this schema document for purposes of violation reporting.
uriLengthLength of name, in code points.
remoteProviderAn optional remote schema document provider for resolving remote reference. Can be null.
allocatorAn optional allocator instance for allocating memory. Can be null.

◆ ~GenericSchemaDocument()

template<typename ValueT , typename Allocator = CrtAllocator>
GenericSchemaDocument< ValueT, Allocator >::~GenericSchemaDocument ( )
inline

Destructor.

◆ GenericSchemaDocument() [2/2]

template<typename ValueT , typename Allocator = CrtAllocator>
GenericSchemaDocument< ValueT, Allocator >::GenericSchemaDocument ( const GenericSchemaDocument< ValueT, Allocator > &  )
private

Prohibit copying.

Member Function Documentation

◆ CreateSchema()

template<typename ValueT , typename Allocator = CrtAllocator>
void GenericSchemaDocument< ValueT, Allocator >::CreateSchema ( const SchemaType **  schema,
const PointerType pointer,
const ValueType v,
const ValueType document 
)
inlineprivate

◆ CreateSchemaRecursive()

template<typename ValueT , typename Allocator = CrtAllocator>
void GenericSchemaDocument< ValueT, Allocator >::CreateSchemaRecursive ( const SchemaType **  schema,
const PointerType pointer,
const ValueType v,
const ValueType document 
)
inlineprivate

◆ GetPointer()

template<typename ValueT , typename Allocator = CrtAllocator>
PointerType GenericSchemaDocument< ValueT, Allocator >::GetPointer ( const SchemaType schema) const
inlineprivate

◆ GetRoot()

template<typename ValueT , typename Allocator = CrtAllocator>
const SchemaType& GenericSchemaDocument< ValueT, Allocator >::GetRoot ( ) const
inline

Get the root schema.

◆ GetSchema()

template<typename ValueT , typename Allocator = CrtAllocator>
const SchemaType* GenericSchemaDocument< ValueT, Allocator >::GetSchema ( const PointerType pointer) const
inlineprivate

◆ GetTypeless()

template<typename ValueT , typename Allocator = CrtAllocator>
const SchemaType* GenericSchemaDocument< ValueT, Allocator >::GetTypeless ( ) const
inlineprivate

◆ GetURI()

template<typename ValueT , typename Allocator = CrtAllocator>
const URIType& GenericSchemaDocument< ValueT, Allocator >::GetURI ( ) const
inline

◆ HandleRefSchema()

template<typename ValueT , typename Allocator = CrtAllocator>
bool GenericSchemaDocument< ValueT, Allocator >::HandleRefSchema ( const PointerType source,
const SchemaType **  schema,
const ValueType v,
const ValueType document 
)
inlineprivate

◆ operator=()

template<typename ValueT , typename Allocator = CrtAllocator>
GenericSchemaDocument& GenericSchemaDocument< ValueT, Allocator >::operator= ( const GenericSchemaDocument< ValueT, Allocator > &  )
private

Prohibit assignment.

Friends And Related Function Documentation

◆ GenericSchemaValidator

template<typename ValueT , typename Allocator = CrtAllocator>
template<typename , typename , typename >
friend class GenericSchemaValidator
friend

◆ internal::Schema< GenericSchemaDocument >

template<typename ValueT , typename Allocator = CrtAllocator>
friend class internal::Schema< GenericSchemaDocument >
friend

Member Data Documentation

◆ allocator_

template<typename ValueT , typename Allocator = CrtAllocator>
Allocator* GenericSchemaDocument< ValueT, Allocator >::allocator_
private

◆ kInitialSchemaMapSize

template<typename ValueT , typename Allocator = CrtAllocator>
const size_t GenericSchemaDocument< ValueT, Allocator >::kInitialSchemaMapSize = 64
staticprivate

◆ kInitialSchemaRefSize

template<typename ValueT , typename Allocator = CrtAllocator>
const size_t GenericSchemaDocument< ValueT, Allocator >::kInitialSchemaRefSize = 64
staticprivate

◆ ownAllocator_

template<typename ValueT , typename Allocator = CrtAllocator>
Allocator* GenericSchemaDocument< ValueT, Allocator >::ownAllocator_
private

◆ remoteProvider_

template<typename ValueT , typename Allocator = CrtAllocator>
IRemoteSchemaDocumentProviderType* GenericSchemaDocument< ValueT, Allocator >::remoteProvider_
private

◆ root_

template<typename ValueT , typename Allocator = CrtAllocator>
const SchemaType* GenericSchemaDocument< ValueT, Allocator >::root_
private

Root schema.

◆ schemaMap_

template<typename ValueT , typename Allocator = CrtAllocator>
internal::Stack<Allocator> GenericSchemaDocument< ValueT, Allocator >::schemaMap_
private

◆ schemaRef_

template<typename ValueT , typename Allocator = CrtAllocator>
internal::Stack<Allocator> GenericSchemaDocument< ValueT, Allocator >::schemaRef_
private

◆ typeless_

template<typename ValueT , typename Allocator = CrtAllocator>
SchemaType* GenericSchemaDocument< ValueT, Allocator >::typeless_
private

◆ uri_

template<typename ValueT , typename Allocator = CrtAllocator>
URIType GenericSchemaDocument< ValueT, Allocator >::uri_
private

The documentation for this class was generated from the following files: