json_tokener.h
上传用户:coffee44
上传日期:2018-10-23
资源大小:12304k
文件大小:2k
源码类别:

TAPI编程

开发平台:

Visual C++

  1. /*
  2.  * $Id: json_tokener.h,v 1.10 2006/07/25 03:24:50 mclark Exp $
  3.  *
  4.  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
  5.  * Michael Clark <michael@metaparadigm.com>
  6.  *
  7.  * This library is free software; you can redistribute it and/or modify
  8.  * it under the terms of the MIT license. See COPYING for details.
  9.  *
  10.  */
  11. #ifndef _json_tokener_h_
  12. #define _json_tokener_h_
  13. #include <stddef.h>
  14. #include "json_object.h"
  15. enum json_tokener_error {
  16.   json_tokener_success,
  17.   json_tokener_continue,
  18.   json_tokener_error_depth,
  19.   json_tokener_error_parse_eof,
  20.   json_tokener_error_parse_unexpected,
  21.   json_tokener_error_parse_null,
  22.   json_tokener_error_parse_boolean,
  23.   json_tokener_error_parse_number,
  24.   json_tokener_error_parse_array,
  25.   json_tokener_error_parse_object_key_name,
  26.   json_tokener_error_parse_object_key_sep,
  27.   json_tokener_error_parse_object_value_sep,
  28.   json_tokener_error_parse_string,
  29.   json_tokener_error_parse_comment
  30. };
  31. enum json_tokener_state {
  32.   json_tokener_state_eatws,
  33.   json_tokener_state_start,
  34.   json_tokener_state_finish,
  35.   json_tokener_state_null,
  36.   json_tokener_state_comment_start,
  37.   json_tokener_state_comment,
  38.   json_tokener_state_comment_eol,
  39.   json_tokener_state_comment_end,
  40.   json_tokener_state_string,
  41.   json_tokener_state_string_escape,
  42.   json_tokener_state_escape_unicode,
  43.   json_tokener_state_boolean,
  44.   json_tokener_state_number,
  45.   json_tokener_state_array,
  46.   json_tokener_state_array_add,
  47.   json_tokener_state_array_sep,
  48.   json_tokener_state_object_field_start,
  49.   json_tokener_state_object_field,
  50.   json_tokener_state_object_field_end,
  51.   json_tokener_state_object_value,
  52.   json_tokener_state_object_value_add,
  53.   json_tokener_state_object_sep
  54. };
  55. struct json_tokener_srec
  56. {
  57.   enum json_tokener_state state, saved_state;
  58.   struct json_object *obj;
  59.   struct json_object *current;
  60.   char *obj_field_name;
  61. };
  62. #define JSON_TOKENER_MAX_DEPTH 32
  63. struct json_tokener
  64. {
  65.   char *str;
  66.   struct printbuf *pb;
  67.   int depth, is_double, st_pos, char_offset;
  68.   ptrdiff_t err;
  69.   unsigned int ucs_char;
  70.   char quote_char;
  71.   struct json_tokener_srec stack[JSON_TOKENER_MAX_DEPTH];
  72. };
  73. extern const char* json_tokener_errors[];
  74. extern struct json_tokener* json_tokener_new(void);
  75. extern void json_tokener_free(struct json_tokener *tok);
  76. extern void json_tokener_reset(struct json_tokener *tok);
  77. extern struct json_object* json_tokener_parse(char *str);
  78. extern struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
  79.  char *str, int len);
  80. #endif