#ifndef JSON_VALIDATOR_H #define JSON_VALIDATOR_H #include "JSONDebug.h" #ifdef JSON_VALIDATE #ifdef JSON_SECURITY_MAX_NEST_LEVEL #define DEPTH_PARAM ,size_t depth_param #define DEPTH_ARG(arg) ,arg #define INC_DEPTH()\ if (++depth_param > JSON_SECURITY_MAX_NEST_LEVEL){\ JSON_FAIL(JSON_TEXT("Exceeded JSON_SECURITY_MAX_NEST_LEVEL"));\ return false;\ } #else #define DEPTH_PARAM #define DEPTH_ARG(arg) #define INC_DEPTH() (void)0 #endif class JSONValidator { public: static bool isValidNumber(const json_char * & ptr) json_nothrow json_read_priority; static bool isValidMember(const json_char * & ptr DEPTH_PARAM) json_nothrow json_read_priority; static bool isValidString(const json_char * & ptr) json_nothrow json_read_priority; static bool isValidNamedObject(const json_char * & ptr DEPTH_PARAM) json_nothrow json_read_priority; static bool isValidObject(const json_char * & ptr DEPTH_PARAM) json_nothrow json_read_priority; static bool isValidArray(const json_char * & ptr DEPTH_PARAM) json_nothrow json_read_priority; static bool isValidRoot(const json_char * json) json_nothrow json_read_priority; #ifdef JSON_STREAM static bool isValidPartialRoot(const json_char * json) json_nothrow json_read_priority; #endif private: JSONValidator(void); }; #endif #endif