json_tokener.h
Go to the documentation of this file.
00001 /*
00002  * $Id: json_tokener.h,v 1.10 2006/07/25 03:24:50 mclark Exp $
00003  *
00004  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
00005  * Michael Clark <michael@metaparadigm.com>
00006  *
00007  * This library is free software; you can redistribute it and/or modify
00008  * it under the terms of the MIT license. See COPYING for details.
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


csm
Author(s): Andrea Censi
autogenerated on Mon Jan 16 2017 03:48:29