blob: ce6f7ab2e3c3027a481ea2f0fcac146b709fb5c3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
  | 
#include "config.h"
#include <glib.h>
#include "json-types.h"
#include "json-private.h"
JsonData *
json_data_new (JsonDataType type)
{
  JsonData *data;
  data = g_slice_new (JsonData);
  data->type = type;
  return data;
}
void
json_data_set_object (JsonData   *data,
                      JsonObject *object)
{
  g_return_if_fail (data != NULL);
  g_return_if_fail (JSON_DATA_TYPE (data) == JSON_DATA_OBJECT);
  g_return_if_fail (object != NULL);
  data->data.object = object;
}
/**
 * json_data_get_object:
 * @data: a #JsonData
 *
 * Retrieves the #JsonObject stored inside a #JsonData
 *
 * Return value: the #JsonObject
 */
JsonObject *
json_data_get_object (JsonData *data)
{
  g_return_val_if_fail (data != NULL, NULL);
  g_return_val_if_fail (JSON_DATA_TYPE (data) == JSON_DATA_OBJECT, NULL);
  return data->data.object;
}
void
json_data_set_array (JsonData  *data,
                     JsonArray *array)
{
  g_return_if_fail (data != NULL);
  g_return_if_fail (JSON_DATA_TYPE (data) == JSON_DATA_ARRAY);
  g_return_if_fail (array != NULL);
  data->data.array = array;
}
/**
 * json_data_get_array:
 * @data: a #JsonData
 *
 * Retrieves the #JsonArray stored inside a #JsonData
 *
 * Return value: the #JsonArray
 */
JsonArray *
json_data_get_array (JsonData *data)
{
  g_return_val_if_fail (data != NULL, NULL);
  g_return_val_if_fail (JSON_DATA_TYPE (data) == JSON_DATA_ARRAY, NULL);
  return data->data.array;
}
void
json_data_free (JsonData *data)
{
  if (data)
    {
      switch (data->type)
        {
        case JSON_DATA_OBJECT:
          json_object_unref (data->data.object);
          break;
        case JSON_DATA_ARRAY:
          json_array_unref (data->data.array);
          break;
        }
      g_slice_free (JsonData, data);
    }
}
  |