mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-05-05 15:58:01 +02:00
spa-json: add new WpSpaJson API
This commit is contained in:
parent
0272e11c53
commit
4c1574117a
6 changed files with 2801 additions and 0 deletions
|
|
@ -24,6 +24,7 @@ wp_lib_sources = files(
|
|||
'session-item.c',
|
||||
'si-factory.c',
|
||||
'si-interfaces.c',
|
||||
'spa-json.c',
|
||||
'spa-pod.c',
|
||||
'spa-type.c',
|
||||
'state.c',
|
||||
|
|
@ -61,6 +62,7 @@ wp_lib_headers = files(
|
|||
'session-item.h',
|
||||
'si-factory.h',
|
||||
'si-interfaces.h',
|
||||
'spa-json.h',
|
||||
'spa-pod.h',
|
||||
'spa-type.h',
|
||||
'state.h',
|
||||
|
|
|
|||
1511
lib/wp/spa-json.c
Normal file
1511
lib/wp/spa-json.c
Normal file
File diff suppressed because it is too large
Load diff
257
lib/wp/spa-json.h
Normal file
257
lib/wp/spa-json.h
Normal file
|
|
@ -0,0 +1,257 @@
|
|||
/* WirePlumber
|
||||
*
|
||||
* Copyright © 2022 Collabora Ltd.
|
||||
* @author Julian Bouzas <julian.bouzas@collabora.com>
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#ifndef __WIREPLUMBER_SPA_JSON_H__
|
||||
#define __WIREPLUMBER_SPA_JSON_H__
|
||||
|
||||
#include <gio/gio.h>
|
||||
|
||||
#include "defs.h"
|
||||
#include "iterator.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
struct spa_json;
|
||||
|
||||
/*!
|
||||
* \brief The WpSpaJson GType
|
||||
* \ingroup wpspajson
|
||||
*/
|
||||
#define WP_TYPE_SPA_JSON (wp_spa_json_get_type ())
|
||||
WP_API
|
||||
GType wp_spa_json_get_type (void);
|
||||
|
||||
typedef struct _WpSpaJson WpSpaJson;
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_ref (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_unref (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
WpSpaJson * wp_spa_json_new_from_string (const gchar *json_str);
|
||||
|
||||
WP_API
|
||||
WpSpaJson * wp_spa_json_new_wrap (struct spa_json *json);
|
||||
|
||||
WP_API
|
||||
const struct spa_json * wp_spa_json_get_spa_json (const WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
const gchar * wp_spa_json_get_data (const WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
size_t wp_spa_json_get_size (const WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_copy (WpSpaJson *other);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_is_unique_owner (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_ensure_unique_owner (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_new_null (void);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_new_boolean (gboolean value);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_new_int (gint value);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_new_float (float value);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_new_string (const gchar *value);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_new_array (const gchar *format, ...)
|
||||
G_GNUC_NULL_TERMINATED;
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_new_array_valist (const gchar *format, va_list args);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_new_object (const gchar *key, const gchar *format, ...)
|
||||
G_GNUC_NULL_TERMINATED;
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_new_object_valist (const gchar *key, const gchar *format,
|
||||
va_list args);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_is_null (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_is_boolean (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_is_int (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_is_float (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_is_string (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_is_array (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_is_object (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parse_boolean (WpSpaJson *self, gboolean *value);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parse_int (WpSpaJson *self, gint *value);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parse_float (WpSpaJson *self, float *value);
|
||||
|
||||
WP_API
|
||||
gchar *wp_spa_json_parse_string (WpSpaJson *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parse_array (WpSpaJson *self, ...) G_GNUC_NULL_TERMINATED;
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parse_array_valist (WpSpaJson *self, va_list args);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parse_object (WpSpaJson *self, ...) G_GNUC_NULL_TERMINATED;
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parse_object_valist (WpSpaJson *self, va_list args);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_object_get (WpSpaJson *self, ...) G_GNUC_NULL_TERMINATED;
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_object_get_valist (WpSpaJson *self, va_list args);
|
||||
|
||||
WP_API
|
||||
WpIterator *wp_spa_json_new_iterator (WpSpaJson *self);
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WpSpaJson, wp_spa_json_unref)
|
||||
|
||||
/*!
|
||||
* \brief The WpSpaJsonBuilder GType
|
||||
* \ingroup wpspajson
|
||||
*/
|
||||
#define WP_TYPE_SPA_JSON_BUILDER (wp_spa_json_builder_get_type ())
|
||||
WP_API
|
||||
GType wp_spa_json_builder_get_type (void);
|
||||
|
||||
typedef struct _WpSpaJsonBuilder WpSpaJsonBuilder;
|
||||
|
||||
WP_API
|
||||
WpSpaJsonBuilder *wp_spa_json_builder_ref (WpSpaJsonBuilder *self);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_unref (WpSpaJsonBuilder *self);
|
||||
|
||||
WP_API
|
||||
WpSpaJsonBuilder *wp_spa_json_builder_new_array (void);
|
||||
|
||||
WP_API
|
||||
WpSpaJsonBuilder *wp_spa_json_builder_new_object (void);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_add_property (WpSpaJsonBuilder *self, const gchar *key);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_add_null (WpSpaJsonBuilder *self);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_add_boolean (WpSpaJsonBuilder *self, gboolean value);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_add_int (WpSpaJsonBuilder *self, gint value);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_add_float (WpSpaJsonBuilder *self, float value);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_add_string (WpSpaJsonBuilder *self, const gchar *value);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_add_json (WpSpaJsonBuilder *self, WpSpaJson *json);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_add (WpSpaJsonBuilder *self, ...)
|
||||
G_GNUC_NULL_TERMINATED;
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_builder_add_valist (WpSpaJsonBuilder *self, va_list args);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_builder_end (WpSpaJsonBuilder *self);
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WpSpaJsonBuilder, wp_spa_json_builder_unref)
|
||||
|
||||
/*!
|
||||
* \brief The WpSpaJsonParser GType
|
||||
* \ingroup wpspajson
|
||||
*/
|
||||
#define WP_TYPE_SPA_JSON_PARSER (wp_spa_json_parser_get_type ())
|
||||
WP_API
|
||||
GType wp_spa_json_parser_get_type (void);
|
||||
|
||||
typedef struct _WpSpaJsonParser WpSpaJsonParser;
|
||||
|
||||
WP_API
|
||||
WpSpaJsonParser *wp_spa_json_parser_ref (WpSpaJsonParser *self);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_parser_unref (WpSpaJsonParser *self);
|
||||
|
||||
WP_API
|
||||
WpSpaJsonParser *wp_spa_json_parser_new_array (WpSpaJson *json);
|
||||
|
||||
WP_API
|
||||
WpSpaJsonParser *wp_spa_json_parser_new_object (WpSpaJson *json);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parser_get_null (WpSpaJsonParser *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parser_get_boolean (WpSpaJsonParser *self,
|
||||
gboolean *value);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parser_get_int (WpSpaJsonParser *self, gint *value);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parser_get_float (WpSpaJsonParser *self, float *value);
|
||||
|
||||
WP_API
|
||||
gchar *wp_spa_json_parser_get_string (WpSpaJsonParser *self);
|
||||
|
||||
WP_API
|
||||
WpSpaJson *wp_spa_json_parser_get_json (WpSpaJsonParser *self);
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parser_get (WpSpaJsonParser *self, ...)
|
||||
G_GNUC_NULL_TERMINATED;
|
||||
|
||||
WP_API
|
||||
gboolean wp_spa_json_parser_get_valist (WpSpaJsonParser *self, va_list args);
|
||||
|
||||
WP_API
|
||||
void wp_spa_json_parser_end (WpSpaJsonParser *self);
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WpSpaJsonParser, wp_spa_json_parser_unref)
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
|
@ -33,6 +33,7 @@
|
|||
#include "session-item.h"
|
||||
#include "si-factory.h"
|
||||
#include "si-interfaces.h"
|
||||
#include "spa-json.h"
|
||||
#include "spa-pod.h"
|
||||
#include "spa-type.h"
|
||||
#include "state.h"
|
||||
|
|
|
|||
|
|
@ -62,6 +62,13 @@ test(
|
|||
env: common_env,
|
||||
)
|
||||
|
||||
test(
|
||||
'test-spa-json',
|
||||
executable('test-spa-json', 'spa-json.c',
|
||||
dependencies: common_deps, c_args: common_args),
|
||||
env: common_env,
|
||||
)
|
||||
|
||||
test(
|
||||
'test-spa-pod',
|
||||
executable('test-spa-pod', 'spa-pod.c',
|
||||
|
|
|
|||
1023
tests/wp/spa-json.c
Normal file
1023
tests/wp/spa-json.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue