/** * json_node_get_value: * @node: a #JsonNode * @value: (out caller-allocates): return location for an uninitialized value * * Retrieves a value from a #JsonNode and copies into @value. When done * using it, call g_value_unset() on the #GValue. */ void json_node_get_value (JsonNode *node, GValue *value) { g_return_if_fail (JSON_NODE_IS_VALID (node)); g_return_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE); if (node->data.value) { g_value_init (value, JSON_VALUE_TYPE (node->data.value)); switch (JSON_VALUE_TYPE (node->data.value)) { case G_TYPE_INT64: g_value_set_int64 (value, json_value_get_int (node->data.value)); break; case G_TYPE_DOUBLE: g_value_set_double (value, json_value_get_double (node->data.value)); break; case G_TYPE_BOOLEAN: g_value_set_boolean (value, json_value_get_boolean (node->data.value)); break; case G_TYPE_STRING: g_value_set_string (value, json_value_get_string (node->data.value)); break; default: break; } } }
/** * json_node_get_boolean: * @node: a #JsonNode of type %JSON_NODE_VALUE * * Gets the boolean value stored inside a #JsonNode * * Return value: a boolean value. */ gboolean json_node_get_boolean (JsonNode *node) { g_return_val_if_fail (JSON_NODE_IS_VALID (node), FALSE); if (JSON_NODE_TYPE (node) == JSON_NODE_NULL) return FALSE; if (JSON_VALUE_HOLDS_BOOLEAN (node->data.value)) return json_value_get_boolean (node->data.value); if (JSON_VALUE_HOLDS_INT (node->data.value)) return json_value_get_int (node->data.value) != 0; if (JSON_VALUE_HOLDS_DOUBLE (node->data.value)) return json_value_get_double (node->data.value) != 0.0; return FALSE; }
/** * json_node_get_double: * @node: a #JsonNode of type %JSON_NODE_VALUE * * Gets the double value stored inside a #JsonNode * * Return value: a double value. */ gdouble json_node_get_double (JsonNode *node) { g_return_val_if_fail (node != NULL, 0.0); if (JSON_NODE_TYPE (node) == JSON_NODE_NULL) return 0; if (JSON_VALUE_HOLDS_DOUBLE (node->data.value)) return json_value_get_double (node->data.value); if (JSON_VALUE_HOLDS_INT (node->data.value)) return (gdouble) json_value_get_int (node->data.value); if (JSON_VALUE_HOLDS_BOOLEAN (node->data.value)) return (gdouble) json_value_get_boolean (node->data.value); return 0.0; }