Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _json_tokener_h_
00013 #define _json_tokener_h_
00014
00015 #include "json_object.h"
00016
00017 enum json_tokener_error {
00018 json_tokener_success,
00019 json_tokener_continue,
00020 json_tokener_error_depth,
00021 json_tokener_error_parse_eof,
00022 json_tokener_error_parse_unexpected,
00023 json_tokener_error_parse_null,
00024 json_tokener_error_parse_boolean,
00025 json_tokener_error_parse_number,
00026 json_tokener_error_parse_array,
00027 json_tokener_error_parse_object_key_name,
00028 json_tokener_error_parse_object_key_sep,
00029 json_tokener_error_parse_object_value_sep,
00030 json_tokener_error_parse_string,
00031 json_tokener_error_parse_comment
00032 };
00033
00034 enum json_tokener_state {
00035 json_tokener_state_eatws,
00036 json_tokener_state_start,
00037 json_tokener_state_finish,
00038 json_tokener_state_null,
00039 json_tokener_state_comment_start,
00040 json_tokener_state_comment,
00041 json_tokener_state_comment_eol,
00042 json_tokener_state_comment_end,
00043 json_tokener_state_string,
00044 json_tokener_state_string_escape,
00045 json_tokener_state_escape_unicode,
00046 json_tokener_state_boolean,
00047 json_tokener_state_number,
00048 json_tokener_state_array,
00049 json_tokener_state_array_add,
00050 json_tokener_state_array_sep,
00051 json_tokener_state_object_field_start,
00052 json_tokener_state_object_field,
00053 json_tokener_state_object_field_end,
00054 json_tokener_state_object_value,
00055 json_tokener_state_object_value_add,
00056 json_tokener_state_object_sep
00057 };
00058
00059 struct json_tokener_srec
00060 {
00061 enum json_tokener_state state, saved_state;
00062 struct json_object *obj;
00063 struct json_object *current;
00064 char *obj_field_name;
00065 };
00066
00067 #define JSON_TOKENER_MAX_DEPTH 32
00068
00069 struct json_tokener
00070 {
00071 char *str;
00072 struct printbuf *pb;
00073 int depth, is_double, st_pos, char_offset;
00074 enum json_tokener_error err;
00075 unsigned int ucs_char;
00076 char quote_char;
00077 struct json_tokener_srec stack[JSON_TOKENER_MAX_DEPTH];
00078 };
00079
00080 extern const char* json_tokener_errors[];
00081
00082 extern struct json_tokener* json_tokener_new(void);
00083 extern void json_tokener_free(struct json_tokener *tok);
00084 extern void json_tokener_reset(struct json_tokener *tok);
00085 extern struct json_object* json_tokener_parse(const char *str);
00086 extern struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
00087 const char *str, int len);
00088
00089 #endif