join 1.0
lightweight network framework library
Loading...
Searching...
No Matches
join::BasicJsonReader< ReadMode > Class Template Reference

JSON reader class. More...

#include <json.hpp>

Public Member Functions

 BasicJsonReader ()=default
 default constructor.
 
 BasicJsonReader (const BasicJsonReader &other)=delete
 copy constructor.
 
BasicJsonReader & operator= (const BasicJsonReader &other)=delete
 copy assignment.
 
 BasicJsonReader (BasicJsonReader &&other)=delete
 move constructor.
 
BasicJsonReader & operator= (BasicJsonReader &&other)=delete
 move assignment.
 
 ~BasicJsonReader ()=default
 destroy instance.
 
template<typename Handler >
int deserialize (const char *document, size_t length, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (const char *first, const char *last, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::string_view document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::stringstream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::istringstream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::fstream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::ifstream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::iostream &document, Handler &handler)
 deserialize a document.
 
template<typename Handler >
int deserialize (std::istream &document, Handler &handler)
 deserialize a document.
 

Protected Member Functions

template<typename ProbeType >
int read (ProbeType &document, Value &value)
 parse a document into a value.
 
template<typename ProbeType , typename Handler >
int read (ProbeType &document, Handler &&handler)
 parse a document, resetting the handler on failure.
 
template<typename ProbeType , typename Handler >
int readDocument (ProbeType &document, Handler &handler)
 parse a document.
 
template<typename ProbeType , typename Handler >
int readValue (ProbeType &document, Handler &handler, size_t depth)
 parse a JSON value.
 
template<typename ProbeType , typename Handler >
int readNull (ProbeType &document, Handler &handler)
 parse a null value.
 
template<typename ProbeType , typename Handler >
int readTrue (ProbeType &document, Handler &handler)
 parse a true value.
 
template<typename ProbeType , typename Handler >
int readFalse (ProbeType &document, Handler &handler)
 parse a false value.
 
template<typename ProbeType , typename Handler >
int readNumber (ProbeType &document, Handler &handler)
 parse a number value.
 
template<typename ProbeType >
int readHex (ProbeType &document, uint32_t &u)
 parse a 4-digit hexadecimal sequence..
 
template<typename ProbeType >
int readUnicode (ProbeType &document, std::string &output)
 parse unicode.
 
template<typename ProbeType >
int readEscaped (ProbeType &document, std::string &output)
 parse escaped sequence.
 
template<typename ProbeType , typename Handler >
int readString (ProbeType &document, Handler &handler, bool isKey=false)
 parse a string value.
 
template<typename ProbeType , typename Handler >
JOIN_ALWAYS_INLINE int readArray (ProbeType &document, Handler &handler, size_t depth)
 parse an array value.
 
template<typename ProbeType , typename Handler >
JOIN_ALWAYS_INLINE int readObject (ProbeType &document, Handler &handler, size_t depth)
 parse an object value.
 
std::string_view readUntilEscaped (dconv::StringProbe &document) noexcept
 read characters until escaped.
 
void readUntilEscaped (dconv::StringProbe &document, std::string &out) noexcept
 read characters until escaped.
 
void readUntilEscaped (dconv::StreamProbe &document, std::string &out) noexcept
 read characters until escaped.
 
int skipWhitespaces (dconv::StringProbe &document) noexcept
 skip whitespaces, and comments when comment parsing is enabled.
 
int skipWhitespaces (dconv::StreamProbe &document) noexcept
 skip whitespaces, and comments when comment parsing is enabled.
 
int skipWhitespacesAndComments (dconv::StringProbe &document) noexcept
 skip whitespaces and comments.
 
int skipWhitespacesAndComments (dconv::StreamProbe &document) noexcept
 skip whitespaces and comments.
 
int validateChunk (std::string_view chunk) noexcept
 validate the encoding of the last chunk read, when encoding validation is enabled.
 
constexpr bool isUpperAlpha (char c) noexcept
 check if upper case alphanumeric character.
 
constexpr bool isLowerAlpha (char c) noexcept
 check if lower case alphanumeric character.
 
constexpr bool isDigit (char c) noexcept
 check if digit.
 

Detailed Description

template<JsonReadMode ReadMode = JsonReadMode::None>
class join::BasicJsonReader< ReadMode >

JSON reader class.

Constructor & Destructor Documentation

◆ BasicJsonReader() [1/3]

template<JsonReadMode ReadMode = JsonReadMode::None>
join::BasicJsonReader< ReadMode >::BasicJsonReader ( )
default

default constructor.

◆ BasicJsonReader() [2/3]

template<JsonReadMode ReadMode = JsonReadMode::None>
join::BasicJsonReader< ReadMode >::BasicJsonReader ( const BasicJsonReader< ReadMode > & other)
delete

copy constructor.

Parameters
otherobject to copy.

◆ BasicJsonReader() [3/3]

template<JsonReadMode ReadMode = JsonReadMode::None>
join::BasicJsonReader< ReadMode >::BasicJsonReader ( BasicJsonReader< ReadMode > && other)
delete

move constructor.

Parameters
otherobject to move.

◆ ~BasicJsonReader()

template<JsonReadMode ReadMode = JsonReadMode::None>
join::BasicJsonReader< ReadMode >::~BasicJsonReader ( )
default

destroy instance.

Member Function Documentation

◆ deserialize() [1/9]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename Handler >
int join::BasicJsonReader< ReadMode >::deserialize ( const char * document,
size_t length,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to parse.
lengthThe length of the document to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [2/9]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename Handler >
int join::BasicJsonReader< ReadMode >::deserialize ( const char * first,
const char * last,
Handler & handler )
inline

deserialize a document.

Parameters
firstThe first character of the document to parse.
lastThe last character of the document to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [3/9]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename Handler >
int join::BasicJsonReader< ReadMode >::deserialize ( std::fstream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [4/9]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename Handler >
int join::BasicJsonReader< ReadMode >::deserialize ( std::ifstream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [5/9]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename Handler >
int join::BasicJsonReader< ReadMode >::deserialize ( std::iostream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [6/9]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename Handler >
int join::BasicJsonReader< ReadMode >::deserialize ( std::istream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [7/9]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename Handler >
int join::BasicJsonReader< ReadMode >::deserialize ( std::istringstream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [8/9]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename Handler >
int join::BasicJsonReader< ReadMode >::deserialize ( std::string_view document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ deserialize() [9/9]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename Handler >
int join::BasicJsonReader< ReadMode >::deserialize ( std::stringstream & document,
Handler & handler )
inline

deserialize a document.

Parameters
documentdocument to deserialize.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ isDigit()

template<JsonReadMode ReadMode = JsonReadMode::None>
bool join::BasicJsonReader< ReadMode >::isDigit ( char c)
inlineconstexprprotectednoexcept

check if digit.

Parameters
ccharacter to check.
Returns
true if digit, false otherwise.

◆ isLowerAlpha()

template<JsonReadMode ReadMode = JsonReadMode::None>
bool join::BasicJsonReader< ReadMode >::isLowerAlpha ( char c)
inlineconstexprprotectednoexcept

check if lower case alphanumeric character.

Parameters
ccharacter to check.
Returns
true if lower case alphanumeric character, false otherwise.

◆ isUpperAlpha()

template<JsonReadMode ReadMode = JsonReadMode::None>
bool join::BasicJsonReader< ReadMode >::isUpperAlpha ( char c)
inlineconstexprprotectednoexcept

check if upper case alphanumeric character.

Parameters
ccharacter to check.
Returns
true if upper case alphanumeric character, false otherwise.

◆ operator=() [1/2]

template<JsonReadMode ReadMode = JsonReadMode::None>
BasicJsonReader & join::BasicJsonReader< ReadMode >::operator= ( BasicJsonReader< ReadMode > && other)
delete

move assignment.

Parameters
otherobject to move.
Returns
a reference of the current object.

◆ operator=() [2/2]

template<JsonReadMode ReadMode = JsonReadMode::None>
BasicJsonReader & join::BasicJsonReader< ReadMode >::operator= ( const BasicJsonReader< ReadMode > & other)
delete

copy assignment.

Parameters
otherobject to copy.
Returns
a reference of the current object.

◆ read() [1/2]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
int join::BasicJsonReader< ReadMode >::read ( ProbeType & document,
Handler && handler )
inlineprotected

parse a document, resetting the handler on failure.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ read() [2/2]

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType >
int join::BasicJsonReader< ReadMode >::read ( ProbeType & document,
Value & value )
inlineprotected

parse a document into a value.

Parameters
documentdocument to parse.
valuevalue receiving the document.
Returns
0 on success, -1 otherwise.

◆ readArray()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
JOIN_ALWAYS_INLINE int join::BasicJsonReader< ReadMode >::readArray ( ProbeType & document,
Handler & handler,
size_t depth )
inlineprotected

parse an array value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
depthnumber of enclosing containers.
Returns
0 on success, -1 otherwise.

◆ readDocument()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
int join::BasicJsonReader< ReadMode >::readDocument ( ProbeType & document,
Handler & handler )
inlineprotected

parse a document.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ readEscaped()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType >
int join::BasicJsonReader< ReadMode >::readEscaped ( ProbeType & document,
std::string & output )
inlineprotected

parse escaped sequence.

Parameters
documentdocument to parse.
outputparse output string.
Returns
0 on success, -1 otherwise.

◆ readFalse()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
int join::BasicJsonReader< ReadMode >::readFalse ( ProbeType & document,
Handler & handler )
inlineprotected

parse a false value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ readHex()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType >
int join::BasicJsonReader< ReadMode >::readHex ( ProbeType & document,
uint32_t & u )
inlineprotected

parse a 4-digit hexadecimal sequence..

Parameters
documentdocument to parse.
uoutput variable to store the parsed hexadecimal value.
Returns
0 on success, -1 otherwise.

◆ readNull()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
int join::BasicJsonReader< ReadMode >::readNull ( ProbeType & document,
Handler & handler )
inlineprotected

parse a null value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ readNumber()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
int join::BasicJsonReader< ReadMode >::readNumber ( ProbeType & document,
Handler & handler )
inlineprotected

parse a number value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ readObject()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
JOIN_ALWAYS_INLINE int join::BasicJsonReader< ReadMode >::readObject ( ProbeType & document,
Handler & handler,
size_t depth )
inlineprotected

parse an object value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
depthnumber of enclosing containers.
Returns
0 on success, -1 otherwise.

◆ readString()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
int join::BasicJsonReader< ReadMode >::readString ( ProbeType & document,
Handler & handler,
bool isKey = false )
inlineprotected

parse a string value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
isKeyindicate whether the element to parse is a key or not.
Returns
0 on success, -1 otherwise.

◆ readTrue()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
int join::BasicJsonReader< ReadMode >::readTrue ( ProbeType & document,
Handler & handler )
inlineprotected

parse a true value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
Returns
0 on success, -1 otherwise.

◆ readUnicode()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType >
int join::BasicJsonReader< ReadMode >::readUnicode ( ProbeType & document,
std::string & output )
inlineprotected

parse unicode.

Parameters
documentdocument to parse.
outputparse output string.
Returns
0 on success, -1 otherwise.

◆ readUntilEscaped() [1/3]

template<JsonReadMode ReadMode = JsonReadMode::None>
void join::BasicJsonReader< ReadMode >::readUntilEscaped ( dconv::StreamProbe & document,
std::string & out )
inlineprotectednoexcept

read characters until escaped.

Parameters
documentdocument to parse.
outoutput buffer.

◆ readUntilEscaped() [2/3]

template<JsonReadMode ReadMode = JsonReadMode::None>
std::string_view join::BasicJsonReader< ReadMode >::readUntilEscaped ( dconv::StringProbe & document)
inlineprotectednoexcept

read characters until escaped.

Parameters
documentdocument to parse.
Returns
characters read.

◆ readUntilEscaped() [3/3]

template<JsonReadMode ReadMode = JsonReadMode::None>
void join::BasicJsonReader< ReadMode >::readUntilEscaped ( dconv::StringProbe & document,
std::string & out )
inlineprotectednoexcept

read characters until escaped.

Parameters
documentdocument to parse.
outoutput buffer.

◆ readValue()

template<JsonReadMode ReadMode = JsonReadMode::None>
template<typename ProbeType , typename Handler >
int join::BasicJsonReader< ReadMode >::readValue ( ProbeType & document,
Handler & handler,
size_t depth )
inlineprotected

parse a JSON value.

Parameters
documentdocument to parse.
handlerhandler receiving the document.
depthnumber of enclosing containers.
Returns
0 on success, -1 otherwise.

◆ skipWhitespaces() [1/2]

template<JsonReadMode ReadMode = JsonReadMode::None>
int join::BasicJsonReader< ReadMode >::skipWhitespaces ( dconv::StreamProbe & document)
inlineprotectednoexcept

skip whitespaces, and comments when comment parsing is enabled.

Parameters
documentdocument to parse.
Returns
0 on success, -1 otherwise.

◆ skipWhitespaces() [2/2]

template<JsonReadMode ReadMode = JsonReadMode::None>
int join::BasicJsonReader< ReadMode >::skipWhitespaces ( dconv::StringProbe & document)
inlineprotectednoexcept

skip whitespaces, and comments when comment parsing is enabled.

Parameters
documentdocument to parse.
Returns
0 on success, -1 otherwise.

◆ skipWhitespacesAndComments() [1/2]

template<JsonReadMode ReadMode = JsonReadMode::None>
int join::BasicJsonReader< ReadMode >::skipWhitespacesAndComments ( dconv::StreamProbe & document)
inlineprotectednoexcept

skip whitespaces and comments.

Parameters
documentdocument to parse.
Returns
0 on success, -1 otherwise.

◆ skipWhitespacesAndComments() [2/2]

template<JsonReadMode ReadMode = JsonReadMode::None>
int join::BasicJsonReader< ReadMode >::skipWhitespacesAndComments ( dconv::StringProbe & document)
inlineprotectednoexcept

skip whitespaces and comments.

Parameters
documentdocument to parse.
Returns
0 on success, -1 otherwise.

◆ validateChunk()

template<JsonReadMode ReadMode = JsonReadMode::None>
int join::BasicJsonReader< ReadMode >::validateChunk ( std::string_view chunk)
inlineprotectednoexcept

validate the encoding of the last chunk read, when encoding validation is enabled.

Parameters
chunklast chunk read.
Returns
0 on success, -1 otherwise.

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