Spa Json
-
struct WpSpaJson
- Since
0.4.8
-
struct WpSpaJsonBuilder
- Since
0.4.8
-
struct WpSpaJsonParser
- Since
0.4.8
-
WpSpaJson *wp_spa_json_ref(WpSpaJson *self)
Increases the reference count of a spa json object.
- Parameters:
self – a spa json object
- Returns:
(transfer full): self with an additional reference count on it
-
void wp_spa_json_unref(WpSpaJson *self)
Decreases the reference count on self and frees it when the ref count reaches zero.
- Parameters:
self – (transfer full): a spa json object
-
WpSpaJson *wp_spa_json_new_from_string(const gchar *json_str)
Constructs a new WpSpaJson from a JSON string.
- Since
0.5.0
- Parameters:
json_str – a JSON string
- Returns:
a new WpSpaJson; unlike the “wrap” variants, this function copies the data in json_str, so it does not need to stay alive.
-
WpSpaJson *wp_spa_json_new_from_stringn(const gchar *json_str, size_t len)
Constructs a new WpSpaJson from a JSON string with specific length.
- Since
0.5.0
- Parameters:
json_str – a JSON string
len – the specific length of the string
- Returns:
a new WpSpaJson; unlike the “wrap” variants, this function copies the data in json_str, so it does not need to stay alive.
-
WpSpaJson *wp_spa_json_new_wrap_string(const gchar *json_str)
Constructs a new WpSpaJson that wraps a JSON string.
- Since
0.5.0
- Parameters:
json_str – a JSON string
- Returns:
a new WpSpaJson that references the data in json_str. json_str is not copied, so it needs to stay alive.
-
WpSpaJson *wp_spa_json_new_wrap_stringn(const gchar *json_str, size_t len)
Constructs a new WpSpaJson that wraps a JSON string with specific length.
- Since
0.5.0
- Parameters:
json_str – a JSON string
len – the specific length of the string
- Returns:
a new WpSpaJson that references the data in json_str. json_str is not copied, so it needs to stay alive.
-
WpSpaJson *wp_spa_json_new_wrap(struct spa_json *json)
Constructs a new WpSpaJson that wraps the given
spa_json
.- Parameters:
json – a spa_json
- Returns:
a new WpSpaJson that references the data in json. json is not copied, so it needs to stay alive.
-
const struct spa_json *wp_spa_json_get_spa_json(const WpSpaJson *self)
Converts a WpSpaJson pointer to a
struct spa_json
one, for use with native pipewire & spa functions. The returned pointer is owned by WpSpaJson and may not be modified or freed.- Parameters:
self – a spa json object
- Returns:
a const pointer to the underlying spa_json structure
-
const gchar *wp_spa_json_get_data(const WpSpaJson *self)
Returns the json data.
- Parameters:
self – a spa json object
- Returns:
a const pointer to the json data
-
size_t wp_spa_json_get_size(const WpSpaJson *self)
Returns the json data size.
- Parameters:
self – a spa json object
- Returns:
the json data size
-
gchar *wp_spa_json_to_string(const WpSpaJson *self)
Returns a newly allocated json string with length matching the size.
- Since
0.4.11
- Parameters:
self – a spa json object
- Returns:
(transfer full): the json string with length matching the size
-
WpSpaJson *wp_spa_json_copy(WpSpaJson *other)
Copies a spa json object.
- Parameters:
other – a spa json object
- Returns:
(transfer full): The newly copied spa json
-
gboolean wp_spa_json_is_unique_owner(WpSpaJson *self)
Checks if the json is the unique owner of its data or not.
- Parameters:
self – a spa json object
- Returns:
TRUE if the json owns the data, FALSE otherwise.
-
WpSpaJson *wp_spa_json_ensure_unique_owner(WpSpaJson *self)
If self is not uniquely owned already, then it is unrefed and a copy of it is returned instead. You should always consider self as unsafe to use after this call and you should use the returned object instead.
- Parameters:
self – (transfer full): a spa json object
- Returns:
(transfer full): the uniquely owned spa json object which may or may not be the same as self.
-
WpSpaJson *wp_spa_json_new_null(void)
Creates a spa json of type NULL.
- Returns:
(transfer full): The new spa json
-
WpSpaJson *wp_spa_json_new_boolean(gboolean value)
Creates a spa json of type boolean.
- Parameters:
value – the boolean value
- Returns:
(transfer full): The new spa json
-
WpSpaJson *wp_spa_json_new_int(gint value)
Creates a spa json of type int.
- Parameters:
value – the int value
- Returns:
(transfer full): The new spa json
-
WpSpaJson *wp_spa_json_new_float(float value)
Creates a spa json of type float.
- Parameters:
value – the float value
- Returns:
(transfer full): The new spa json
-
WpSpaJson *wp_spa_json_new_string(const gchar *value)
Creates a spa json of type string.
- Parameters:
value – the string value
- Returns:
(transfer full): The new spa json
-
WpSpaJson *wp_spa_json_new_array(const gchar *format, ...)
Creates a spa json of type array.
- Parameters:
format – (nullable): the first value format (“n”, “b”, “i”, “f”, “s” or “J”)
... – a list of array types and values, followed by NULL
- Returns:
(transfer full): The new spa json
-
WpSpaJson *wp_spa_json_new_array_valist(const gchar *format, va_list args)
This is the
va_list
version of wp_spa_json_new_array()- Parameters:
format – (nullable): the first value format (“n”, “b”, “i”, “f”, “s” or “J”)
args – the variable arguments passed to wp_spa_json_new_array()
- Returns:
(transfer full): The new spa json
-
WpSpaJson *wp_spa_json_new_object(const gchar *key, const gchar *format, ...)
Creates a spa json of type object.
- Parameters:
key – (nullable): the first object property key
format – (nullable): the first property format (“n”, “b”, “i”, “f”, “s” or “J”)
... – a list of object properties and values, followed by NULL
- Returns:
(transfer full): The new spa json
-
WpSpaJson *wp_spa_json_new_object_valist(const gchar *key, const gchar *format, va_list args)
This is the
va_list
version of wp_spa_json_new_object()- Parameters:
key – (nullable): the first object property key
format – (nullable): the first property format (“n”, “b”, “i”, “f”, “s” or “J”)
args – the variable arguments passed to wp_spa_json_new_object()
- Returns:
(transfer full): The new spa json
-
gboolean wp_spa_json_is_null(WpSpaJson *self)
Checks wether the spa json is of type null or not.
- Parameters:
self – the spa json object
- Returns:
TRUE if it is of type null, FALSE otherwise
-
gboolean wp_spa_json_is_boolean(WpSpaJson *self)
Checks wether the spa json is of type boolean or not.
- Parameters:
self – the spa json object
- Returns:
TRUE if it is of type boolean, FALSE otherwise
-
gboolean wp_spa_json_is_int(WpSpaJson *self)
Checks wether the spa json is of type int or not.
- Parameters:
self – the spa json object
- Returns:
TRUE if it is of type int, FALSE otherwise
-
gboolean wp_spa_json_is_float(WpSpaJson *self)
Checks wether the spa json is of type float or not.
- Parameters:
self – the spa json object
- Returns:
TRUE if it is of type float, FALSE otherwise
-
gboolean wp_spa_json_is_string(WpSpaJson *self)
Checks wether the spa json is of type string or not.
- Parameters:
self – the spa json object
- Returns:
TRUE if it is of type string, FALSE otherwise
-
gboolean wp_spa_json_is_array(WpSpaJson *self)
Checks whether the spa json is of type array or not.
- Parameters:
self – the spa json object
- Returns:
TRUE if it is of type array, FALSE otherwise
-
gboolean wp_spa_json_is_container(WpSpaJson *self)
Checks whether the spa json is of type container or not.
- Parameters:
self – the spa json object
- Returns:
TRUE if it is of type container, FALSE otherwise
-
gboolean wp_spa_json_is_object(WpSpaJson *self)
Checks whether the spa json is of type object or not.
- Parameters:
self – the spa json object
- Returns:
TRUE if it is of type object, FALSE otherwise
-
gboolean wp_spa_json_parse_boolean(WpSpaJson *self, gboolean *value)
Parses the boolean value of a spa json object.
- Parameters:
self – the spa json object
value – (out): the boolean value
- Returns:
TRUE if the value was obtained, FALSE otherwise
-
gboolean wp_spa_json_parse_int(WpSpaJson *self, gint *value)
Parses the int value of a spa json object.
- Parameters:
self – the spa json object
value – (out): the int value
- Returns:
TRUE if the value was obtained, FALSE otherwise
-
gboolean wp_spa_json_parse_float(WpSpaJson *self, float *value)
Parses the float value of a spa json object.
- Parameters:
self – the spa json object
value – (out): the float value
- Returns:
TRUE if the value was obtained, FALSE otherwise
-
gchar *wp_spa_json_parse_string(WpSpaJson *self)
Parses the string value of a spa json object.
- Parameters:
self – the spa json object
- Returns:
(transfer full): The newly allocated parsed string
-
gboolean wp_spa_json_parse_array(WpSpaJson *self, ...)
Parses the array types and values of a spa json object.
- Parameters:
self – the spa json object
... – (out): the list of array types and values, followed by NULL
- Returns:
TRUE if the types and values were obtained, FALSE otherwise
-
gboolean wp_spa_json_parse_array_valist(WpSpaJson *self, va_list args)
This is the
va_list
version of wp_spa_json_parse_array()- Parameters:
self – the spa json object
args – (out): the variable arguments passed to wp_spa_json_parse_array()
- Returns:
TRUE if the types and values were obtained, FALSE otherwise
-
gboolean wp_spa_json_parse_object(WpSpaJson *self, ...)
Parses the object properties and values of a spa json object.
- Parameters:
self – the spa json object
... – (out): the list of object properties and values, followed by NULL
- Returns:
TRUE if the properties and values were obtained, FALSE otherwise
-
gboolean wp_spa_json_parse_object_valist(WpSpaJson *self, va_list args)
This is the
va_list
version of wp_spa_json_parse_object()- Parameters:
self – the spa json object
args – (out): the variable arguments passed to wp_spa_json_parse_object()
- Returns:
TRUE if the properties and values were obtained, FALSE otherwise
-
gboolean wp_spa_json_object_get(WpSpaJson *self, ...)
Parses the object property values of a spa json object.
- Parameters:
self – the spa json object
... – the list of property names, formats and values, followed by NULL
- Returns:
TRUE if the properties and values were obtained, FALSE otherwise
-
gboolean wp_spa_json_object_get_valist(WpSpaJson *self, va_list args)
This is the
va_list
version of wp_spa_json_object_get()- Parameters:
self – the spa json object
args – the variable arguments passed to wp_spa_json_object_get()
- Returns:
TRUE if the properties and values were obtained, FALSE otherwise
-
WpSpaJsonBuilder *wp_spa_json_builder_ref(WpSpaJsonBuilder *self)
Increases the reference count of a spa json builder.
- Parameters:
self – a spa json builder object
- Returns:
(transfer full): self with an additional reference count on it
-
void wp_spa_json_builder_unref(WpSpaJsonBuilder *self)
Decreases the reference count on self and frees it when the ref count reaches zero.
- Parameters:
self – (transfer full): a spa json builder object
-
WpSpaJsonBuilder *wp_spa_json_builder_new_array(void)
Creates a spa json builder of type array.
- Returns:
(transfer full): the new spa json builder
-
WpSpaJsonBuilder *wp_spa_json_builder_new_object(void)
Creates a spa json builder of type object.
- Returns:
(transfer full): the new spa json builder
-
void wp_spa_json_builder_add_property(WpSpaJsonBuilder *self, const gchar *key)
Adds a property into the builder.
- Parameters:
self – the spa json builder object
key – the name of the property
-
void wp_spa_json_builder_add_null(WpSpaJsonBuilder *self)
Adds a null value into the builder.
- Parameters:
self – the spa json builder object
-
void wp_spa_json_builder_add_boolean(WpSpaJsonBuilder *self, gboolean value)
Adds a boolean value into the builder.
- Parameters:
self – the spa json builder object
value – the boolean value
-
void wp_spa_json_builder_add_int(WpSpaJsonBuilder *self, gint value)
Adds a int value into the builder.
- Parameters:
self – the spa json builder object
value – the int value
-
void wp_spa_json_builder_add_float(WpSpaJsonBuilder *self, float value)
Adds a float value into the builder.
- Parameters:
self – the spa json builder object
value – the float value
-
void wp_spa_json_builder_add_string(WpSpaJsonBuilder *self, const gchar *value)
Adds a string value into the builder.
- Parameters:
self – the spa json builder object
value – the string value
-
void wp_spa_json_builder_add_json(WpSpaJsonBuilder *self, WpSpaJson *json)
Adds a json value into the builder.
- Parameters:
self – the spa json builder object
json – (transfer none): the json value
-
void wp_spa_json_builder_add_from_string(WpSpaJsonBuilder *self, const gchar *json_str)
Adds a json string into the builder.
- Parameters:
self – the spa json builder object
json_str – the json string
-
void wp_spa_json_builder_add_from_stringn(WpSpaJsonBuilder *self, const gchar *json_str, size_t len)
Adds a json string with specific length into the builder.
- Parameters:
self – the spa json builder object
json_str – the json string
len – the specific length of the json string
-
void wp_spa_json_builder_add(WpSpaJsonBuilder *self, ...)
Adds values into the builder.
- Parameters:
self – the spa json builder object
... – the json values
-
void wp_spa_json_builder_add_valist(WpSpaJsonBuilder *self, va_list args)
This is the
va_list
version of wp_spa_json_builder_add()- Parameters:
self – the spa json builder object
args – the variable arguments passed to wp_spa_json_builder_add()
-
WpSpaJson *wp_spa_json_builder_end(WpSpaJsonBuilder *self)
Ends the builder process and returns the constructed spa json object.
- Parameters:
self – the spa json builder object
- Returns:
(transfer full): the constructed spa json object
-
WpSpaJsonParser *wp_spa_json_parser_ref(WpSpaJsonParser *self)
Increases the reference count of a spa json parser.
- Parameters:
self – a spa json parser object
- Returns:
(transfer full): self with an additional reference count on it
-
void wp_spa_json_parser_unref(WpSpaJsonParser *self)
Decreases the reference count on self and frees it when the ref count reaches zero.
- Parameters:
self – (transfer full): a spa json parser object
-
WpSpaJsonParser *wp_spa_json_parser_new_array(WpSpaJson *json)
Creates a spa json array parser. The json object must be valid for the entire life-cycle of the returned parser.
- Parameters:
json – the spa json array to parse
- Returns:
(transfer full): The new spa json parser
-
WpSpaJsonParser *wp_spa_json_parser_new_object(WpSpaJson *json)
Creates a spa json object parser. The json object must be valid for the entire life-cycle of the returned parser.
- Parameters:
json – the spa json object to parse
- Returns:
(transfer full): The new spa json parser
-
WpSpaJsonParser *wp_spa_json_parser_new_undefined(WpSpaJson *json)
Creates a new spa json parser for undefined type of data. The json object must be valid for the entire life-cycle of the returned parser.
This function allows creating a parser object for any type of spa json and is mostly useful to parse non-standard JSON data that should be treated as if it were an object or array, but does not start with a ‘{’ or ‘[’ character. Such data can be for instance a comma-separated list of single values (array) or key-value pairs (object). Such data is also the main configuration file, which is an object but doesn’t start with a ‘{’ character.
- Since
0.5.0
Note
If the data is an array or object, the parser will not enter it and the only token it will be able to parse is the same json object that is passed in as an argument. Use wp_spa_json_parser_new_array() or wp_spa_json_parser_new_object() to parse arrays or objects.
- Parameters:
json – the spa json to parse
- Returns:
(transfer full): The new spa json parser
-
gboolean wp_spa_json_parser_get_null(WpSpaJsonParser *self)
Gets the null value from a spa json parser.
- Parameters:
self – the spa json parser object
- Returns:
TRUE if the null value is present, FALSE otherwise
-
gboolean wp_spa_json_parser_get_boolean(WpSpaJsonParser *self, gboolean *value)
Gets the boolean value from a spa json parser.
- Parameters:
self – the spa json parser object
value – (out): the boolean value
- Returns:
TRUE if the value was obtained, FALSE otherwise
-
gboolean wp_spa_json_parser_get_int(WpSpaJsonParser *self, gint *value)
Gets the int value from a spa json parser object.
- Parameters:
self – the spa json parser object
value – (out): the int value
- Returns:
TRUE if the value was obtained, FALSE otherwise
-
gboolean wp_spa_json_parser_get_float(WpSpaJsonParser *self, float *value)
Gets the float value from a spa json parser object.
- Parameters:
self – the spa json parser object
value – (out): the float value
- Returns:
TRUE if the value was obtained, FALSE otherwise
-
gchar *wp_spa_json_parser_get_string(WpSpaJsonParser *self)
Gets the string value from a spa json parser object.
- Parameters:
self – the spa json parser object
- Returns:
(transfer full): The newly allocated parsed string
-
WpSpaJson *wp_spa_json_parser_get_json(WpSpaJsonParser *self)
Gets the spa json value from a spa json parser object.
Note
the returned spa json object references the original data instead of copying it, therefore the original data must be valid for the entire life-cycle of the returned object
- Parameters:
self – the spa json parser object
- Returns:
(transfer full): The spa json value or NULL if it could not be obtained
-
gboolean wp_spa_json_parser_get(WpSpaJsonParser *self, ...)
Gets the values from a spa json parser object.
- Parameters:
self – the spa json parser object
... – (out): a list of values to get, followed by NULL
- Returns:
TRUE if the value was obtained, FALSE otherwise
-
gboolean wp_spa_json_parser_get_valist(WpSpaJsonParser *self, va_list args)
This is the
va_list
version of wp_spa_json_parser_get()- Parameters:
self – the spa json parser object
args – the variable arguments passed to wp_spa_json_parser_get()
- Returns:
TRUE if the value was obtained, FALSE otherwise
-
WpIterator *wp_spa_json_new_iterator(WpSpaJson *self)
Creates a new iterator for a spa json object.
- Parameters:
self – the spa json object
- Returns:
(transfer full): the new spa json iterator
-
WP_TYPE_SPA_JSON (wp_spa_json_get_type ())
The WpSpaJson GType.
-
WP_TYPE_SPA_JSON_BUILDER (wp_spa_json_builder_get_type ())
The WpSpaJsonBuilder GType.
-
WP_TYPE_SPA_JSON_PARSER (wp_spa_json_parser_get_type ())
The WpSpaJsonParser GType.