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
//! [Simple Plugin API](https://docs.pipewire.org/page_spa_plugins.html)
//! [POD](https://docs.pipewire.org/page_spa_pod.html) and [JSON](https://docs.pipewire.org/group__spa__json.html) encoding.
//!
//! [SpaPod] wraps a [libspa_sys::spa_pod], providing high-level accessors and enabling mutation
//! of the Plain Old Data serialized inside. [SpaType] and the traits provided by this module
//! describe the format and meaning of the data within.
//!
//! [SpaJson] wraps a [libspa_sys::spa_json] and provides parsing facilities for JSON string data.
//!
//! # See also
//!
//! C API docs for:
//! - [SpaPod](https://pipewire.pages.freedesktop.org/wireplumber/c_api/spa_pod_api.html)
//! - [SpaType](https://pipewire.pages.freedesktop.org/wireplumber/c_api/spa_type_api.html)
//! - [SpaJson](https://pipewire.pages.freedesktop.org/wireplumber/c_api/spa_json_api.html)

#[cfg(feature = "v0_4_8")]
pub use self::json::{SpaJson, SpaJsonRef};
#[cfg(feature = "experimental")]
pub use self::props::SpaProps;
#[cfg(feature = "experimental")]
pub use self::route::{SpaRoute, SpaRoutes};
#[cfg(feature = "libspa")]
#[cfg_attr(docsrs, doc(cfg(feature = "libspa")))]
pub use libspa;
#[cfg(feature = "libspa")]
pub use libspa_pod::DebugValue;
pub use {
	self::{
		id_table::SpaIdTable,
		id_value::SpaIdValue,
		traits::{SpaBool, SpaPrimitive, SpaValue},
		type_::SpaType,
	},
	crate::auto::{SpaPod, SpaPodBuilder, SpaPodParser},
	libspa_sys as ffi,
};

#[cfg(feature = "v0_4_8")]
pub mod json;

mod builder;
mod id_table;
mod id_value;
#[cfg(feature = "libspa")]
mod libspa_pod;
mod parser;
mod pod;
#[cfg(feature = "experimental")]
mod props;
#[cfg(feature = "experimental")]
mod route;
mod traits;
#[path = "type.rs"]
mod type_;