json-generator.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /* json-generator.h - JSON streams generator
  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_GENERATOR_H__
  24. #define __JSON_GENERATOR_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 <json-glib/json-types.h>
  29. #include <gio/gio.h>
  30. G_BEGIN_DECLS
  31. #define JSON_TYPE_GENERATOR (json_generator_get_type ())
  32. #define JSON_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JSON_TYPE_GENERATOR, JsonGenerator))
  33. #define JSON_IS_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), JSON_TYPE_GENERATOR))
  34. #define JSON_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), JSON_TYPE_GENERATOR, JsonGeneratorClass))
  35. #define JSON_IS_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), JSON_TYPE_GENERATOR))
  36. #define JSON_GENERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), JSON_TYPE_GENERATOR, JsonGeneratorClass))
  37. typedef struct _JsonGenerator JsonGenerator;
  38. typedef struct _JsonGeneratorPrivate JsonGeneratorPrivate;
  39. typedef struct _JsonGeneratorClass JsonGeneratorClass;
  40. /**
  41. * JsonGenerator:
  42. *
  43. * JSON data streams generator. The contents of the #JsonGenerator structure
  44. * are private and should only be accessed via the provided API.
  45. */
  46. struct _JsonGenerator
  47. {
  48. /*< private >*/
  49. GObject parent_instance;
  50. JsonGeneratorPrivate *priv;
  51. };
  52. /**
  53. * JsonGeneratorClass:
  54. *
  55. * #JsonGenerator class
  56. */
  57. struct _JsonGeneratorClass
  58. {
  59. /*< private >*/
  60. GObjectClass parent_class;
  61. /* padding, for future expansion */
  62. void (* _json_reserved1) (void);
  63. void (* _json_reserved2) (void);
  64. void (* _json_reserved3) (void);
  65. void (* _json_reserved4) (void);
  66. };
  67. JSON_AVAILABLE_IN_1_0
  68. GType json_generator_get_type (void) G_GNUC_CONST;
  69. JSON_AVAILABLE_IN_1_0
  70. JsonGenerator * json_generator_new (void);
  71. JSON_AVAILABLE_IN_1_0
  72. void json_generator_set_pretty (JsonGenerator *generator,
  73. gboolean is_pretty);
  74. JSON_AVAILABLE_IN_1_0
  75. gboolean json_generator_get_pretty (JsonGenerator *generator);
  76. JSON_AVAILABLE_IN_1_0
  77. void json_generator_set_indent (JsonGenerator *generator,
  78. guint indent_level);
  79. JSON_AVAILABLE_IN_1_0
  80. guint json_generator_get_indent (JsonGenerator *generator);
  81. JSON_AVAILABLE_IN_1_0
  82. void json_generator_set_indent_char (JsonGenerator *generator,
  83. gunichar indent_char);
  84. JSON_AVAILABLE_IN_1_0
  85. gunichar json_generator_get_indent_char (JsonGenerator *generator);
  86. JSON_AVAILABLE_IN_1_0
  87. void json_generator_set_root (JsonGenerator *generator,
  88. JsonNode *node);
  89. JSON_AVAILABLE_IN_1_0
  90. JsonNode * json_generator_get_root (JsonGenerator *generator);
  91. JSON_AVAILABLE_IN_1_4
  92. GString *json_generator_to_gstring (JsonGenerator *generator,
  93. GString *string);
  94. JSON_AVAILABLE_IN_1_0
  95. gchar * json_generator_to_data (JsonGenerator *generator,
  96. gsize *length);
  97. JSON_AVAILABLE_IN_1_0
  98. gboolean json_generator_to_file (JsonGenerator *generator,
  99. const gchar *filename,
  100. GError **error);
  101. JSON_AVAILABLE_IN_1_0
  102. gboolean json_generator_to_stream (JsonGenerator *generator,
  103. GOutputStream *stream,
  104. GCancellable *cancellable,
  105. GError **error);
  106. #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
  107. G_DEFINE_AUTOPTR_CLEANUP_FUNC (JsonGenerator, g_object_unref)
  108. #endif
  109. G_END_DECLS
  110. #endif /* __JSON_GENERATOR_H__ */