/** * json_reader_get_boolean_value: * @reader: a #JsonReader * * Retrieves the boolean value of the current position of @reader * * Return value: the boolean value * * Since: 0.12 */ gboolean json_reader_get_boolean_value (JsonReader *reader) { JsonNode *node; g_return_val_if_fail (JSON_IS_READER (reader), FALSE); json_reader_return_val_if_error_set (reader, FALSE); if (reader->priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return FALSE; } node = reader->priv->current_node; if (!JSON_NODE_HOLDS_VALUE (node)) { json_reader_set_error (reader, JSON_READER_ERROR_NO_VALUE, _("The current position holds a '%s' and not a value"), json_node_type_get_name (JSON_NODE_TYPE (node))); return FALSE; } return json_node_get_boolean (node); }
/** * json_reader_set_root: * @reader: a #JsonReader * @root: (allow-none): a #JsonNode * * Sets the root #JsonNode to be read by @reader. The @reader will take * a copy of @root * * If another #JsonNode is currently set as root, it will be replaced. * * Since: 0.12 */ void json_reader_set_root (JsonReader *reader, JsonNode *root) { JsonReaderPrivate *priv; g_return_if_fail (JSON_IS_READER (reader)); priv = reader->priv; if (priv->root == root) return; if (priv->root != NULL) { json_node_free (priv->root); priv->root = NULL; priv->current_node = NULL; priv->previous_node = NULL; } if (root != NULL) { priv->root = json_node_copy (root); priv->current_node = priv->root; priv->previous_node = NULL; } g_object_notify_by_pspec (G_OBJECT (reader), reader_properties[PROP_ROOT]); }
/** * json_reader_get_string_value: * @reader: a #JsonReader * * Retrieves the string value of the current position of @reader * * Return value: the string value * * Since: 0.12 */ const gchar * json_reader_get_string_value (JsonReader *reader) { JsonNode *node; g_return_val_if_fail (JSON_IS_READER (reader), NULL); json_reader_return_val_if_error_set (reader, NULL); if (reader->priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return NULL; } node = reader->priv->current_node; if (!JSON_NODE_HOLDS_VALUE (node)) { json_reader_set_error (reader, JSON_READER_ERROR_NO_VALUE, _("The current position holds a '%s' and not a value"), json_node_type_get_name (JSON_NODE_TYPE (node))); return NULL; } if (json_node_get_value_type (node) != G_TYPE_STRING) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_TYPE, _("The current position does not hold a string type")); return NULL; } return json_node_get_string (reader->priv->current_node); }
/** * json_reader_count_members: * @reader: a #JsonReader * * Counts the members of the current position, if @reader is * positioned on an object * * Return value: the number of members, or -1. In case of failure * the #JsonReader is set in an error state * * Since: 0.12 */ gint json_reader_count_members (JsonReader *reader) { JsonReaderPrivate *priv; g_return_val_if_fail (JSON_IS_READER (reader), -1); priv = reader->priv; if (priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return -1; } if (!JSON_NODE_HOLDS_OBJECT (priv->current_node)) { json_reader_set_error (reader, JSON_READER_ERROR_NO_OBJECT, _("The current position holds a '%s' and not an object"), json_node_type_get_name (JSON_NODE_TYPE (priv->current_node))); return -1; } return json_object_get_size (json_node_get_object (priv->current_node)); }
/** * json_reader_count_elements: * @reader: a #JsonReader * * Counts the elements of the current position, if @reader is * positioned on an array * * Return value: the number of elements, or -1. In case of failure * the #JsonReader is set in an error state * * Since: 0.12 */ gint json_reader_count_elements (JsonReader *reader) { JsonReaderPrivate *priv; g_return_val_if_fail (JSON_IS_READER (reader), -1); priv = reader->priv; if (priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return -1; } if (!JSON_NODE_HOLDS_ARRAY (priv->current_node)) { json_reader_set_error (reader, JSON_READER_ERROR_NO_ARRAY, _("The current position holds a '%s' and not an array"), json_node_type_get_name (JSON_NODE_TYPE (priv->current_node))); return -1; } return json_array_get_length (json_node_get_array (priv->current_node)); }
/** * json_reader_get_error: * @reader: a #JsonReader * * Retrieves the #GError currently set on @reader, if the #JsonReader * is in error state * * Return value: (transfer none): the pointer to the error, or %NULL * * Since: 0.12 */ G_CONST_RETURN GError * json_reader_get_error (JsonReader *reader) { g_return_val_if_fail (JSON_IS_READER (reader), FALSE); return reader->priv->error; }
/** * json_reader_get_member_name: * @reader: a #JsonReader * * Retrieves the name of the current member. * * Return value: (transfer none): the name of the member, or %NULL * * Since: 0.14 */ G_CONST_RETURN gchar * json_reader_get_member_name (JsonReader *reader) { g_return_val_if_fail (JSON_IS_READER (reader), NULL); json_reader_return_val_if_error_set (reader, NULL); return reader->priv->current_member; }
/** * json_reader_is_object: * @reader: a #JsonReader * * Checks whether the @reader is currently on an object * * Return value: %TRUE if the #JsonReader is on an object, and %FALSE * otherwise * * Since: 0.12 */ gboolean json_reader_is_object (JsonReader *reader) { g_return_val_if_fail (JSON_IS_READER (reader), FALSE); json_reader_return_val_if_error_set (reader, FALSE); if (reader->priv->current_node == NULL) return FALSE; return JSON_NODE_HOLDS_OBJECT (reader->priv->current_node); }
/** * json_reader_get_null_value: * @reader: a #JsonReader * * Checks whether the value of the current position of @reader is 'null' * * Return value: %TRUE if 'null' is set, and %FALSE otherwise * * Since: 0.12 */ gboolean json_reader_get_null_value (JsonReader *reader) { g_return_val_if_fail (JSON_IS_READER (reader), FALSE); json_reader_return_val_if_error_set (reader, FALSE); if (reader->priv->current_node == NULL) return FALSE; return JSON_NODE_HOLDS_NULL (reader->priv->current_node); }
/** * json_reader_get_double_value: * @reader: a #JsonReader * * Retrieves the floating point value of the current position of @reader * * Return value: the floating point value * * Since: 0.12 */ gdouble json_reader_get_double_value (JsonReader *reader) { g_return_val_if_fail (JSON_IS_READER (reader), 0.0); json_reader_return_val_if_error_set (reader, 0.0); if (reader->priv->current_node == NULL) return 0.0; if (!JSON_NODE_HOLDS_VALUE (reader->priv->current_node)) return 0.0; return json_node_get_double (reader->priv->current_node); }
/** * json_reader_get_string_value: * @reader: a #JsonReader * * Retrieves the string value of the current position of @reader * * Return value: the string value * * Since: 0.12 */ G_CONST_RETURN gchar * json_reader_get_string_value (JsonReader *reader) { g_return_val_if_fail (JSON_IS_READER (reader), NULL); json_reader_return_val_if_error_set (reader, NULL); if (reader->priv->current_node == NULL) return NULL; if (!JSON_NODE_HOLDS_VALUE (reader->priv->current_node)) return NULL; return json_node_get_string (reader->priv->current_node); }
/** * json_reader_get_value: * @reader: a #JsonReader * * Retrieves the #JsonNode of the current position of @reader * * Return value: (transfer none): a #JsonNode, or %NULL. The returned node * is owned by the #JsonReader and it should not be modified or freed * directly * * Since: 0.12 */ JsonNode * json_reader_get_value (JsonReader *reader) { g_return_val_if_fail (JSON_IS_READER (reader), NULL); json_reader_return_val_if_error_set (reader, NULL); if (reader->priv->current_node == NULL) return NULL; if (!JSON_NODE_HOLDS_VALUE (reader->priv->current_node)) return NULL; return reader->priv->current_node; }
/** * json_reader_get_null_value: * @reader: a #JsonReader * * Checks whether the value of the current position of @reader is 'null' * * Return value: %TRUE if 'null' is set, and %FALSE otherwise * * Since: 0.12 */ gboolean json_reader_get_null_value (JsonReader *reader) { g_return_val_if_fail (JSON_IS_READER (reader), FALSE); json_reader_return_val_if_error_set (reader, FALSE); if (reader->priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return FALSE; } return JSON_NODE_HOLDS_NULL (reader->priv->current_node); }
/** * json_reader_get_member_name: * @reader: a #JsonReader * * Retrieves the name of the current member. * * Return value: (transfer none): the name of the member, or %NULL * * Since: 0.14 */ const gchar * json_reader_get_member_name (JsonReader *reader) { g_return_val_if_fail (JSON_IS_READER (reader), NULL); json_reader_return_val_if_error_set (reader, NULL); if (reader->priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return FALSE; } return reader->priv->current_member; }
/** * json_reader_count_members: * @reader: a #JsonReader * * Counts the members of the current position, if @reader is * positioned on an object * * Return value: the number of members, or -1. In case of failure * the #JsonReader is set in an error state * * Since: 0.12 */ gint json_reader_count_members (JsonReader *reader) { JsonReaderPrivate *priv; g_return_val_if_fail (JSON_IS_READER (reader), -1); priv = reader->priv; if (priv->current_node == NULL) return -1; if (!JSON_NODE_HOLDS_OBJECT (priv->current_node)) return -1; return json_object_get_size (json_node_get_object (priv->current_node)); }
/** * json_reader_count_elements: * @reader: a #JsonReader * * Counts the elements of the current position, if @reader is * positioned on an array * * Return value: the number of elements, or -1. In case of failure * the #JsonReader is set in an error state * * Since: 0.12 */ gint json_reader_count_elements (JsonReader *reader) { JsonReaderPrivate *priv; g_return_val_if_fail (JSON_IS_READER (reader), -1); priv = reader->priv; if (priv->current_node == NULL) return -1; if (!JSON_NODE_HOLDS_ARRAY (priv->current_node)) return -1; return json_array_get_length (json_node_get_array (priv->current_node)); }
/** * json_reader_end_member: * @reader: a #JsonReader * * Moves the cursor back to the previous node after being positioned * inside an object * * This function resets the error state of @reader, if any was set * * Since: 0.12 */ void json_reader_end_member (JsonReader *reader) { JsonReaderPrivate *priv; JsonNode *tmp; g_return_if_fail (JSON_IS_READER (reader)); json_reader_unset_error (reader); priv = reader->priv; if (priv->previous_node != NULL) tmp = json_node_get_parent (priv->previous_node); else tmp = NULL; g_free (priv->current_member); priv->current_member = NULL; priv->current_node = priv->previous_node; priv->previous_node = tmp; }