40 lines
1.3 KiB
C++
40 lines
1.3 KiB
C++
#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
|