json-parser.h 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. /* json-parser.h - JSON streams parser
  2. *
  3. * This file is part of JSON-GLib
  4. * Copyright (C) 2007 OpenedHand Ltd.
  5. * Copyright (C) 2009 Intel Corp.
  6. *
  7. * This library is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Lesser General Public
  9. * License as published by the Free Software Foundation; either
  10. * version 2.1 of the License, or (at your option) any later version.
  11. *
  12. * This library is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General Public
  18. * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  19. *
  20. * Author:
  21. * Emmanuele Bassi <ebassi@linux.intel.com>
  22. */
  23. #ifndef __JSON_PARSER_H__
  24. #define __JSON_PARSER_H__
  25. #if !defined(__JSON_GLIB_INSIDE__) && !defined(JSON_COMPILATION)
  26. #error "Only <json-glib/json-glib.h> can be included directly."
  27. #endif
  28. #include <gio/gio.h>
  29. #include <json-glib/json-types.h>
  30. G_BEGIN_DECLS
  31. #define JSON_TYPE_PARSER (json_parser_get_type ())
  32. #define JSON_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JSON_TYPE_PARSER, JsonParser))
  33. #define JSON_IS_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JSON_TYPE_PARSER))
  34. #define JSON_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JSON_TYPE_PARSER, JsonParserClass))
  35. #define JSON_IS_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JSON_TYPE_PARSER))
  36. #define JSON_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JSON_TYPE_PARSER, JsonParserClass))
  37. #define JSON_PARSER_ERROR (json_parser_error_quark ())
  38. typedef struct _JsonParser JsonParser;
  39. typedef struct _JsonParserPrivate JsonParserPrivate;
  40. typedef struct _JsonParserClass JsonParserClass;
  41. /**
  42. * JsonParserError:
  43. * @JSON_PARSER_ERROR_PARSE: parse error
  44. * @JSON_PARSER_ERROR_TRAILING_COMMA: unexpected trailing comma
  45. * @JSON_PARSER_ERROR_MISSING_COMMA: expected comma
  46. * @JSON_PARSER_ERROR_MISSING_COLON: expected colon
  47. * @JSON_PARSER_ERROR_INVALID_BAREWORD: invalid bareword
  48. * @JSON_PARSER_ERROR_EMPTY_MEMBER_NAME: empty member name (Since: 0.16)
  49. * @JSON_PARSER_ERROR_INVALID_DATA: invalid data (Since: 0.18)
  50. * @JSON_PARSER_ERROR_UNKNOWN: unknown error
  51. *
  52. * Error enumeration for #JsonParser
  53. *
  54. * This enumeration can be extended at later date
  55. */
  56. typedef enum {
  57. JSON_PARSER_ERROR_PARSE,
  58. JSON_PARSER_ERROR_TRAILING_COMMA,
  59. JSON_PARSER_ERROR_MISSING_COMMA,
  60. JSON_PARSER_ERROR_MISSING_COLON,
  61. JSON_PARSER_ERROR_INVALID_BAREWORD,
  62. JSON_PARSER_ERROR_EMPTY_MEMBER_NAME,
  63. JSON_PARSER_ERROR_INVALID_DATA,
  64. JSON_PARSER_ERROR_UNKNOWN
  65. } JsonParserError;
  66. /**
  67. * JsonParser:
  68. *
  69. * JSON data streams parser. The contents of the #JsonParser structure are
  70. * private and should only be accessed via the provided API.
  71. */
  72. struct _JsonParser
  73. {
  74. /*< private >*/
  75. GObject parent_instance;
  76. JsonParserPrivate *priv;
  77. };
  78. /**
  79. * JsonParserClass:
  80. * @parse_start: class handler for the JsonParser::parse-start signal
  81. * @object_start: class handler for the JsonParser::object-start signal
  82. * @object_member: class handler for the JsonParser::object-member signal
  83. * @object_end: class handler for the JsonParser::object-end signal
  84. * @array_start: class handler for the JsonParser::array-start signal
  85. * @array_element: class handler for the JsonParser::array-element signal
  86. * @array_end: class handler for the JsonParser::array-end signal
  87. * @parse_end: class handler for the JsonParser::parse-end signal
  88. * @error: class handler for the JsonParser::error signal
  89. *
  90. * #JsonParser class.
  91. */
  92. struct _JsonParserClass
  93. {
  94. /*< private >*/
  95. GObjectClass parent_class;
  96. /*< public >*/
  97. void (* parse_start) (JsonParser *parser);
  98. void (* object_start) (JsonParser *parser);
  99. void (* object_member) (JsonParser *parser,
  100. JsonObject *object,
  101. const gchar *member_name);
  102. void (* object_end) (JsonParser *parser,
  103. JsonObject *object);
  104. void (* array_start) (JsonParser *parser);
  105. void (* array_element) (JsonParser *parser,
  106. JsonArray *array,
  107. gint index_);
  108. void (* array_end) (JsonParser *parser,
  109. JsonArray *array);
  110. void (* parse_end) (JsonParser *parser);
  111. void (* error) (JsonParser *parser,
  112. const GError *error);
  113. /*< private >*/
  114. /* padding for future expansion */
  115. void (* _json_reserved1) (void);
  116. void (* _json_reserved2) (void);
  117. void (* _json_reserved3) (void);
  118. void (* _json_reserved4) (void);
  119. void (* _json_reserved5) (void);
  120. void (* _json_reserved6) (void);
  121. void (* _json_reserved7) (void);
  122. void (* _json_reserved8) (void);
  123. };
  124. JSON_AVAILABLE_IN_1_0
  125. GQuark json_parser_error_quark (void);
  126. JSON_AVAILABLE_IN_1_0
  127. GType json_parser_get_type (void) G_GNUC_CONST;
  128. JSON_AVAILABLE_IN_1_0
  129. JsonParser *json_parser_new (void);
  130. JSON_AVAILABLE_IN_1_2
  131. JsonParser *json_parser_new_immutable (void);
  132. JSON_AVAILABLE_IN_1_0
  133. gboolean json_parser_load_from_file (JsonParser *parser,
  134. const gchar *filename,
  135. GError **error);
  136. JSON_AVAILABLE_IN_1_6
  137. gboolean json_parser_load_from_mapped_file (JsonParser *parser,
  138. const gchar *filename,
  139. GError **error);
  140. JSON_AVAILABLE_IN_1_0
  141. gboolean json_parser_load_from_data (JsonParser *parser,
  142. const gchar *data,
  143. gssize length,
  144. GError **error);
  145. JSON_AVAILABLE_IN_1_0
  146. gboolean json_parser_load_from_stream (JsonParser *parser,
  147. GInputStream *stream,
  148. GCancellable *cancellable,
  149. GError **error);
  150. JSON_AVAILABLE_IN_1_0
  151. void json_parser_load_from_stream_async (JsonParser *parser,
  152. GInputStream *stream,
  153. GCancellable *cancellable,
  154. GAsyncReadyCallback callback,
  155. gpointer user_data);
  156. JSON_AVAILABLE_IN_1_0
  157. gboolean json_parser_load_from_stream_finish (JsonParser *parser,
  158. GAsyncResult *result,
  159. GError **error);
  160. JSON_AVAILABLE_IN_1_0
  161. JsonNode * json_parser_get_root (JsonParser *parser);
  162. JSON_AVAILABLE_IN_1_4
  163. JsonNode * json_parser_steal_root (JsonParser *parser);
  164. JSON_AVAILABLE_IN_1_0
  165. guint json_parser_get_current_line (JsonParser *parser);
  166. JSON_AVAILABLE_IN_1_0
  167. guint json_parser_get_current_pos (JsonParser *parser);
  168. JSON_AVAILABLE_IN_1_0
  169. gboolean json_parser_has_assignment (JsonParser *parser,
  170. gchar **variable_name);
  171. #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
  172. G_DEFINE_AUTOPTR_CLEANUP_FUNC (JsonParser, g_object_unref)
  173. #endif
  174. G_END_DECLS
  175. #endif /* __JSON_PARSER_H__ */