<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GLib" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="wireplumber-0.5"/>
  <c:include name="wp/wp.h"/>
  <namespace name="Wp"
             version="0.5"
             shared-library="libwireplumber-0.5.so.0"
             c:identifier-prefixes="Wp"
             c:symbol-prefixes="wp">
    <alias name="ObjectFeatures" c:type="WpObjectFeatures">
      <source-position filename="lib/wp/object.h" line="32"/>
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="SpaIdTable" c:type="WpSpaIdTable">
      <source-position filename="lib/wp/spa-type.h" line="24"/>
      <type name="gpointer" c:type="gconstpointer"/>
    </alias>
    <alias name="SpaIdValue" c:type="WpSpaIdValue">
      <source-position filename="lib/wp/spa-type.h" line="28"/>
      <type name="gpointer" c:type="gconstpointer"/>
    </alias>
    <class name="AsyncEventHook"
           c:symbol-prefix="async_event_hook"
           c:type="WpAsyncEventHook"
           parent="InterestEventHook"
           glib:type-name="WpAsyncEventHook"
           glib:get-type="wp_async_event_hook_get_type"
           glib:type-struct="AsyncEventHookClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="6">An event hook that runs a WpTransition, implemented with closures.</doc>
      <source-position filename="lib/wp/event-hook.h" line="122"/>
      <constructor name="new" c:identifier="wp_async_event_hook_new">
        <source-position filename="lib/wp/event-hook.h" line="126"/>
        <return-value transfer-ownership="full">
          <type name="EventHook" c:type="WpEventHook*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="before" transfer-ownership="none">
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
          <parameter name="after" transfer-ownership="none">
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
          <parameter name="get_next_step" transfer-ownership="none">
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
          <parameter name="execute_step" transfer-ownership="none">
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="execute-step"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="GObject.Closure"/>
      </property>
      <property name="get-next-step"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="GObject.Closure"/>
      </property>
    </class>
    <record name="AsyncEventHookClass"
            c:type="WpAsyncEventHookClass"
            glib:is-gtype-struct-for="AsyncEventHook">
      <source-position filename="lib/wp/event-hook.h" line="122"/>
      <field name="parent_class">
        <type name="InterestEventHookClass" c:type="WpInterestEventHookClass"/>
      </field>
    </record>
    <bitfield name="BaseDirsFlags"
              glib:type-name="WpBaseDirsFlags"
              glib:get-type="wp_base_dirs_flags_get_type"
              c:type="WpBaseDirsFlags">
      <member name="env_config"
              value="1"
              c:identifier="WP_BASE_DIRS_ENV_CONFIG"
              glib:nick="env-config"
              glib:name="WP_BASE_DIRS_ENV_CONFIG">
      </member>
      <member name="env_data"
              value="2"
              c:identifier="WP_BASE_DIRS_ENV_DATA"
              glib:nick="env-data"
              glib:name="WP_BASE_DIRS_ENV_DATA">
      </member>
      <member name="env_module"
              value="4"
              c:identifier="WP_BASE_DIRS_ENV_MODULE"
              glib:nick="env-module"
              glib:name="WP_BASE_DIRS_ENV_MODULE">
      </member>
      <member name="xdg_config_home"
              value="256"
              c:identifier="WP_BASE_DIRS_XDG_CONFIG_HOME"
              glib:nick="xdg-config-home"
              glib:name="WP_BASE_DIRS_XDG_CONFIG_HOME">
      </member>
      <member name="xdg_data_home"
              value="512"
              c:identifier="WP_BASE_DIRS_XDG_DATA_HOME"
              glib:nick="xdg-data-home"
              glib:name="WP_BASE_DIRS_XDG_DATA_HOME">
      </member>
      <member name="xdg_config_dirs"
              value="1024"
              c:identifier="WP_BASE_DIRS_XDG_CONFIG_DIRS"
              glib:nick="xdg-config-dirs"
              glib:name="WP_BASE_DIRS_XDG_CONFIG_DIRS">
      </member>
      <member name="build_sysconfdir"
              value="2048"
              c:identifier="WP_BASE_DIRS_BUILD_SYSCONFDIR"
              glib:nick="build-sysconfdir"
              glib:name="WP_BASE_DIRS_BUILD_SYSCONFDIR">
      </member>
      <member name="xdg_data_dirs"
              value="4096"
              c:identifier="WP_BASE_DIRS_XDG_DATA_DIRS"
              glib:nick="xdg-data-dirs"
              glib:name="WP_BASE_DIRS_XDG_DATA_DIRS">
      </member>
      <member name="build_datadir"
              value="8192"
              c:identifier="WP_BASE_DIRS_BUILD_DATADIR"
              glib:nick="build-datadir"
              glib:name="WP_BASE_DIRS_BUILD_DATADIR">
      </member>
      <member name="build_libdir"
              value="16384"
              c:identifier="WP_BASE_DIRS_BUILD_LIBDIR"
              glib:nick="build-libdir"
              glib:name="WP_BASE_DIRS_BUILD_LIBDIR">
      </member>
      <member name="flag_module"
              value="16777216"
              c:identifier="WP_BASE_DIRS_FLAG_MODULE"
              glib:nick="flag-module"
              glib:name="WP_BASE_DIRS_FLAG_MODULE">
      </member>
      <member name="flag_subdir_wireplumber"
              value="33554432"
              c:identifier="WP_BASE_DIRS_FLAG_SUBDIR_WIREPLUMBER"
              glib:nick="flag-subdir-wireplumber"
              glib:name="WP_BASE_DIRS_FLAG_SUBDIR_WIREPLUMBER">
      </member>
      <member name="configuration"
              value="33570049"
              c:identifier="WP_BASE_DIRS_CONFIGURATION"
              glib:nick="configuration"
              glib:name="WP_BASE_DIRS_CONFIGURATION">
      </member>
      <member name="data"
              value="33567234"
              c:identifier="WP_BASE_DIRS_DATA"
              glib:nick="data"
              glib:name="WP_BASE_DIRS_DATA">
      </member>
      <member name="module"
              value="50348036"
              c:identifier="WP_BASE_DIRS_MODULE"
              glib:nick="module"
              glib:name="WP_BASE_DIRS_MODULE">
      </member>
    </bitfield>
    <class name="Client"
           c:symbol-prefix="client"
           c:type="WpClient"
           parent="GlobalProxy"
           glib:type-name="WpClient"
           glib:get-type="wp_client_get_type"
           glib:type-struct="ClientClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="17">The WpClient class allows accessing the properties and methods of a PipeWire client object (struct pw_client). A WpClient is constructed internally when a new client connects to PipeWire and it is made available through the WpObjectManager API.</doc>
      <source-position filename="lib/wp/client.h" line="24"/>
      <implements name="PipewireObject"/>
      <method name="send_error" c:identifier="wp_client_send_error">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="618">Send an error to the client.</doc>
        <source-position filename="lib/wp/client.h" line="27"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="620">the client</doc>
            <type name="Client" c:type="WpClient*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="621">the global id to report the error on</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="622">an errno style error code</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="623">the error message string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_permissions"
              c:identifier="wp_client_update_permissions"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="633">Update client's permissions on a list of objects.


An object id of -1 can be used to set the default object permissions for this client</doc>
        <source-position filename="lib/wp/client.h" line="31"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="635">the client</doc>
            <type name="Client" c:type="WpClient*"/>
          </instance-parameter>
          <parameter name="n_perm" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="636">the number of permissions specified in the variable arguments</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="637">@n_perm pairs of guint32 numbers; the first number is the object id and the second is the permissions that this client should have on this object</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="update_permissions_array"
              c:identifier="wp_client_update_permissions_array"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="648">Update client's permissions on a list of objects.


An object id of -1 can be used to set the default object permissions for this client</doc>
        <source-position filename="lib/wp/client.h" line="34"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="650">the client</doc>
            <type name="Client" c:type="WpClient*"/>
          </instance-parameter>
          <parameter name="n_perm" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="651">the number of permissions specified in the @permissions array</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="permissions" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="652">an array of permissions per object id</doc>
            <array length="0"
                   zero-terminated="0"
                   c:type="const pw_permission*">
              <type c:type="pw_permission"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="update_properties"
              c:identifier="wp_client_update_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="663">Updates the properties of @self.


This requires W and X permissions on the client.</doc>
        <source-position filename="lib/wp/client.h" line="38"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="665">the client</doc>
            <type name="Client" c:type="WpClient*"/>
          </instance-parameter>
          <parameter name="updates" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="666">updates to apply to the properties of @self; this does not need to include properties that have not changed</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="ClientClass"
            c:type="WpClientClass"
            glib:is-gtype-struct-for="Client">
      <source-position filename="lib/wp/client.h" line="24"/>
      <field name="parent_class">
        <type name="GlobalProxyClass" c:type="WpGlobalProxyClass"/>
      </field>
    </record>
    <interface name="ComponentLoader"
               c:symbol-prefix="component_loader"
               c:type="WpComponentLoader"
               glib:type-name="WpComponentLoader"
               glib:get-type="wp_component_loader_get_type"
               glib:type-struct="ComponentLoaderInterface">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="28">An interface that provides the ability to load components.
Components can be:
 - WirePlumber modules (libraries that provide WpPlugin and WpSiFactory objects)
 - Scripts (ex. lua scripts)

The WirePlumber library provides built-in support for loading WirePlumber modules, without a component loader. For other kinds of components, a component loader is meant to be provided in by some WirePlumber module. For Lua scripts specifically, a component loader is provided by the lua scripting module.</doc>
      <source-position filename="lib/wp/component-loader.h" line="41"/>
      <virtual-method name="load" glib:finish-func="load_finish">
        <source-position filename="lib/wp/component-loader.h" line="32"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="ComponentLoader" c:type="WpComponentLoader*"/>
          </instance-parameter>
          <parameter name="core" transfer-ownership="none">
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="component" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="6">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="load_finish" introspectable="0" throws="1">
        <source-position filename="lib/wp/component-loader.h" line="36"/>
        <return-value>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="ComponentLoader" c:type="WpComponentLoader*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="supports_type">
        <source-position filename="lib/wp/component-loader.h" line="30"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="ComponentLoader" c:type="WpComponentLoader*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
    </interface>
    <record name="ComponentLoaderInterface"
            c:type="WpComponentLoaderInterface"
            glib:is-gtype-struct-for="ComponentLoader">
      <source-position filename="lib/wp/component-loader.h" line="41"/>
      <field name="interface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="supports_type">
        <callback name="supports_type">
          <source-position filename="lib/wp/component-loader.h" line="30"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="ComponentLoader" c:type="WpComponentLoader*"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="load">
        <callback name="load">
          <source-position filename="lib/wp/component-loader.h" line="32"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="ComponentLoader" c:type="WpComponentLoader*"/>
            </parameter>
            <parameter name="core" transfer-ownership="none">
              <type name="Core" c:type="WpCore*"/>
            </parameter>
            <parameter name="component" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="args" transfer-ownership="none">
              <type name="SpaJson" c:type="WpSpaJson*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="7">
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="load_finish" introspectable="0">
        <callback name="load_finish" introspectable="0" throws="1">
          <source-position filename="lib/wp/component-loader.h" line="36"/>
          <return-value>
            <type name="GObject.Object" c:type="GObject*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="ComponentLoader" c:type="WpComponentLoader*"/>
            </parameter>
            <parameter name="res" transfer-ownership="none">
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="Conf"
           c:symbol-prefix="conf"
           c:type="WpConf"
           parent="GObject.Object"
           glib:type-name="WpConf"
           glib:get-type="wp_conf_get_type"
           glib:type-struct="ConfClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="44">WpConf allows accessing the different sections of the wireplumber configuration.</doc>
      <source-position filename="lib/wp/conf.h" line="26"/>
      <constructor name="new" c:identifier="wp_conf_new">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="715">Creates a new WpConf object.


This does not open the files, it only creates the object. For most use cases, you should use wp_conf_new_open() instead.</doc>
        <source-position filename="lib/wp/conf.h" line="29"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="726">a new WpConf object</doc>
          <type name="Conf" c:type="WpConf*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="717">the name of the configuration file</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="718">a WpProperties with keys specifying how to load the WpConf object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_open" c:identifier="wp_conf_new_open" throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="730">Creates a new WpConf object and opens the configuration file and its fragments, keeping them mapped in memory for further access.</doc>
        <source-position filename="lib/wp/conf.h" line="32"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="741">a new WpConf object, or NULL if an error occurred</doc>
          <type name="Conf" c:type="WpConf*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="732">the name of the configuration file</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="733">a WpProperties with keys specifying how to load the WpConf object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="close" c:identifier="wp_conf_close">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="759">Closes the configuration file and its fragments.</doc>
        <source-position filename="lib/wp/conf.h" line="39"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="761">the configuration</doc>
            <type name="Conf" c:type="WpConf*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="wp_conf_get_name"
              glib:get-property="name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="784">Gets the name of the configuration file.</doc>
        <source-position filename="lib/wp/conf.h" line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="793">the name of the configuration file</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="786">the configuration</doc>
            <type name="Conf" c:type="WpConf*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_section" c:identifier="wp_conf_get_section">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="797">This method will get the JSON value of a specific section from the configuration. If the same section is defined in multiple locations, the sections with the same name will be either merged in case of arrays and objects, or overridden in case of boolean, int, double and strings.</doc>
        <source-position filename="lib/wp/conf.h" line="48"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="807">the JSON value of the section or NULL if the section does not exist</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="799">the configuration</doc>
            <type name="Conf" c:type="WpConf*"/>
          </instance-parameter>
          <parameter name="section" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="800">the section name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_open" c:identifier="wp_conf_is_open">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="771">Tests if the configuration files are open.</doc>
        <source-position filename="lib/wp/conf.h" line="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="780">TRUE if the configuration files are open, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="773">the configuration</doc>
            <type name="Conf" c:type="WpConf*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open" c:identifier="wp_conf_open" throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="745">Opens the configuration file and its fragments and keeps them mapped in memory for further access.</doc>
        <source-position filename="lib/wp/conf.h" line="36"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="755">TRUE on success, FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="747">the configuration</doc>
            <type name="Conf" c:type="WpConf*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="parse_pw_context_sections"
              c:identifier="wp_conf_parse_pw_context_sections">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="826">Parses standard pw_context sections from @conf.</doc>
        <source-position filename="lib/wp/conf.h" line="55"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="828">the configuration</doc>
            <type name="Conf" c:type="WpConf*"/>
          </instance-parameter>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="829">the associated pw_context</doc>
            <type name="gpointer" c:type="pw_context*"/>
          </parameter>
        </parameters>
      </method>
      <method name="section_update_props"
              c:identifier="wp_conf_section_update_props">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="811">Updates the given properties with the values of a specific section from the configuration.</doc>
        <source-position filename="lib/wp/conf.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="822">the number of properties updated</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="813">the configuration</doc>
            <type name="Conf" c:type="WpConf*"/>
          </instance-parameter>
          <parameter name="section" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="814">the section name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="815">the properties to update</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_name"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="properties"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Properties"/>
      </property>
    </class>
    <record name="ConfClass"
            c:type="WpConfClass"
            glib:is-gtype-struct-for="Conf">
      <source-position filename="lib/wp/conf.h" line="26"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="ConstraintType"
                 glib:type-name="WpConstraintType"
                 glib:get-type="wp_constraint_type_get_type"
                 c:type="WpConstraintType">
      <member name="none"
              value="0"
              c:identifier="WP_CONSTRAINT_TYPE_NONE"
              glib:nick="none"
              glib:name="WP_CONSTRAINT_TYPE_NONE">
      </member>
      <member name="pw_global_property"
              value="1"
              c:identifier="WP_CONSTRAINT_TYPE_PW_GLOBAL_PROPERTY"
              glib:nick="pw-global-property"
              glib:name="WP_CONSTRAINT_TYPE_PW_GLOBAL_PROPERTY">
      </member>
      <member name="pw_property"
              value="2"
              c:identifier="WP_CONSTRAINT_TYPE_PW_PROPERTY"
              glib:nick="pw-property"
              glib:name="WP_CONSTRAINT_TYPE_PW_PROPERTY">
      </member>
      <member name="g_property"
              value="3"
              c:identifier="WP_CONSTRAINT_TYPE_G_PROPERTY"
              glib:nick="g-property"
              glib:name="WP_CONSTRAINT_TYPE_G_PROPERTY">
      </member>
    </enumeration>
    <enumeration name="ConstraintVerb"
                 glib:type-name="WpConstraintVerb"
                 glib:get-type="wp_constraint_verb_get_type"
                 c:type="WpConstraintVerb">
      <member name="equals"
              value="61"
              c:identifier="WP_CONSTRAINT_VERB_EQUALS"
              glib:nick="equals"
              glib:name="WP_CONSTRAINT_VERB_EQUALS">
      </member>
      <member name="not_equals"
              value="33"
              c:identifier="WP_CONSTRAINT_VERB_NOT_EQUALS"
              glib:nick="not-equals"
              glib:name="WP_CONSTRAINT_VERB_NOT_EQUALS">
      </member>
      <member name="in_list"
              value="99"
              c:identifier="WP_CONSTRAINT_VERB_IN_LIST"
              glib:nick="in-list"
              glib:name="WP_CONSTRAINT_VERB_IN_LIST">
      </member>
      <member name="in_range"
              value="126"
              c:identifier="WP_CONSTRAINT_VERB_IN_RANGE"
              glib:nick="in-range"
              glib:name="WP_CONSTRAINT_VERB_IN_RANGE">
      </member>
      <member name="matches"
              value="35"
              c:identifier="WP_CONSTRAINT_VERB_MATCHES"
              glib:nick="matches"
              glib:name="WP_CONSTRAINT_VERB_MATCHES">
      </member>
      <member name="is_present"
              value="43"
              c:identifier="WP_CONSTRAINT_VERB_IS_PRESENT"
              glib:nick="is-present"
              glib:name="WP_CONSTRAINT_VERB_IS_PRESENT">
      </member>
      <member name="is_absent"
              value="45"
              c:identifier="WP_CONSTRAINT_VERB_IS_ABSENT"
              glib:nick="is-absent"
              glib:name="WP_CONSTRAINT_VERB_IS_ABSENT">
      </member>
    </enumeration>
    <class name="Core"
           c:symbol-prefix="core"
           c:type="WpCore"
           parent="Object"
           glib:type-name="WpCore"
           glib:get-type="wp_core_get_type"
           glib:type-struct="CoreClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="55">The core is the central object around which everything operates. It is essential to create a WpCore before using any other WirePlumber API.
The core object has the following responsibilities:
 - it initializes the PipeWire library
 - it creates a pw_context and allows connecting to the PipeWire server, creating a local pw_core
 - it glues the PipeWire library's event loop system with GMainLoop
 - it maintains a list of registered objects, which other classes use to keep objects loaded permanently into memory
 - it watches the PipeWire registry and keeps track of remote and local objects that appear in the registry, making them accessible through the WpObjectManager API.

The core is also responsible for loading components, which are defined in the main configuration file. Components are loaded when WP_CORE_FEATURE_COMPONENTS is activated.
The main configuration file needs to be created and opened before the core is created, using the WpConf API. It is then passed to the core as an argument in the constructor.
If a configuration file is not provided, the core will let the underlying pw_context load its own configuration, based on the rules that apply to all pipewire clients (e.g. it respects the PIPEWIRE_CONFIG_NAME environment variable and loads "client.conf" as a last resort).
If a configuration file is provided, the core does not let the underlying pw_context load any configuration and instead uses the provided WpConf object.</doc>
      <source-position filename="lib/wp/core.h" line="40"/>
      <constructor name="new" c:identifier="wp_core_new">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="839">Creates a new core object.</doc>
        <source-position filename="lib/wp/core.h" line="45"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="850">a new WpCore</doc>
          <type name="Core" c:type="WpCore*"/>
        </return-value>
        <parameters>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="841">the GMainContext to use for events</doc>
            <type name="GLib.MainContext" c:type="GMainContext*"/>
          </parameter>
          <parameter name="conf"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="842">the main configuration file</doc>
            <type name="Conf" c:type="WpConf*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="843">additional properties, which are also passed to pw_context_new() and pw_context_connect()</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="clone" c:identifier="wp_core_clone">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="854">Clones a core with the same context as @self.</doc>
        <source-position filename="lib/wp/core.h" line="49"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="863">the clone WpCore</doc>
          <type name="Core" c:type="WpCore*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="856">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="connect" c:identifier="wp_core_connect">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="948">Connects this core to the PipeWire server.


When connection succeeds, the WpCore "connected" signal is emitted.</doc>
        <source-position filename="lib/wp/core.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="958">TRUE if the core is effectively connected or FALSE if connection failed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="950">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="connect_fd"
              c:identifier="wp_core_connect_fd"
              version="0.5.6">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="962">Connects this core to the PipeWire server on the given socket.


When connection succeeds, the WpCore "connected" signal is emitted.</doc>
        <source-position filename="lib/wp/core.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="973">TRUE if the core is effectively connected or FALSE if connection failed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="964">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="965">the connected socket to use, the socket will be closed automatically on disconnect or error</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="disconnect" c:identifier="wp_core_disconnect">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="979">Disconnects this core from the PipeWire server.


This also effectively destroys all WpCore objects that were created through the registry, destroys the pw_core and finally emits the WpCore "disconnected" signal.</doc>
        <source-position filename="lib/wp/core.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="981">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="find_object" c:identifier="wp_core_find_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1244">Finds a registered object.</doc>
        <source-position filename="lib/wp/core.h" line="145"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1255">the registered object or NULL if not found</doc>
          <type name="GObject.Object" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1246">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1247">a function that takes the object being searched as the first argument and @data as the second. it should return TRUE if the object is found or FALSE otherwise</doc>
            <type name="GLib.EqualFunc" c:type="GEqualFunc"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1248">the second argument to @func</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_conf"
              c:identifier="wp_core_get_conf"
              glib:get-property="conf">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="881">Gets the main configuration file of the core.</doc>
        <source-position filename="lib/wp/core.h" line="55"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="890">the main configuration file</doc>
          <type name="Conf" c:type="WpConf*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="883">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_export_core" c:identifier="wp_core_get_export_core">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="867">Returns the special WpCore that is used to maintain a secondary connection to PipeWire, for exporting objects.


The export core is enabled by loading the built-in "export-core" component.</doc>
        <source-position filename="lib/wp/core.h" line="52"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="877">the export WpCore</doc>
          <type name="Core" c:type="WpCore*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="869">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_g_main_context"
              c:identifier="wp_core_get_g_main_context"
              glib:get-property="g-main-context">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="894">Gets the GMainContext of the core.</doc>
        <source-position filename="lib/wp/core.h" line="58"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="903">the GMainContext that is in use by this core for events</doc>
          <type name="GLib.MainContext" c:type="GMainContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="896">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_own_bound_id"
              c:identifier="wp_core_get_own_bound_id"
              version="0.4.16">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1005">Gets the bound id of the client object that is created as a result of this core being connected to the PipeWire daemon.</doc>
        <source-position filename="lib/wp/core.h" line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1014">the bound id of this client</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1007">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_properties"
              c:identifier="wp_core_get_properties"
              glib:get-property="properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1098">Gets the properties of the core.</doc>
        <source-position filename="lib/wp/core.h" line="107"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1107">the properties of @self</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1100">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pw_context"
              c:identifier="wp_core_get_pw_context"
              glib:get-property="pw-context">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="907">Gets the internal PipeWire context of the core.</doc>
        <source-position filename="lib/wp/core.h" line="61"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="916">the internal pw_context object</doc>
          <type name="gpointer" c:type="pw_context*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="909">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pw_core"
              c:identifier="wp_core_get_pw_core"
              glib:get-property="pw-core">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="920">Gets the internal PipeWire core of the core.</doc>
        <source-position filename="lib/wp/core.h" line="64"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="929">the internal pw_core object, or NULL if the core is not connected to PipeWire</doc>
          <type name="gpointer" c:type="pw_core*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="922">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_cookie"
              c:identifier="wp_core_get_remote_cookie">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1020">Gets the cookie of the core's connected PipeWire instance.</doc>
        <source-position filename="lib/wp/core.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1029">The cookie of the PipeWire instance that @self is connected to. The cookie is a unique random number for identifying an instance of PipeWire</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1022">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_host_name"
              c:identifier="wp_core_get_remote_host_name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1059">Gets the host name of the core's connected PipeWire instance.</doc>
        <source-position filename="lib/wp/core.h" line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1068">The name of the host where the PipeWire instance that @self is connected to is running on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1061">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_name" c:identifier="wp_core_get_remote_name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1033">Gets the name of the core's connected PipeWire instance.</doc>
        <source-position filename="lib/wp/core.h" line="92"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1042">The name of the PipeWire instance that @self is connected to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1035">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_properties"
              c:identifier="wp_core_get_remote_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1085">Gets the properties of the core's connected PipeWire instance.</doc>
        <source-position filename="lib/wp/core.h" line="104"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1094">the properties of the PipeWire instance that @self is connected to</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1087">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_user_name"
              c:identifier="wp_core_get_remote_user_name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1046">Gets the user name of the core's connected PipeWire instance.</doc>
        <source-position filename="lib/wp/core.h" line="95"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1055">The name of the user that started the PipeWire instance that @self is connected to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1048">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_version"
              c:identifier="wp_core_get_remote_version">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1072">Gets the version of the core's connected PipeWire instance.</doc>
        <source-position filename="lib/wp/core.h" line="101"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1081">The version of the PipeWire instance that @self is connected to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1074">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_vm_type"
              c:identifier="wp_core_get_vm_type"
              version="0.4.11">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="933">Gets the virtual machine type of the core.</doc>
        <source-position filename="lib/wp/core.h" line="67"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="942">a comma separated string with all the virtual machine types that this core matches, or NULL if the core is not running in a virtual machine.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="935">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="idle_add" c:identifier="wp_core_idle_add">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1125">Adds an idle callback to be called in the same GMainContext as the one used by this core.


This is essentially the same as g_idle_add_full(), but it adds the created GSource on the GMainContext used by this core instead of the default context.</doc>
        <source-position filename="lib/wp/core.h" line="115"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1127">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="source"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1128">the source</doc>
            <type name="GLib.Source" c:type="GSource**"/>
          </parameter>
          <parameter name="function"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1129">the function to call</doc>
            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1130">data to pass to @function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1131">a function to destroy @data</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="idle_add_closure" c:identifier="wp_core_idle_add_closure">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1142">Adds an idle callback to be called in the same GMainContext as the one used by this core.


This is the same as wp_core_idle_add(), but it allows you to specify a GClosure instead of a C callback.</doc>
        <source-position filename="lib/wp/core.h" line="119"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1144">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="source"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1145">the source</doc>
            <type name="GLib.Source" c:type="GSource**"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1146">the closure to invoke</doc>
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
        </parameters>
      </method>
      <method name="install_object_manager"
              c:identifier="wp_core_install_object_manager">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2992">Installs the object manager on this core, activating its internal management engine.


This will immediately emit signals about objects added on @om if objects that the @om is interested in were in existence already.</doc>
        <source-position filename="lib/wp/core.h" line="157"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2994">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="om" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2995">a WpObjectManager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_connected" c:identifier="wp_core_is_connected">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="992">Checks if the core is connected to PipeWire.</doc>
        <source-position filename="lib/wp/core.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1001">TRUE if the core is connected to PipeWire, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="994">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load_component"
              c:identifier="wp_core_load_component"
              glib:finish-func="load_component_finish">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="677">Loads the specified @component on @self.


The @type will determine which component loader to use. The following types are built-in and will always work without a component loader:
 - "module" - Loads a WirePlumber module
 - "array" - Loads multiple components interpreting the @args as a JSON array with component definitions, as they would appear in the configuration file. When this type is used, @component is ignored and can be NULL</doc>
        <source-position filename="lib/wp/component-loader.h" line="44"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="679">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="component"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="680">the module name or file name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="681">the type of the component</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="args"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="682">additional arguments for the component, expected to be a JSON object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </parameter>
          <parameter name="provides"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="683">the name of the feature that this component will provide if it loads successfully; this can be queried later with wp_core_test_feature()</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="684">optional GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="6">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="685">the callback to call when the operation is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="686">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_component_finish"
              c:identifier="wp_core_load_component_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="700">Finishes the operation started by wp_core_load_component(). This is meant to be called in the callback that was passed to that method.</doc>
        <source-position filename="lib/wp/component-loader.h" line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="711">TRUE if the requested component was loaded, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="702">the component loader object</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="703">the async result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="register_object" c:identifier="wp_core_register_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1259">Registers @obj with the core, making it appear on WpObjectManager instances as well.


The core will also maintain a ref to that object until it is removed.</doc>
        <source-position filename="lib/wp/core.h" line="149"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1261">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="obj" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1262">the object to register</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_object" c:identifier="wp_core_remove_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1273">Detaches and unrefs the specified object from this core.</doc>
        <source-position filename="lib/wp/core.h" line="152"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1275">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1276">a pointer to the object to remove</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="sync"
              c:identifier="wp_core_sync"
              glib:finish-func="sync_finish">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1192">Asks the PipeWire server to call the @callback via an event.


Since methods are handled in-order and events are delivered in-order, this can be used as a barrier to ensure all previous methods and the resulting events have been handled.
In both success and error cases, @callback is always called. Use wp_core_sync_finish() from within the @callback to determine whether the operation completed successfully or if an error occurred.</doc>
        <source-position filename="lib/wp/core.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1206">TRUE if the sync operation was started, FALSE if an error occurred before returning from this function</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1194">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1195">a GCancellable to cancel the operation</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1196">a function to call when the operation is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1197">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="sync_closure"
              c:identifier="wp_core_sync_closure"
              version="0.4.6">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1210">Asks the PipeWire server to invoke the @closure via an event.


Since methods are handled in-order and events are delivered in-order, this can be used as a barrier to ensure all previous methods and the resulting events have been handled.
In both success and error cases, @closure is always invoked. Use wp_core_sync_finish() from within the @closure to determine whether the operation completed successfully or if an error occurred.</doc>
        <source-position filename="lib/wp/core.h" line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1223">TRUE if the sync operation was started, FALSE if an error occurred before returning from this function</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1212">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1213">a GCancellable to cancel the operation</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1214">a closure to invoke when the operation is done</doc>
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
        </parameters>
      </method>
      <method name="sync_finish" c:identifier="wp_core_sync_finish" throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1229">This function is meant to be called from within the callback of wp_core_sync() in order to determine the success or failure of the operation.</doc>
        <source-position filename="lib/wp/core.h" line="139"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1240">TRUE if the operation succeeded, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1231">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1232">a GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="test_feature" c:identifier="wp_core_test_feature">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1286">Test if a global feature is provided.</doc>
        <source-position filename="lib/wp/core.h" line="162"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1296">TRUE if the feature is provided, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1288">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="feature" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1289">the feature name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="timeout_add" c:identifier="wp_core_timeout_add">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1157">Adds a timeout callback to be called at regular intervals in the same GMainContext as the one used by this core.


The function is called repeatedly until it returns FALSE, at which point the timeout is automatically destroyed and the function will not be called again. The first call to the function will be at the end of the first interval.
This is essentially the same as g_timeout_add_full(), but it adds the created GSource on the GMainContext used by this core instead of the default context.</doc>
        <source-position filename="lib/wp/core.h" line="123"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1159">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="source"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1160">the source</doc>
            <type name="GLib.Source" c:type="GSource**"/>
          </parameter>
          <parameter name="timeout_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1161">the timeout in milliseconds</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="function"
                     transfer-ownership="none"
                     scope="notified"
                     closure="3"
                     destroy="4">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1162">the function to call</doc>
            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1163">data to pass to @function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1164">a function to destroy @data</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="timeout_add_closure"
              c:identifier="wp_core_timeout_add_closure">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1176">Adds a timeout callback to be called at regular intervals in the same GMainContext as the one used by this core.


This is the same as wp_core_timeout_add(), but it allows you to specify a GClosure instead of a C callback.</doc>
        <source-position filename="lib/wp/core.h" line="127"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1178">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="source"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1179">the source</doc>
            <type name="GLib.Source" c:type="GSource**"/>
          </parameter>
          <parameter name="timeout_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1180">the timeout in milliseconds</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1181">the closure to invoke</doc>
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_properties"
              c:identifier="wp_core_update_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1111">Updates the properties of @self on the connection, making them appear on the client object that represents this connection.


If @self is not connected yet, these properties are stored and passed to pw_context_connect() when connecting.</doc>
        <source-position filename="lib/wp/core.h" line="110"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1113">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </instance-parameter>
          <parameter name="updates" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1114">updates to apply to the properties of @self; this does not need to include properties that have not changed</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <property name="conf"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_conf">
        <type name="Conf"/>
      </property>
      <property name="g-main-context"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_g_main_context">
        <type name="GLib.MainContext"/>
      </property>
      <property name="properties"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_properties">
        <type name="Properties"/>
      </property>
      <property name="pw-context"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_pw_context">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="pw-core" transfer-ownership="none" getter="get_pw_core">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <glib:signal name="connected" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="disconnected" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="CoreClass"
            c:type="WpCoreClass"
            glib:is-gtype-struct-for="Core">
      <source-position filename="lib/wp/core.h" line="40"/>
      <field name="parent_class">
        <type name="ObjectClass" c:type="WpObjectClass"/>
      </field>
    </record>
    <bitfield name="CoreFeatures"
              glib:type-name="WpCoreFeatures"
              glib:get-type="wp_core_features_get_type"
              c:type="WpCoreFeatures">
      <member name="connected"
              value="1"
              c:identifier="WP_CORE_FEATURE_CONNECTED"
              glib:nick="connected"
              glib:name="WP_CORE_FEATURE_CONNECTED">
      </member>
      <member name="components"
              value="2"
              c:identifier="WP_CORE_FEATURE_COMPONENTS"
              glib:nick="components"
              glib:name="WP_CORE_FEATURE_COMPONENTS">
      </member>
    </bitfield>
    <function-macro name="DEFINE_LOCAL_LOG_TOPIC"
                    c:identifier="WP_DEFINE_LOCAL_LOG_TOPIC"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="79"/>
      <parameters>
        <parameter name="name">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Device"
           c:symbol-prefix="device"
           c:type="WpDevice"
           parent="GlobalProxy"
           glib:type-name="WpDevice"
           glib:get-type="wp_device_get_type"
           glib:type-struct="DeviceClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="77">The WpDevice class allows accessing the properties and methods of a PipeWire device object (struct pw_device).
A WpDevice is constructed internally when a new device appears on the PipeWire registry and it is made available through the WpObjectManager API. Alternatively, a WpDevice can also be constructed using wp_device_new_from_factory(), which creates a new device object on the remote PipeWire server by calling into a factory.</doc>
      <source-position filename="lib/wp/device.h" line="24"/>
      <implements name="PipewireObject"/>
      <constructor name="new_from_factory"
                   c:identifier="wp_device_new_from_factory">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1300">Constructs a device on the PipeWire server by asking the remote factory @factory_name to create it.


Because of the nature of the PipeWire protocol, this operation completes asynchronously at some point in the future. In order to find out when this is done, you should call wp_object_activate(), requesting at least WP_PROXY_FEATURE_BOUND. When this feature is ready, the device is ready for use on the server. If the device cannot be created, this activation operation will fail.</doc>
        <source-position filename="lib/wp/device.h" line="27"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1312">the new device or NULL if the core is not connected and therefore the device cannot be created</doc>
          <type name="Device" c:type="WpDevice*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1302">the wireplumber core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="factory_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1303">the pipewire factory name to construct the device</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1304">the properties to pass to the factory</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
    </class>
    <record name="DeviceClass"
            c:type="WpDeviceClass"
            glib:is-gtype-struct-for="Device">
      <source-position filename="lib/wp/device.h" line="24"/>
      <field name="parent_class">
        <type name="GlobalProxyClass" c:type="WpGlobalProxyClass"/>
      </field>
    </record>
    <enumeration name="Direction"
                 glib:type-name="WpDirection"
                 glib:get-type="wp_direction_get_type"
                 c:type="WpDirection">
      <member name="input"
              value="0"
              c:identifier="WP_DIRECTION_INPUT"
              glib:nick="input"
              glib:name="WP_DIRECTION_INPUT">
      </member>
      <member name="output"
              value="1"
              c:identifier="WP_DIRECTION_OUTPUT"
              glib:nick="output"
              glib:name="WP_DIRECTION_OUTPUT">
      </member>
    </enumeration>
    <record name="Event"
            c:type="WpEvent"
            opaque="1"
            glib:type-name="WpEvent"
            glib:get-type="wp_event_get_type"
            c:symbol-prefix="event">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="89">WpEvent describes an event, an event is an entity which can be pushed on to event stack and the event dispatcher is going to pick and dispatch it.</doc>
      <source-position filename="lib/wp/event.h" line="31"/>
      <constructor name="new" c:identifier="wp_event_new">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1613">Creates a new event.</doc>
        <source-position filename="lib/wp/event.h" line="34"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1626">the newly constructed event</doc>
          <type name="Event" c:type="WpEvent*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1615">the type of the event</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="priority" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1616">the priority of the event</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1617">properties of the event</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1618">the source of the event</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="subject"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1619">the object that the event is about</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="collect_hooks" c:identifier="wp_event_collect_hooks">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1749">Collects all the hooks registered in the @dispatcher that run for this @event.</doc>
        <source-position filename="lib/wp/event.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1759">TRUE if at least one hook has been collected, FALSE if no hooks run for this event or an error occurred</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1751">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
          <parameter name="dispatcher" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1752">the event dispatcher</doc>
            <type name="EventDispatcher" c:type="WpEventDispatcher*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_cancellable" c:identifier="wp_event_get_cancellable">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1695">Returns the internal GCancellable that is used to track whether this event has been stopped by wp_event_stop_processing()</doc>
        <source-position filename="lib/wp/event.h" line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1704">the cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1697">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="wp_event_get_data">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1735">Gets the data that was previously associated with @key by wp_event_set_data()</doc>
        <source-position filename="lib/wp/event.h" line="68"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1745">the data associated with @key or %NULL</doc>
          <type name="GObject.Value" c:type="const GValue*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1737">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1738">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="wp_event_get_name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1630">Gets the name of the event.</doc>
        <source-position filename="lib/wp/event.h" line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1639">the event name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1632">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_priority" c:identifier="wp_event_get_priority">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1643">Gets the priority of the event.</doc>
        <source-position filename="lib/wp/event.h" line="44"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1652">the event priority</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1645">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_properties" c:identifier="wp_event_get_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1656">Gets the properties of the Event.</doc>
        <source-position filename="lib/wp/event.h" line="47"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1665">the properties of the event</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1658">the handle</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source" c:identifier="wp_event_get_source">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1669">Gets the Source Object of the Event.</doc>
        <source-position filename="lib/wp/event.h" line="50"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1678">the source of the event</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1671">the handle</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subject" c:identifier="wp_event_get_subject">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1682">Gets the Subject Object of the Event.</doc>
        <source-position filename="lib/wp/event.h" line="56"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1691">the subject of the event</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1684">the handle</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="new_hooks_iterator"
              c:identifier="wp_event_new_hooks_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1763">Returns an iterator that iterates over all the hooks that were collected by wp_event_collect_hooks()</doc>
        <source-position filename="lib/wp/event.h" line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1772">the new iterator</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1765">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_event_ref">
        <source-position filename="lib/wp/event.h" line="38"/>
        <return-value transfer-ownership="full">
          <type name="Event" c:type="WpEvent*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_data" c:identifier="wp_event_set_data">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1720">Stores @data on the event, associated with the specified @key.


This can be used to exchange arbitrary data between hooks that run for this event.</doc>
        <source-position filename="lib/wp/event.h" line="65"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1722">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1723">the key to associate @data with</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1724">the data element, or %NULL to remove any previous data associated with this @key</doc>
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="stop_processing" c:identifier="wp_event_stop_processing">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1708">Stops processing of this event; any further hooks will not be executed from this moment onwards and the event will be discarded from the stack.</doc>
        <source-position filename="lib/wp/event.h" line="62"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1710">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_event_unref">
        <source-position filename="lib/wp/event.h" line="41"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Event" c:type="WpEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="EventDispatcher"
           c:symbol-prefix="event_dispatcher"
           c:type="WpEventDispatcher"
           parent="GObject.Object"
           glib:type-name="WpEventDispatcher"
           glib:get-type="wp_event_dispatcher_get_type"
           glib:type-struct="EventDispatcherClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="100">The event dispatcher holds all the events and hooks and dispatches them. It orchestras the show on event stack.</doc>
      <source-position filename="lib/wp/event-dispatcher.h" line="26"/>
      <function name="get_instance"
                c:identifier="wp_event_dispatcher_get_instance">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1418">Returns the event dispatcher instance that is associated with the given core.


This method will also create the instance and register it with the core, if it had not been created before.</doc>
        <source-position filename="lib/wp/event-dispatcher.h" line="30"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1428">the event dispatcher instance</doc>
          <type name="EventDispatcher" c:type="WpEventDispatcher*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1420">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
        </parameters>
      </function>
      <method name="new_hooks_iterator"
              c:identifier="wp_event_dispatcher_new_hooks_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1471">Returns an iterator to iterate over all the registered hooks.</doc>
        <source-position filename="lib/wp/event-dispatcher.h" line="44"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1480">a new iterator</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1473">the event dispatcher</doc>
            <type name="EventDispatcher" c:type="WpEventDispatcher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="push_event" c:identifier="wp_event_dispatcher_push_event">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1432">Pushes a new event onto the event stack for dispatching only if there are any hooks are available for it.</doc>
        <source-position filename="lib/wp/event-dispatcher.h" line="33"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1434">the dispatcher</doc>
            <type name="EventDispatcher" c:type="WpEventDispatcher*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1435">the new event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </parameter>
        </parameters>
      </method>
      <method name="register_hook"
              c:identifier="wp_event_dispatcher_register_hook">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1445">Registers an event hook.</doc>
        <source-position filename="lib/wp/event-dispatcher.h" line="36"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1447">the event dispatcher</doc>
            <type name="EventDispatcher" c:type="WpEventDispatcher*"/>
          </instance-parameter>
          <parameter name="hook" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1448">the hook to register</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unregister_hook"
              c:identifier="wp_event_dispatcher_unregister_hook">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1458">Unregisters an event hook.</doc>
        <source-position filename="lib/wp/event-dispatcher.h" line="40"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1460">the event dispatcher</doc>
            <type name="EventDispatcher" c:type="WpEventDispatcher*"/>
          </instance-parameter>
          <parameter name="hook" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1461">the hook to unregister</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="EventDispatcherClass"
            c:type="WpEventDispatcherClass"
            glib:is-gtype-struct-for="EventDispatcher">
      <source-position filename="lib/wp/event-dispatcher.h" line="26"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="EventHook"
           c:symbol-prefix="event_hook"
           c:type="WpEventHook"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="WpEventHook"
           glib:get-type="wp_event_hook_get_type"
           glib:type-struct="EventHookClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="111">The event hook is a structure that describes some executable action that an event dispatcher will run when a matching event has been received.</doc>
      <source-position filename="lib/wp/event-hook.h" line="44"/>
      <virtual-method name="finish" invoker="finish" throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1579">Finishes the async operation that was started by wp_event_hook_run()</doc>
        <source-position filename="lib/wp/event-hook.h" line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1590">FALSE if there was an error, TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1581">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1582">the async operation result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="run" invoker="run">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1563">Runs the hook on the given event.</doc>
        <source-position filename="lib/wp/event-hook.h" line="37"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1565">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1566">the event that triggered the hook</doc>
            <type name="Event" c:type="WpEvent*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1567">a GCancellable to cancel the async operation</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1568">a callback to fire after execution of the hook has completed</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="callback_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1569">data for the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="runs_for_event" invoker="runs_for_event">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1549">Checks if the hook should be executed for a given event.</doc>
        <source-position filename="lib/wp/event-hook.h" line="35"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1559">TRUE if the hook should be executed for the given event, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1551">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1552">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="finish" c:identifier="wp_event_hook_finish" throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1579">Finishes the async operation that was started by wp_event_hook_run()</doc>
        <source-position filename="lib/wp/event-hook.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1590">FALSE if there was an error, TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1581">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1582">the async operation result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_dispatcher"
              c:identifier="wp_event_hook_get_dispatcher"
              glib:get-property="dispatcher"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1523">Returns the associated event dispatcher.</doc>
        <source-position filename="lib/wp/event-hook.h" line="56"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1532">the event dispatcher on which this hook is registered, or NULL if the hook is not registered</doc>
          <type name="EventDispatcher" c:type="WpEventDispatcher*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1525">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="wp_event_hook_get_name"
              glib:get-property="name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1484">Returns the name of the hook.</doc>
        <source-position filename="lib/wp/event-hook.h" line="47"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1493">the event hook name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1486">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_runs_after_hooks"
              c:identifier="wp_event_hook_get_runs_after_hooks"
              glib:get-property="runs-after-hooks">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1510">Returns the names of the hooks that should run before this hook, or in other words, this hook should run after them.</doc>
        <source-position filename="lib/wp/event-hook.h" line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1519">a NULL-terminated array of hook names</doc>
          <array c:type="const gchar* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1512">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_runs_before_hooks"
              c:identifier="wp_event_hook_get_runs_before_hooks"
              glib:get-property="runs-before-hooks">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1497">Returns the names of the hooks that should run after this hook, or in other words, this hook should run before them.</doc>
        <source-position filename="lib/wp/event-hook.h" line="50"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1506">a NULL-terminated array of hook names</doc>
          <array c:type="const gchar* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1499">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="run" c:identifier="wp_event_hook_run">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1563">Runs the hook on the given event.</doc>
        <source-position filename="lib/wp/event-hook.h" line="66"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1565">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1566">the event that triggered the hook</doc>
            <type name="Event" c:type="WpEvent*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1567">a GCancellable to cancel the async operation</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1568">a callback to fire after execution of the hook has completed</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="callback_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1569">data for the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="runs_for_event"
              c:identifier="wp_event_hook_runs_for_event">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1549">Checks if the hook should be executed for a given event.</doc>
        <source-position filename="lib/wp/event-hook.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1559">TRUE if the hook should be executed for the given event, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1551">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1552">the event</doc>
            <type name="Event" c:type="WpEvent*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_dispatcher"
              c:identifier="wp_event_hook_set_dispatcher"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1536">Sets the associated event dispatcher.</doc>
        <source-position filename="lib/wp/event-hook.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1538">the event hook</doc>
            <type name="EventHook" c:type="WpEventHook*"/>
          </instance-parameter>
          <parameter name="dispatcher" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1539">the event dispatcher on which this hook is registered</doc>
            <type name="EventDispatcher" c:type="WpEventDispatcher*"/>
          </parameter>
        </parameters>
      </method>
      <property name="dispatcher"
                transfer-ownership="none"
                getter="get_dispatcher">
        <type name="EventDispatcher"/>
      </property>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_name">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="runs-after-hooks"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_runs_after_hooks">
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="runs-before-hooks"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_runs_before_hooks">
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="EventHookClass"
            c:type="WpEventHookClass"
            glib:is-gtype-struct-for="EventHook">
      <source-position filename="lib/wp/event-hook.h" line="44"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="runs_for_event">
        <callback name="runs_for_event">
          <source-position filename="lib/wp/event-hook.h" line="35"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1559">TRUE if the hook should be executed for the given event, FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="1551">the event hook</doc>
              <type name="EventHook" c:type="WpEventHook*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="1552">the event</doc>
              <type name="Event" c:type="WpEvent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="run">
        <callback name="run">
          <source-position filename="lib/wp/event-hook.h" line="37"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="1565">the event hook</doc>
              <type name="EventHook" c:type="WpEventHook*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="1566">the event that triggered the hook</doc>
              <type name="Event" c:type="WpEvent*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="1567">a GCancellable to cancel the async operation</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="1568">a callback to fire after execution of the hook has completed</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="callback_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="1569">data for the callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="finish">
        <callback name="finish" throws="1">
          <source-position filename="lib/wp/event-hook.h" line="40"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1590">FALSE if there was an error, TRUE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="1581">the event hook</doc>
              <type name="EventHook" c:type="WpEventHook*"/>
            </parameter>
            <parameter name="res" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="1582">the async operation result</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="Factory"
           c:symbol-prefix="factory"
           c:type="WpFactory"
           version="0.4.5"
           parent="GlobalProxy"
           glib:type-name="WpFactory"
           glib:get-type="wp_factory_get_type"
           glib:type-struct="FactoryClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="122">The WpFactory class allows accessing the properties and methods of PipeWire Factory objects (struct pw_factory).
A WpFactory is constructed internally by wireplumber, when the pipewire constructed factory objects are reported in by PipeWire registry and it is made available for wireplumber clients through the WpObjectManager API.</doc>
      <source-position filename="lib/wp/factory.h" line="25"/>
      <implements name="PipewireObject"/>
    </class>
    <record name="FactoryClass"
            c:type="WpFactoryClass"
            glib:is-gtype-struct-for="Factory">
      <source-position filename="lib/wp/factory.h" line="25"/>
      <field name="parent_class">
        <type name="GlobalProxyClass" c:type="WpGlobalProxyClass"/>
      </field>
    </record>
    <class name="FeatureActivationTransition"
           c:symbol-prefix="feature_activation_transition"
           c:type="WpFeatureActivationTransition"
           parent="Transition"
           glib:type-name="WpFeatureActivationTransition"
           glib:get-type="wp_feature_activation_transition_get_type"
           glib:type-struct="FeatureActivationTransitionClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="136">A WpTransition that is used by WpObject to implement feature activation.</doc>
      <source-position filename="lib/wp/object.h" line="48"/>
      <implements name="Gio.AsyncResult"/>
      <method name="get_requested_features"
              c:identifier="wp_feature_activation_transition_get_requested_features">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3006">Gets the features requested to be activated in this transition.</doc>
        <source-position filename="lib/wp/object.h" line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3015">the features that were requested to be activated in this transition; this contains the features as they were passed in wp_object_activate() and therefore it may contain unsupported or already active features</doc>
          <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3008">the transition</doc>
            <type name="FeatureActivationTransition"
                  c:type="WpFeatureActivationTransition*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="FeatureActivationTransitionClass"
            c:type="WpFeatureActivationTransitionClass"
            glib:is-gtype-struct-for="FeatureActivationTransition">
      <source-position filename="lib/wp/object.h" line="48"/>
      <field name="parent_class">
        <type name="TransitionClass" c:type="WpTransitionClass"/>
      </field>
    </record>
    <record name="Global" c:type="WpGlobal" disguised="1" opaque="1">
      <source-position filename="lib/wp/object-manager.h" line="77"/>
    </record>
    <class name="GlobalProxy"
           c:symbol-prefix="global_proxy"
           c:type="WpGlobalProxy"
           parent="Proxy"
           glib:type-name="WpGlobalProxy"
           glib:get-type="wp_global_proxy_get_type"
           glib:type-struct="GlobalProxyClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="147">A proxy that represents a PipeWire global object, i.e. an object that is made available through the PipeWire registry.</doc>
      <source-position filename="lib/wp/global-proxy.h" line="32"/>
      <method name="bind" c:identifier="wp_global_proxy_bind">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1816">Binds to the global and creates the underlying pw_proxy.


This is mostly meant to be called internally. It will create the pw_proxy and will activate the WP_PROXY_FEATURE_BOUND feature.
This may only be called if there is no pw_proxy associated with this object yet.</doc>
        <source-position filename="lib/wp/global-proxy.h" line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1827">TRUE on success, FALSE if there is no global to bind to</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1818">the pipewire global</doc>
            <type name="GlobalProxy" c:type="WpGlobalProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_global_properties"
              c:identifier="wp_global_proxy_get_global_properties"
              glib:get-property="global-properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1803">Gets the global properties of a pipewire global.</doc>
        <source-position filename="lib/wp/global-proxy.h" line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1812">the global (immutable) properties of this pipewire object</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1805">the pipewire global</doc>
            <type name="GlobalProxy" c:type="WpGlobalProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_permissions"
              c:identifier="wp_global_proxy_get_permissions"
              glib:get-property="permissions">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1790">Gets the permissions of a pipewire global.</doc>
        <source-position filename="lib/wp/global-proxy.h" line="38"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1799">the permissions that wireplumber has on this object</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1792">the pipewire global</doc>
            <type name="GlobalProxy" c:type="WpGlobalProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="request_destroy"
              c:identifier="wp_global_proxy_request_destroy">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1776">Requests the PipeWire server to destroy the object represented by this proxy.


If the server allows it, the object will be destroyed and the WpProxy's pw-proxy-destroyed signal will be emitted. If the server does not allow it, nothing will happen.
This is mostly useful for destroying WpLink objects.</doc>
        <source-position filename="lib/wp/global-proxy.h" line="35"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1778">the pipewire global</doc>
            <type name="GlobalProxy" c:type="WpGlobalProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="factory-name"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="global"
                introspectable="0"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type/>
      </property>
      <property name="global-properties"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_global_properties">
        <type name="Properties"/>
      </property>
      <property name="permissions"
                transfer-ownership="none"
                getter="get_permissions"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent_instance">
        <type name="Proxy" c:type="WpProxy"/>
      </field>
    </class>
    <record name="GlobalProxyClass"
            c:type="WpGlobalProxyClass"
            glib:is-gtype-struct-for="GlobalProxy">
      <source-position filename="lib/wp/global-proxy.h" line="32"/>
      <field name="parent_class">
        <type name="ProxyClass" c:type="WpProxyClass"/>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <constant name="ITERATOR_METHODS_VERSION"
              value="0"
              c:type="WP_ITERATOR_METHODS_VERSION">
      <source-position filename="lib/wp/iterator.h" line="52"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="ImplMetadata"
           c:symbol-prefix="impl_metadata"
           c:type="WpImplMetadata"
           parent="Metadata"
           glib:type-name="WpImplMetadata"
           glib:get-type="wp_impl_metadata_get_type"
           glib:type-struct="ImplMetadataClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="158">Implementation of the metadata object.
Activate this object with at least WP_PROXY_FEATURE_BOUND to export it to PipeWire.</doc>
      <source-position filename="lib/wp/metadata.h" line="93"/>
      <constructor name="new" c:identifier="wp_impl_metadata_new">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2318">Creates a new metadata implementation.</doc>
        <source-position filename="lib/wp/metadata.h" line="96"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2327">a new WpImplMetadata</doc>
          <type name="ImplMetadata" c:type="WpImplMetadata*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2320">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_full"
                   c:identifier="wp_impl_metadata_new_full"
                   version="0.4.3">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2331">Creates a new metadata implementation with name and properties.</doc>
        <source-position filename="lib/wp/metadata.h" line="99"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2342">a new WpImplMetadata</doc>
          <type name="ImplMetadata" c:type="WpImplMetadata*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2333">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2334">the metadata name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2335">the metadata properties</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="properties"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Properties"/>
      </property>
    </class>
    <record name="ImplMetadataClass"
            c:type="WpImplMetadataClass"
            glib:is-gtype-struct-for="ImplMetadata">
      <source-position filename="lib/wp/metadata.h" line="93"/>
      <field name="parent_class">
        <type name="MetadataClass" c:type="WpMetadataClass"/>
      </field>
    </record>
    <class name="ImplModule"
           c:symbol-prefix="impl_module"
           c:type="WpImplModule"
           version="0.4.2"
           parent="GObject.Object"
           glib:type-name="WpImplModule"
           glib:get-type="wp_impl_module_get_type"
           glib:type-struct="ImplModuleClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="170">Used to load PipeWire modules within the WirePlumber process. This is slightly different from other objects in that the module is not exported to PipeWire, but it may create an export objects itself.</doc>
      <source-position filename="lib/wp/module.h" line="27"/>
      <function name="load" c:identifier="wp_impl_module_load" version="0.4.2">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2348">Loads a PipeWire module into the WirePlumber process.</doc>
        <source-position filename="lib/wp/module.h" line="30"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2360">the WpImplModule for the module that was loaded on success, NULL on failure.</doc>
          <type name="ImplModule" c:type="WpImplModule*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2350">The WirePlumber core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2351">the name of the module to load</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="arguments"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2352">arguments to be passed to the module</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2353">additional properties to be provided to the module</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </function>
      <property name="arguments"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="core"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="properties" writable="1" transfer-ownership="none">
        <type name="Properties"/>
      </property>
      <property name="pw-impl-module" transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
    </class>
    <record name="ImplModuleClass"
            c:type="WpImplModuleClass"
            glib:is-gtype-struct-for="ImplModule">
      <source-position filename="lib/wp/module.h" line="27"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="ImplNode"
           c:symbol-prefix="impl_node"
           c:type="WpImplNode"
           parent="Proxy"
           glib:type-name="WpImplNode"
           glib:get-type="wp_impl_node_get_type"
           glib:type-struct="ImplNodeClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="184">A WpImplNode allows running a node implementation (struct pw_impl_node) locally, loading the implementation from factory or wrapping a manually constructed pw_impl_node. This object can then be exported to PipeWire by requesting WP_PROXY_FEATURE_BOUND.</doc>
      <source-position filename="lib/wp/node.h" line="99"/>
      <implements name="PipewireObject"/>
      <constructor name="new_from_pw_factory"
                   c:identifier="wp_impl_node_new_from_pw_factory">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2561">Constructs a new node, locally on this process, using the specified @factory_name.


To export this node to the PipeWire server, you need to call wp_object_activate() requesting WP_PROXY_FEATURE_BOUND and wait for the operation to complete.</doc>
        <source-position filename="lib/wp/node.h" line="105"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2573">A new WpImplNode wrapping the node that was constructed by the factory, or NULL if the factory does not exist or was unable to construct the node</doc>
          <type name="ImplNode" c:type="WpImplNode*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2563">the wireplumber core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="factory_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2564">the name of the pipewire factory</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2565">properties to be passed to node constructor</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrap" c:identifier="wp_impl_node_new_wrap">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2547">Constructs a node object from an existing pw_impl_node.</doc>
        <source-position filename="lib/wp/node.h" line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2557">A new WpImplNode wrapping @node</doc>
          <type name="ImplNode" c:type="WpImplNode*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2549">the wireplumber core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="node"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2550">an existing pw_impl_node to wrap</doc>
            <type name="gpointer" c:type="pw_impl_node*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="pw-impl-node"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
    </class>
    <record name="ImplNodeClass"
            c:type="WpImplNodeClass"
            glib:is-gtype-struct-for="ImplNode">
      <source-position filename="lib/wp/node.h" line="99"/>
      <field name="parent_class">
        <type name="ProxyClass" c:type="WpProxyClass"/>
      </field>
    </record>
    <bitfield name="InitFlags"
              glib:type-name="WpInitFlags"
              glib:get-type="wp_init_flags_get_type"
              c:type="WpInitFlags">
      <member name="pipewire"
              value="1"
              c:identifier="WP_INIT_PIPEWIRE"
              glib:nick="pipewire"
              glib:name="WP_INIT_PIPEWIRE">
      </member>
      <member name="spa_types"
              value="2"
              c:identifier="WP_INIT_SPA_TYPES"
              glib:nick="spa-types"
              glib:name="WP_INIT_SPA_TYPES">
      </member>
      <member name="set_pw_log"
              value="4"
              c:identifier="WP_INIT_SET_PW_LOG"
              glib:nick="set-pw-log"
              glib:name="WP_INIT_SET_PW_LOG">
      </member>
      <member name="set_glib_log"
              value="8"
              c:identifier="WP_INIT_SET_GLIB_LOG"
              glib:nick="set-glib-log"
              glib:name="WP_INIT_SET_GLIB_LOG">
      </member>
      <member name="all"
              value="15"
              c:identifier="WP_INIT_ALL"
              glib:nick="all"
              glib:name="WP_INIT_ALL">
      </member>
    </bitfield>
    <class name="InterestEventHook"
           c:symbol-prefix="interest_event_hook"
           c:type="WpInterestEventHook"
           parent="EventHook"
           abstract="1"
           glib:type-name="WpInterestEventHook"
           glib:get-type="wp_interest_event_hook_get_type"
           glib:type-struct="InterestEventHookClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="195">An event hook that declares interest in specific events. This subclass implements the WpEventHook.runs_for_event() vmethod and returns TRUE from that method if the given event has properties that match one of the declared interests.</doc>
      <source-position filename="lib/wp/event-hook.h" line="90"/>
      <method name="add_interest"
              c:identifier="wp_interest_event_hook_add_interest"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1594">Equivalent to:



|[&lt;!-- language="C" --&gt;
  WpObjectInterest *i = wp_object_interest_new (WP_TYPE_EVENT, ...);
  wp_interest_event_hook_add_interest_full (self, i);
]|
The constraints specified in the variable arguments must follow the rules documented in wp_object_interest_new().</doc>
        <source-position filename="lib/wp/event-hook.h" line="93"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1596">the event hook</doc>
            <type name="InterestEventHook" c:type="WpInterestEventHook*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1597">a list of constraints, terminated by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_interest_full"
              c:identifier="wp_interest_event_hook_add_interest_full">
        <source-position filename="lib/wp/event-hook.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="InterestEventHook" c:type="WpInterestEventHook*"/>
          </instance-parameter>
          <parameter name="interest" transfer-ownership="none">
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="EventHook" c:type="WpEventHook"/>
      </field>
    </class>
    <record name="InterestEventHookClass"
            c:type="WpInterestEventHookClass"
            glib:is-gtype-struct-for="InterestEventHook">
      <source-position filename="lib/wp/event-hook.h" line="90"/>
      <field name="parent_class">
        <type name="EventHookClass" c:type="WpEventHookClass"/>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="InterestMatch"
              glib:type-name="WpInterestMatch"
              glib:get-type="wp_interest_match_get_type"
              c:type="WpInterestMatch">
      <member name="none"
              value="0"
              c:identifier="WP_INTEREST_MATCH_NONE"
              glib:nick="none"
              glib:name="WP_INTEREST_MATCH_NONE">
      </member>
      <member name="gtype"
              value="1"
              c:identifier="WP_INTEREST_MATCH_GTYPE"
              glib:nick="gtype"
              glib:name="WP_INTEREST_MATCH_GTYPE">
      </member>
      <member name="pw_global_properties"
              value="2"
              c:identifier="WP_INTEREST_MATCH_PW_GLOBAL_PROPERTIES"
              glib:nick="pw-global-properties"
              glib:name="WP_INTEREST_MATCH_PW_GLOBAL_PROPERTIES">
      </member>
      <member name="pw_properties"
              value="4"
              c:identifier="WP_INTEREST_MATCH_PW_PROPERTIES"
              glib:nick="pw-properties"
              glib:name="WP_INTEREST_MATCH_PW_PROPERTIES">
      </member>
      <member name="g_properties"
              value="8"
              c:identifier="WP_INTEREST_MATCH_G_PROPERTIES"
              glib:nick="g-properties"
              glib:name="WP_INTEREST_MATCH_G_PROPERTIES">
      </member>
      <member name="all"
              value="15"
              c:identifier="WP_INTEREST_MATCH_ALL"
              glib:nick="all"
              glib:name="WP_INTEREST_MATCH_ALL">
      </member>
    </bitfield>
    <bitfield name="InterestMatchFlags"
              glib:type-name="WpInterestMatchFlags"
              glib:get-type="wp_interest_match_flags_get_type"
              c:type="WpInterestMatchFlags">
      <member name="none"
              value="0"
              c:identifier="WP_INTEREST_MATCH_FLAGS_NONE"
              glib:nick="none"
              glib:name="WP_INTEREST_MATCH_FLAGS_NONE">
      </member>
      <member name="check_all"
              value="1"
              c:identifier="WP_INTEREST_MATCH_FLAGS_CHECK_ALL"
              glib:nick="check-all"
              glib:name="WP_INTEREST_MATCH_FLAGS_CHECK_ALL">
      </member>
    </bitfield>
    <record name="Iterator"
            c:type="WpIterator"
            opaque="1"
            glib:type-name="WpIterator"
            glib:get-type="wp_iterator_get_type"
            c:symbol-prefix="iterator">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="206">A generic iterator API</doc>
      <source-position filename="lib/wp/iterator.h" line="44"/>
      <constructor name="new" c:identifier="wp_iterator_new">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1831">Constructs an iterator that uses the provided @methods to implement its API.


The WpIterator structure is internally allocated with @user_size additional space at the end. A pointer to this space can be retrieved with wp_iterator_get_user_data() and is available for implementation-specific storage.</doc>
        <source-position filename="lib/wp/iterator.h" line="97"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1842">a new custom iterator</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <parameter name="methods" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1833">method implementations for the new iterator</doc>
            <type name="IteratorMethods" c:type="const WpIteratorMethods*"/>
          </parameter>
          <parameter name="user_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1834">size of the user_data structure to be allocated</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_ptr_array"
                   c:identifier="wp_iterator_new_ptr_array"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1944">Creates an iterator from a pointer array.</doc>
        <source-position filename="lib/wp/iterator.h" line="94"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1954">a new iterator that iterates over @items</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <parameter name="items" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1946">the items to iterate over</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="gpointer"/>
            </array>
          </parameter>
          <parameter name="item_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1947">the type of each item</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="fold" c:identifier="wp_iterator_fold">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1913">Fold a function over the items of the iterator.</doc>
        <source-position filename="lib/wp/iterator.h" line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1925">TRUE if all the items were processed, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1915">the iterator</doc>
            <type name="Iterator" c:type="WpIterator*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1916">the fold function</doc>
            <type name="IteratorFoldFunc" c:type="WpIteratorFoldFunc"/>
          </parameter>
          <parameter name="ret"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1917">the accumulator data</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1918">the user data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="foreach" c:identifier="wp_iterator_foreach">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1929">Iterates over all items of the iterator calling a function.</doc>
        <source-position filename="lib/wp/iterator.h" line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1940">TRUE if all the items were processed, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1931">the iterator</doc>
            <type name="Iterator" c:type="WpIterator*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1932">the foreach function</doc>
            <type name="IteratorForeachFunc" c:type="WpIteratorForeachFunc"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1933">the user data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_user_data" c:identifier="wp_iterator_get_user_data">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1846">Gets the implementation-specific storage of an iterator.


this only for use by implementations of WpIterator</doc>
        <source-position filename="lib/wp/iterator.h" line="103"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1858">a pointer to the implementation-specific storage area</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1848">an iterator object</doc>
            <type name="Iterator" c:type="WpIterator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="wp_iterator_next">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1899">Gets the next item of the iterator.</doc>
        <source-position filename="lib/wp/iterator.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1909">TRUE if next iterator was obtained, FALSE when the iterator has no more items to iterate through.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1901">the iterator</doc>
            <type name="Iterator" c:type="WpIterator*"/>
          </instance-parameter>
          <parameter name="item"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1902">the next item of the iterator</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_iterator_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1862">Increases the reference count of an iterator.</doc>
        <source-position filename="lib/wp/iterator.h" line="70"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1871">@self with an additional reference count on it</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1864">an iterator object</doc>
            <type name="Iterator" c:type="WpIterator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="wp_iterator_reset">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1887">Resets the iterator so we can iterate again from the beginning.</doc>
        <source-position filename="lib/wp/iterator.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1889">the iterator</doc>
            <type name="Iterator" c:type="WpIterator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_iterator_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1875">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/iterator.h" line="73"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1877">an iterator object</doc>
            <type name="Iterator" c:type="WpIterator*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <callback name="IteratorFoldFunc" c:type="WpIteratorFoldFunc">
      <source-position filename="lib/wp/iterator.h" line="25"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="item" transfer-ownership="none">
          <type name="GObject.Value" c:type="const GValue*"/>
        </parameter>
        <parameter name="ret" transfer-ownership="none">
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="IteratorForeachFunc" c:type="WpIteratorForeachFunc">
      <source-position filename="lib/wp/iterator.h" line="34"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="item" transfer-ownership="none">
          <type name="GObject.Value" c:type="const GValue*"/>
        </parameter>
        <parameter name="data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="IteratorMethods" c:type="WpIteratorMethods">
      <source-position filename="lib/wp/iterator.h" line="65"/>
      <field name="version" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="reset">
        <callback name="reset">
          <source-position filename="lib/wp/iterator.h" line="58"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Iterator" c:type="WpIterator*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="next">
        <callback name="next">
          <source-position filename="lib/wp/iterator.h" line="59"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Iterator" c:type="WpIterator*"/>
            </parameter>
            <parameter name="item" transfer-ownership="none">
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="fold" introspectable="0">
        <callback name="fold" introspectable="0">
          <source-position filename="lib/wp/iterator.h" line="60"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Iterator" c:type="WpIterator*"/>
            </parameter>
            <parameter name="func" transfer-ownership="none" closure="3">
              <type name="IteratorFoldFunc" c:type="WpIteratorFoldFunc"/>
            </parameter>
            <parameter name="ret" transfer-ownership="none">
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
            <parameter name="data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="foreach" introspectable="0">
        <callback name="foreach" introspectable="0">
          <source-position filename="lib/wp/iterator.h" line="62"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Iterator" c:type="WpIterator*"/>
            </parameter>
            <parameter name="func" transfer-ownership="none" closure="2">
              <type name="IteratorForeachFunc" c:type="WpIteratorForeachFunc"/>
            </parameter>
            <parameter name="data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="finalize">
        <callback name="finalize">
          <source-position filename="lib/wp/iterator.h" line="64"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Iterator" c:type="WpIterator*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <constant name="LOG_LEVEL_TRACE" value="256" c:type="WP_LOG_LEVEL_TRACE">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="2156">A custom GLib log level for trace messages (extension of GLogLevelFlags)</doc>
      <source-position filename="docs/wp-gtkdoc.h" line="2165"/>
      <type name="guint" c:type="guint"/>
    </constant>
    <function-macro name="LOG_TOPIC"
                    c:identifier="WP_LOG_TOPIC"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="71"/>
      <parameters>
        <parameter name="var">
        </parameter>
        <parameter name="name">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="LOG_TOPIC_EXTERN"
                    c:identifier="WP_LOG_TOPIC_EXTERN"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="68"/>
      <parameters>
        <parameter name="var">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="LOG_TOPIC_STATIC"
                    c:identifier="WP_LOG_TOPIC_STATIC"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="75"/>
      <parameters>
        <parameter name="var">
        </parameter>
        <parameter name="name">
        </parameter>
      </parameters>
    </function-macro>
    <enumeration name="LibraryErrorEnum"
                 glib:type-name="WpLibraryErrorEnum"
                 glib:get-type="wp_library_error_enum_get_type"
                 c:type="WpLibraryErrorEnum">
      <member name="invariant"
              value="0"
              c:identifier="WP_LIBRARY_ERROR_INVARIANT"
              glib:nick="invariant"
              glib:name="WP_LIBRARY_ERROR_INVARIANT">
      </member>
      <member name="invalid_argument"
              value="1"
              c:identifier="WP_LIBRARY_ERROR_INVALID_ARGUMENT"
              glib:nick="invalid-argument"
              glib:name="WP_LIBRARY_ERROR_INVALID_ARGUMENT">
      </member>
      <member name="operation_failed"
              value="2"
              c:identifier="WP_LIBRARY_ERROR_OPERATION_FAILED"
              glib:nick="operation-failed"
              glib:name="WP_LIBRARY_ERROR_OPERATION_FAILED">
      </member>
      <member name="service_unavailable"
              value="3"
              c:identifier="WP_LIBRARY_ERROR_SERVICE_UNAVAILABLE"
              glib:nick="service-unavailable"
              glib:name="WP_LIBRARY_ERROR_SERVICE_UNAVAILABLE">
      </member>
    </enumeration>
    <class name="Link"
           c:symbol-prefix="link"
           c:type="WpLink"
           parent="GlobalProxy"
           glib:type-name="WpLink"
           glib:get-type="wp_link_get_type"
           glib:type-struct="LinkClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="217">The WpLink class allows accessing the properties and methods of a PipeWire link object (struct pw_link).
A WpLink is constructed internally when a new link appears on the PipeWire registry and it is made available through the WpObjectManager API. Alternatively, a WpLink can also be constructed using wp_link_new_from_factory(), which creates a new link object on the remote PipeWire server by calling into a factory.</doc>
      <source-position filename="lib/wp/link.h" line="38"/>
      <implements name="PipewireObject"/>
      <constructor name="new_from_factory"
                   c:identifier="wp_link_new_from_factory">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2008">Constructs a link on the PipeWire server by asking the remote factory @factory_name to create it.


Because of the nature of the PipeWire protocol, this operation completes asynchronously at some point in the future. In order to find out when this is done, you should call wp_object_activate(), requesting at least WP_PROXY_FEATURE_BOUND. When this feature is ready, the link is ready for use on the server. If the link cannot be created, this activation operation will fail.</doc>
        <source-position filename="lib/wp/link.h" line="41"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2020">the new link or NULL if the core is not connected and therefore the link cannot be created</doc>
          <type name="Link" c:type="WpLink*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2010">the wireplumber core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="factory_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2011">the pipewire factory name to construct the link</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2012">the properties to pass to the factory</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_linked_object_ids"
              c:identifier="wp_link_get_linked_object_ids">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2024">Retrieves the ids of the objects that are linked by this link.


Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/link.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2026">the link</doc>
            <type name="Link" c:type="WpLink*"/>
          </instance-parameter>
          <parameter name="output_node"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2027">the bound id of the output (source) node</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
          <parameter name="output_port"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2028">the bound id of the output (source) port</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
          <parameter name="input_node"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2029">the bound id of the input (sink) node</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
          <parameter name="input_port"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2030">the bound id of the input (sink) port</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_state"
              c:identifier="wp_link_get_state"
              glib:get-property="state"
              version="0.4.11">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2043">Gets the current state of the link.</doc>
        <source-position filename="lib/wp/link.h" line="50"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2053">the current state of the link</doc>
          <type name="LinkState" c:type="WpLinkState"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2045">the link</doc>
            <type name="Link" c:type="WpLink*"/>
          </instance-parameter>
          <parameter name="error"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2046">the error</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </method>
      <property name="state"
                transfer-ownership="none"
                getter="get_state"
                default-value="WP_LINK_STATE_INIT">
        <type name="LinkState"/>
      </property>
      <glib:signal name="state-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="LinkState"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="LinkState"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="LinkClass"
            c:type="WpLinkClass"
            glib:is-gtype-struct-for="Link">
      <source-position filename="lib/wp/link.h" line="38"/>
      <field name="parent_class">
        <type name="GlobalProxyClass" c:type="WpGlobalProxyClass"/>
      </field>
    </record>
    <enumeration name="LinkState"
                 glib:type-name="WpLinkState"
                 glib:get-type="wp_link_state_get_type"
                 c:type="WpLinkState">
      <member name="error"
              value="-2"
              c:identifier="WP_LINK_STATE_ERROR"
              glib:nick="error"
              glib:name="WP_LINK_STATE_ERROR">
      </member>
      <member name="unlinked"
              value="-1"
              c:identifier="WP_LINK_STATE_UNLINKED"
              glib:nick="unlinked"
              glib:name="WP_LINK_STATE_UNLINKED">
      </member>
      <member name="init"
              value="0"
              c:identifier="WP_LINK_STATE_INIT"
              glib:nick="init"
              glib:name="WP_LINK_STATE_INIT">
      </member>
      <member name="negotiating"
              value="1"
              c:identifier="WP_LINK_STATE_NEGOTIATING"
              glib:nick="negotiating"
              glib:name="WP_LINK_STATE_NEGOTIATING">
      </member>
      <member name="allocating"
              value="2"
              c:identifier="WP_LINK_STATE_ALLOCATING"
              glib:nick="allocating"
              glib:name="WP_LINK_STATE_ALLOCATING">
      </member>
      <member name="paused"
              value="3"
              c:identifier="WP_LINK_STATE_PAUSED"
              glib:nick="paused"
              glib:name="WP_LINK_STATE_PAUSED">
      </member>
      <member name="active"
              value="4"
              c:identifier="WP_LINK_STATE_ACTIVE"
              glib:nick="active"
              glib:name="WP_LINK_STATE_ACTIVE">
      </member>
    </enumeration>
    <record name="LogTopic" c:type="WpLogTopic">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="229">A structure representing a log topic.</doc>
      <source-position filename="lib/wp/log.h" line="66"/>
      <field name="topic_name" writable="1">
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="flags" writable="1">
        <type name="LogTopicFlags" c:type="WpLogTopicFlags"/>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="3">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <method name="init" c:identifier="wp_log_topic_init">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2095">Initializes a log topic. Internal function, don't use it directly.</doc>
        <source-position filename="lib/wp/log.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="topic" transfer-ownership="none">
            <type name="LogTopic" c:type="WpLogTopic*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="register" c:identifier="wp_log_topic_register">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2070">Registers a log topic.


The log topic must be unregistered using wp_log_topic_unregister before its lifetime ends.
This function is threadsafe.</doc>
        <source-position filename="lib/wp/log.h" line="94"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="topic" transfer-ownership="none">
            <type name="LogTopic" c:type="WpLogTopic*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unregister" c:identifier="wp_log_topic_unregister">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2083">Unregisters a log topic.


This function is threadsafe.</doc>
        <source-position filename="lib/wp/log.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="topic" transfer-ownership="none">
            <type name="LogTopic" c:type="WpLogTopic*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="LogTopicFlags"
              glib:type-name="WpLogTopicFlags"
              glib:get-type="wp_log_topic_flags_get_type"
              c:type="WpLogTopicFlags">
      <member name="level_mask"
              value="65535"
              c:identifier="WP_LOG_TOPIC_LEVEL_MASK"
              glib:nick="level-mask"
              glib:name="WP_LOG_TOPIC_LEVEL_MASK">
      </member>
      <member name="flag_static"
              value="1073741824"
              c:identifier="WP_LOG_TOPIC_FLAG_STATIC"
              glib:nick="flag-static"
              glib:name="WP_LOG_TOPIC_FLAG_STATIC">
      </member>
      <member name="flag_initialized"
              value="2147483648"
              c:identifier="WP_LOG_TOPIC_FLAG_INITIALIZED"
              glib:nick="flag-initialized"
              glib:name="WP_LOG_TOPIC_FLAG_INITIALIZED">
      </member>
    </bitfield>
    <class name="Metadata"
           c:symbol-prefix="metadata"
           c:type="WpMetadata"
           parent="GlobalProxy"
           glib:type-name="WpMetadata"
           glib:get-type="wp_metadata_get_type"
           glib:type-struct="MetadataClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="242">The WpMetadata class allows accessing the properties and methods of PipeWire metadata object (struct pw_metadata).
A WpMetadata is constructed internally when a new metadata object appears on the PipeWire registry and it is made available through the WpObjectManager API.</doc>
      <source-position filename="lib/wp/metadata.h" line="70"/>
      <method name="clear" c:identifier="wp_metadata_clear">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2306">Clears permanently all stored metadata.</doc>
        <source-position filename="lib/wp/metadata.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2308">the metadata object</doc>
            <type name="Metadata" c:type="WpMetadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="find" c:identifier="wp_metadata_find">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2274">Finds the metadata value given its @subject and @key.</doc>
        <source-position filename="lib/wp/metadata.h" line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2286">the metadata string value, or NULL if not found.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2276">a metadata object</doc>
            <type name="Metadata" c:type="WpMetadata*"/>
          </instance-parameter>
          <parameter name="subject" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2277">the metadata subject id</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2278">the metadata key name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="type"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2279">the metadata type name</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_iterator" c:identifier="wp_metadata_new_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2258">Iterates over metadata items that matches the given @subject.


If no constraints are specified, the returned iterator iterates over all the stored metadata.
Note that this method works on cached metadata. When you change metadata with wp_metadata_set(), this cache will be updated on the next round-trip with the pipewire server.</doc>
        <source-position filename="lib/wp/metadata.h" line="73"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2270">an iterator that iterates over the found metadata. The type of the iterator item is WpMetadataItem.</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2260">a metadata object</doc>
            <type name="Metadata" c:type="WpMetadata*"/>
          </instance-parameter>
          <parameter name="subject" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2261">the metadata subject id, or -1 (PW_ID_ANY)</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="wp_metadata_set">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2290">Sets the metadata associated with the given @subject and @key. Use NULL as a value to unset the given @key and use NULL in both @key and @value to remove all metadata associated with the given @subject.</doc>
        <source-position filename="lib/wp/metadata.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2292">the metadata object</doc>
            <type name="Metadata" c:type="WpMetadata*"/>
          </instance-parameter>
          <parameter name="subject" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2293">the subject id for which this metadata property is being set</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="key"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2294">the key to set, or NULL to remove all metadata for @subject</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="type"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2295">the type of the value; NULL is synonymous to "string"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2296">the value to set, or NULL to unset the given @key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GlobalProxy" c:type="WpGlobalProxy"/>
      </field>
      <glib:signal name="changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="p2" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="MetadataClass"
            c:type="WpMetadataClass"
            glib:is-gtype-struct-for="Metadata">
      <source-position filename="lib/wp/metadata.h" line="70"/>
      <field name="parent_class">
        <type name="GlobalProxyClass" c:type="WpGlobalProxyClass"/>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="MetadataFeatures"
              glib:type-name="WpMetadataFeatures"
              glib:get-type="wp_metadata_features_get_type"
              c:type="WpMetadataFeatures">
      <member name="data"
              value="65536"
              c:identifier="WP_METADATA_FEATURE_DATA"
              glib:nick="data"
              glib:name="WP_METADATA_FEATURE_DATA">
      </member>
    </bitfield>
    <record name="MetadataItem"
            c:type="WpMetadataItem"
            opaque="1"
            glib:type-name="WpMetadataItem"
            glib:get-type="wp_metadata_item_get_type"
            c:symbol-prefix="metadata_item">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="254">WpMetadataItem holds the subject, key, type and value of a metadata entry.</doc>
      <source-position filename="lib/wp/metadata.h" line="24"/>
      <method name="get_key"
              c:identifier="wp_metadata_item_get_key"
              version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2213">Gets the key from a metadata item.</doc>
        <source-position filename="lib/wp/metadata.h" line="36"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2222">the metadata key of the @item</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2215">the item held by the GValue that was returned from the WpIterator of wp_metadata_new_iterator()</doc>
            <type name="MetadataItem" c:type="WpMetadataItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subject"
              c:identifier="wp_metadata_item_get_subject"
              version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2198">Gets the subject from a metadata item.</doc>
        <source-position filename="lib/wp/metadata.h" line="33"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2207">the metadata subject of the @item</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2200">the item held by the GValue that was returned from the WpIterator of wp_metadata_new_iterator()</doc>
            <type name="MetadataItem" c:type="WpMetadataItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value"
              c:identifier="wp_metadata_item_get_value"
              version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2243">Gets the value from a metadata item.</doc>
        <source-position filename="lib/wp/metadata.h" line="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2252">the metadata value of the @item</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2245">the item held by the GValue that was returned from the WpIterator of wp_metadata_new_iterator()</doc>
            <type name="MetadataItem" c:type="WpMetadataItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value_type"
              c:identifier="wp_metadata_item_get_value_type"
              version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2228">Gets the value type from a metadata item.</doc>
        <source-position filename="lib/wp/metadata.h" line="39"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2237">the metadata value type of the @item</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2230">the item held by the GValue that was returned from the WpIterator of wp_metadata_new_iterator()</doc>
            <type name="MetadataItem" c:type="WpMetadataItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_metadata_item_ref" version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2169">Increases the reference count of a metadata item object.</doc>
        <source-position filename="lib/wp/metadata.h" line="27"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2178">@self with an additional reference count on it</doc>
          <type name="MetadataItem" c:type="WpMetadataItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2171">a metadata item object</doc>
            <type name="MetadataItem" c:type="WpMetadataItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref"
              c:identifier="wp_metadata_item_unref"
              version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2184">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/metadata.h" line="30"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2186">a metadata item object</doc>
            <type name="MetadataItem" c:type="WpMetadataItem*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="Node"
           c:symbol-prefix="node"
           c:type="WpNode"
           parent="GlobalProxy"
           glib:type-name="WpNode"
           glib:get-type="wp_node_get_type"
           glib:type-struct="NodeClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="265">The WpNode class allows accessing the properties and methods of a PipeWire node object (struct pw_node).
A WpNode is constructed internally when a new node appears on the PipeWire registry and it is made available through the WpObjectManager API. Alternatively, a WpNode can also be constructed using wp_node_new_from_factory(), which creates a new node object on the remote PipeWire server by calling into a factory.</doc>
      <source-position filename="lib/wp/node.h" line="55"/>
      <implements name="PipewireObject"/>
      <constructor name="new_from_factory"
                   c:identifier="wp_node_new_from_factory">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2366">Constructs a node on the PipeWire server by asking the remote factory @factory_name to create it.


Because of the nature of the PipeWire protocol, this operation completes asynchronously at some point in the future. In order to find out when this is done, you should call wp_object_activate(), requesting at least WP_PROXY_FEATURE_BOUND. When this feature is ready, the node is ready for use on the server. If the node cannot be created, this activation operation will fail.</doc>
        <source-position filename="lib/wp/node.h" line="58"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2378">the new node or NULL if the core is not connected and therefore the node cannot be created</doc>
          <type name="Node" c:type="WpNode*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2368">the wireplumber core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="factory_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2369">the pipewire factory name to construct the node</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2370">the properties to pass to the factory</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_n_input_ports"
              c:identifier="wp_node_get_n_input_ports"
              glib:get-property="n-input-ports">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2396">Gets the number of input ports of this node.


Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/node.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2409">the number of input ports of this node, as reported by the node info</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2398">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
          <parameter name="max"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2399">the maximum supported number of input ports</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_output_ports"
              c:identifier="wp_node_get_n_output_ports"
              glib:get-property="n-output-ports">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2413">Gets the number of output ports of this node.


Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/node.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2426">the number of output ports of this node, as reported by the node info</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2415">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
          <parameter name="max"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2416">the maximum supported number of output ports</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_ports" c:identifier="wp_node_get_n_ports">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2430">Gets the number of ports of this node.


Note that this number may not add up to wp_node_get_n_input_ports() + wp_node_get_n_output_ports() because it is discovered by looking at the number of available ports in the registry, however ports may appear there with a delay or may not appear at all if this client does not have permission to read them
Requires WP_NODE_FEATURE_PORTS</doc>
        <source-position filename="lib/wp/node.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2443">the number of ports of this node.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2432">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_state"
              c:identifier="wp_node_get_state"
              glib:get-property="state">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2382">Gets the current state of the node.</doc>
        <source-position filename="lib/wp/node.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2392">the current state of the node</doc>
          <type name="NodeState" c:type="WpNodeState"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2384">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
          <parameter name="error"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2385">the error</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_port"
              c:identifier="wp_node_lookup_port"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2498">Retrieves the first port that matches the constraints.


The constraints specified in the variable arguments must follow the rules documented in wp_object_interest_new().
Requires WP_NODE_FEATURE_PORTS</doc>
        <source-position filename="lib/wp/node.h" line="85"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2512">the first port that matches the constraints, or NULL if there is no such port</doc>
          <type name="Port" c:type="WpPort*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2500">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2501">a list of constraints, terminated by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_port_full" c:identifier="wp_node_lookup_port_full">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2516">Retrieves the first port that matches the @interest.


Requires WP_NODE_FEATURE_PORTS</doc>
        <source-position filename="lib/wp/node.h" line="88"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2529">the first port that matches the @interest, or NULL if there is no such port</doc>
          <type name="Port" c:type="WpPort*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2518">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
          <parameter name="interest" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2519">the interest</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_ports_filtered_iterator"
              c:identifier="wp_node_new_ports_filtered_iterator"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2463">Gets a new iterator that iterates over all the ports that belong to this node and match the constraints.


The constraints specified in the variable arguments must follow the rules documented in wp_object_interest_new().
Requires WP_NODE_FEATURE_PORTS</doc>
        <source-position filename="lib/wp/node.h" line="77"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2477">a WpIterator that iterates over WpPort objects</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2465">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2466">a list of constraints, terminated by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="new_ports_filtered_iterator_full"
              c:identifier="wp_node_new_ports_filtered_iterator_full">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2481">Gets a new iterator that iterates over all the ports that belong to this node and match the @interest.


Requires WP_NODE_FEATURE_PORTS</doc>
        <source-position filename="lib/wp/node.h" line="81"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2494">a WpIterator that iterates over WpPort objects</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2483">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
          <parameter name="interest" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2484">the interest</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_ports_iterator"
              c:identifier="wp_node_new_ports_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2447">Gets a new iterator that iterates over all the ports that belong to this node.


Requires WP_NODE_FEATURE_PORTS</doc>
        <source-position filename="lib/wp/node.h" line="74"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2459">a WpIterator that iterates over WpPort objects</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2449">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="send_command" c:identifier="wp_node_send_command">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2533">Sends a command to a node.


Valid commands are the short string reprepsentations of enum spa_node_command. For example, "Suspend" or "Flush" are valid commands</doc>
        <source-position filename="lib/wp/node.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2535">the node</doc>
            <type name="Node" c:type="WpNode*"/>
          </instance-parameter>
          <parameter name="command" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2536">the command</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="max-input-ports"
                transfer-ownership="none"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="max-output-ports"
                transfer-ownership="none"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="n-input-ports"
                transfer-ownership="none"
                getter="get_n_input_ports"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="n-output-ports"
                transfer-ownership="none"
                getter="get_n_output_ports"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="state"
                transfer-ownership="none"
                getter="get_state"
                default-value="WP_NODE_STATE_CREATING">
        <type name="NodeState"/>
      </property>
      <glib:signal name="ports-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="state-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="NodeState"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="NodeState"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="NodeClass"
            c:type="WpNodeClass"
            glib:is-gtype-struct-for="Node">
      <source-position filename="lib/wp/node.h" line="55"/>
      <field name="parent_class">
        <type name="GlobalProxyClass" c:type="WpGlobalProxyClass"/>
      </field>
    </record>
    <bitfield name="NodeFeatures"
              glib:type-name="WpNodeFeatures"
              glib:get-type="wp_node_features_get_type"
              c:type="WpNodeFeatures">
      <member name="ports"
              value="65536"
              c:identifier="WP_NODE_FEATURE_PORTS"
              glib:nick="ports"
              glib:name="WP_NODE_FEATURE_PORTS">
      </member>
    </bitfield>
    <enumeration name="NodeState"
                 glib:type-name="WpNodeState"
                 glib:get-type="wp_node_state_get_type"
                 c:type="WpNodeState">
      <member name="error"
              value="-1"
              c:identifier="WP_NODE_STATE_ERROR"
              glib:nick="error"
              glib:name="WP_NODE_STATE_ERROR">
      </member>
      <member name="creating"
              value="0"
              c:identifier="WP_NODE_STATE_CREATING"
              glib:nick="creating"
              glib:name="WP_NODE_STATE_CREATING">
      </member>
      <member name="suspended"
              value="1"
              c:identifier="WP_NODE_STATE_SUSPENDED"
              glib:nick="suspended"
              glib:name="WP_NODE_STATE_SUSPENDED">
      </member>
      <member name="idle"
              value="2"
              c:identifier="WP_NODE_STATE_IDLE"
              glib:nick="idle"
              glib:name="WP_NODE_STATE_IDLE">
      </member>
      <member name="running"
              value="3"
              c:identifier="WP_NODE_STATE_RUNNING"
              glib:nick="running"
              glib:name="WP_NODE_STATE_RUNNING">
      </member>
    </enumeration>
    <function-macro name="OBJECT_ARGS"
                    c:identifier="WP_OBJECT_ARGS"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="34"/>
      <parameters>
        <parameter name="object">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="OBJECT_FEATURES_ALL"
              value="4294967295"
              c:type="WP_OBJECT_FEATURES_ALL">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="3188">Special value that can be used to activate all the supported features in any given object.</doc>
      <source-position filename="docs/wp-gtkdoc.h" line="3197"/>
      <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
    </constant>
    <constant name="OBJECT_FORMAT"
              value="&lt;%s:%p&gt;"
              c:type="WP_OBJECT_FORMAT">
      <source-position filename="lib/wp/log.h" line="33"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="Object"
           c:symbol-prefix="object"
           c:type="WpObject"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="WpObject"
           glib:get-type="wp_object_get_type"
           glib:type-struct="ObjectClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="277">Base class for objects that have activatable features.</doc>
      <source-position filename="lib/wp/object.h" line="81"/>
      <virtual-method name="activate_execute_step">
        <source-position filename="lib/wp/object.h" line="73"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="transition" transfer-ownership="none">
            <type name="FeatureActivationTransition"
                  c:type="WpFeatureActivationTransition*"/>
          </parameter>
          <parameter name="step" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="missing" transfer-ownership="none">
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="activate_get_next_step">
        <source-position filename="lib/wp/object.h" line="70"/>
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="transition" transfer-ownership="none">
            <type name="FeatureActivationTransition"
                  c:type="WpFeatureActivationTransition*"/>
          </parameter>
          <parameter name="step" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="missing" transfer-ownership="none">
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="deactivate" invoker="deactivate">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3140">Deactivates the given @features, leaving the object in the state it was before they were enabled.


This is seldom needed to call manually, but it can be used to save resources if some features are no longer needed.</doc>
        <source-position filename="lib/wp/object.h" line="77"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3142">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="features" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3143">the features to deactivate</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_supported_features"
                      invoker="get_supported_features">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3061">Gets the supported features of this object.</doc>
        <source-position filename="lib/wp/object.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3070">A bitset containing the supported features of this object; note that supported features may change at runtime</doc>
          <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3063">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="abort_activation"
              c:identifier="wp_object_abort_activation"
              version="0.4.6">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3154">Aborts the current object activation by returning a transition error if any transitions are pending.


This is usually used to stop any pending activation if an error happened.</doc>
        <source-position filename="lib/wp/object.h" line="120"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3156">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3157">the message used in the transition error</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="activate"
              c:identifier="wp_object_activate"
              glib:finish-func="activate_finish">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3090">Callback version of wp_object_activate_closure()</doc>
        <source-position filename="lib/wp/object.h" line="102"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3092">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="features" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3093">the features to enable</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3094">a cancellable for the async operation</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3095">a function to call when activation is complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3096">data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="activate_closure"
              c:identifier="wp_object_activate_closure">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3106">Activates the requested @features and invokes @closure when this is done. @features may contain unsupported or already active features. The operation will filter them and activate only ones that are supported and inactive.


If multiple calls to this method is done, the operations will be executed one after the other to ensure features only get activated once.
@closure may be invoked in sync while this method is being called, if there are no features to activate.</doc>
        <source-position filename="lib/wp/object.h" line="107"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3108">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="features" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3109">the features to enable</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3110">a cancellable for the async operation</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="closure" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3111">the closure to use when activation is completed</doc>
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
        </parameters>
      </method>
      <method name="activate_finish"
              c:identifier="wp_object_activate_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3125">Finishes the async operation that was started with wp_object_activate()</doc>
        <source-position filename="lib/wp/object.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3136">TRUE if the requested features were activated, FALSE if there was an error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3127">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3128">the async operation result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deactivate" c:identifier="wp_object_deactivate">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3140">Deactivates the given @features, leaving the object in the state it was before they were enabled.


This is seldom needed to call manually, but it can be used to save resources if some features are no longer needed.</doc>
        <source-position filename="lib/wp/object.h" line="115"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3142">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="features" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3143">the features to deactivate</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_active_features"
              c:identifier="wp_object_get_active_features"
              glib:get-property="active-features">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3032">Gets the active features of this object.</doc>
        <source-position filename="lib/wp/object.h" line="90"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3041">A bitset containing the active features of this object</doc>
          <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3034">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_core"
              c:identifier="wp_object_get_core"
              glib:get-property="core">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3019">Gets the core associated with this object.</doc>
        <source-position filename="lib/wp/object.h" line="87"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3028">the core associated with this object</doc>
          <type name="Core" c:type="WpCore*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3021">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_id"
              c:identifier="wp_object_get_id"
              glib:get-property="id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4024">Gets the unique wireplumber Id of this object.</doc>
        <source-position filename="lib/wp/object.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4026">the session item</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supported_features"
              c:identifier="wp_object_get_supported_features"
              glib:get-property="supported-features">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3061">Gets the supported features of this object.</doc>
        <source-position filename="lib/wp/object.h" line="96"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3070">A bitset containing the supported features of this object; note that supported features may change at runtime</doc>
          <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3063">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="test_active_features"
              c:identifier="wp_object_test_active_features"
              version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3045">Checks if the given features are active on this object.</doc>
        <source-position filename="lib/wp/object.h" line="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3055">TRUE if all the given features are active on this object</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3047">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="features" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3048">the features to check</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
        </parameters>
      </method>
      <method name="test_supported_features"
              c:identifier="wp_object_test_supported_features"
              version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3074">Checks if the given features are supported on this object.</doc>
        <source-position filename="lib/wp/object.h" line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3084">TRUE if all the given features are supported on this object</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3076">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="features" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3077">the features to check</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_features" c:identifier="wp_object_update_features">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3170">Allows subclasses to update the currently active features.


@activated should contain new features and @deactivated should contain features that were just deactivated. Calling this method also advances the activation transitions.
Private method to be called by subclasses only.</doc>
        <source-position filename="lib/wp/object.h" line="123"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3172">the object</doc>
            <type name="Object" c:type="WpObject*"/>
          </instance-parameter>
          <parameter name="activated" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3173">the features that were activated, or 0</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
          <parameter name="deactivated" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3174">the features that were deactivated, or 0</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
        </parameters>
      </method>
      <property name="active-features"
                transfer-ownership="none"
                getter="get_active_features"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="core"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_core">
        <type name="Core"/>
      </property>
      <property name="id"
                transfer-ownership="none"
                getter="get_id"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="supported-features"
                transfer-ownership="none"
                getter="get_supported_features"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ObjectClass"
            c:type="WpObjectClass"
            glib:is-gtype-struct-for="Object">
      <source-position filename="lib/wp/object.h" line="81"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_supported_features">
        <callback name="get_supported_features">
          <source-position filename="lib/wp/object.h" line="68"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3070">A bitset containing the supported features of this object; note that supported features may change at runtime</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3063">the object</doc>
              <type name="Object" c:type="WpObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="activate_get_next_step">
        <callback name="activate_get_next_step">
          <source-position filename="lib/wp/object.h" line="70"/>
          <return-value transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Object" c:type="WpObject*"/>
            </parameter>
            <parameter name="transition" transfer-ownership="none">
              <type name="FeatureActivationTransition"
                    c:type="WpFeatureActivationTransition*"/>
            </parameter>
            <parameter name="step" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="missing" transfer-ownership="none">
              <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="activate_execute_step">
        <callback name="activate_execute_step">
          <source-position filename="lib/wp/object.h" line="73"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Object" c:type="WpObject*"/>
            </parameter>
            <parameter name="transition" transfer-ownership="none">
              <type name="FeatureActivationTransition"
                    c:type="WpFeatureActivationTransition*"/>
            </parameter>
            <parameter name="step" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="missing" transfer-ownership="none">
              <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="deactivate">
        <callback name="deactivate">
          <source-position filename="lib/wp/object.h" line="77"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3142">the object</doc>
              <type name="Object" c:type="WpObject*"/>
            </parameter>
            <parameter name="features" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3143">the features to deactivate</doc>
              <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ObjectInterest"
            c:type="WpObjectInterest"
            opaque="1"
            glib:type-name="WpObjectInterest"
            glib:get-type="wp_object_interest_get_type"
            c:symbol-prefix="object_interest">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="288">An object interest is a helper that is used in WpObjectManager to declare interest in certain kinds of objects.
An interest is defined by a GType and a set of constraints on the object's properties. An object "matches" the interest if it is of the specified GType (either the same type or a descendant of it) and all the constraints are satisfied.</doc>
      <source-position filename="lib/wp/object-interest.h" line="100"/>
      <constructor name="new"
                   c:identifier="wp_object_interest_new"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2577">Creates a new interest that declares interest in objects of the specified @gtype, with the constraints specified in the variable arguments.


The variable arguments should be a list of constraints terminated with NULL, where each constraint consists of the following arguments:
 - a WpConstraintType: the constraint type
 - a const gchar *: the subject name
 - a const gchar *: the format string
 - 0 or more arguments according to the format string

The format string is interpreted as follows:
 - the first character is the constraint verb:
 - =: WP_CONSTRAINT_VERB_EQUALS
 - !: WP_CONSTRAINT_VERB_NOT_EQUALS
 - c: WP_CONSTRAINT_VERB_IN_LIST
 - ~: WP_CONSTRAINT_VERB_IN_RANGE
 - #: WP_CONSTRAINT_VERB_MATCHES
 - +: WP_CONSTRAINT_VERB_IS_PRESENT
 - -: WP_CONSTRAINT_VERB_IS_ABSENT

 - the rest of the characters are interpreted as a GVariant format string, as it would be used in g_variant_new()

The rest of this function's arguments up to the start of the next constraint depend on the GVariant format part of the format string and are used to construct a GVariant for the constraint's value argument.
For further reading on the constraint's arguments, see wp_object_interest_add_constraint()
For example, this interest matches objects that are descendants of WpProxy with a "bound-id" between 0 and 100 (inclusive), with a pipewire property called "format.dsp" that contains the string "audio" somewhere in the value and with a pipewire property "port.name" being present (with any value):
|[&lt;!-- language="C" --&gt;
  interest = wp_object_interest_new (WP_TYPE_PROXY,
      WP_CONSTRAINT_TYPE_G_PROPERTY, "bound-id", "~(uu)", 0, 100,
      WP_CONSTRAINT_TYPE_PW_PROPERTY, "format.dsp", "#s", "*audio*",
      WP_CONSTRAINT_TYPE_PW_PROPERTY, "port.name", "+",
      NULL);
]|</doc>
        <source-position filename="lib/wp/object-interest.h" line="103"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2615">the new object interest</doc>
          <type name="ObjectInterest" c:type="WpObjectInterest*"/>
        </return-value>
        <parameters>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2579">the type of the object to declare interest in</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2580">a set of constraints, terminated with NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_type" c:identifier="wp_object_interest_new_type">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2633">Creates a new interest that declares interest in objects of the specified @gtype, without any property constraints.


To add property constraints, you can call wp_object_interest_add_constraint() afterwards.</doc>
        <source-position filename="lib/wp/object-interest.h" line="109"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2643">the new object interest</doc>
          <type name="ObjectInterest" c:type="WpObjectInterest*"/>
        </return-value>
        <parameters>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2635">the type of the object to declare interest in</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_valist"
                   c:identifier="wp_object_interest_new_valist"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2619">va_list version of wp_object_interest_new()</doc>
        <source-position filename="lib/wp/object-interest.h" line="106"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2629">the new object interest</doc>
          <type name="ObjectInterest" c:type="WpObjectInterest*"/>
        </return-value>
        <parameters>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2621">the type of the object to declare interest in</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2622">pointer to va_list containing the constraints</doc>
            <type name="va_list" c:type="va_list*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_constraint"
              c:identifier="wp_object_interest_add_constraint">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2647">Adds a constraint to this interest. Constraints consist of a @type, a @subject, a @verb and, depending on the @verb, a @value.


Constraints are almost like a spoken language sentence that declare a condition that must be true in order to consider that an object can match this interest. For instance, a constraint can be "pipewire property
'object.id' equals 10". This would be translated to:
|[&lt;!-- language="C" --&gt;
  wp_object_interest_add_constraint (i,
     WP_CONSTRAINT_TYPE_PW_PROPERTY, "object.id",
     WP_CONSTRAINT_VERB_EQUALS, g_variant_new_int (10));
]|
Some verbs require a @value and some others do not. For those that do, the @value must be of a specific type:
 - WP_CONSTRAINT_VERB_EQUALS: @value can be a string, a (u)int32, a (u)int64, a double or a boolean. The @subject value must equal this value for the constraint to be satisfied
 - WP_CONSTRAINT_VERB_IN_LIST: @value must be a tuple that contains any number of items of the same type; the items can be string, (u)int32, (u)int64 or double. These items make a list that the @subject's value will be checked against. If any of the items equals the @subject value, the constraint is satisfied
 - WP_CONSTRAINT_VERB_IN_RANGE: @value must be a tuple that contains exactly 2 numbers of the same type ((u)int32, (u)int64 or double), meaning the minimum and maximum (inclusive) of the range. If the @subject value is a number within this range, the constraint is satisfied
 - WP_CONSTRAINT_VERB_MATCHES: @value must be a string that defines a pattern usable with GPatternSpec If the @subject value matches this pattern, the constraint is satisfied

In case the type of the @subject value is not the same type as the one requested by the type of the @value, the @subject value is converted. For GObject properties, this conversion is done using g_value_transform(), so limitations of this function apply. In the case of PipeWire properties, which are @always strings, conversion is done as follows:
 - to boolean: "true" or "1" means TRUE, "false" or "0" means FALSE
 - to int / uint / int64 / uint64: One of the strtol() family of functions is used to convert, using base 10
 - to double: strtod() is used

This method does not fail if invalid arguments are given. However, wp_object_interest_validate() should be called after adding all the constraints on an interest in order to catch errors.</doc>
        <source-position filename="lib/wp/object-interest.h" line="112"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2649">the object interest</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2650">the constraint type</doc>
            <type name="ConstraintType" c:type="WpConstraintType"/>
          </parameter>
          <parameter name="subject" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2651">the subject that the constraint applies to</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="verb" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2652">the operation that is performed to check the constraint</doc>
            <type name="ConstraintVerb" c:type="WpConstraintVerb"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2653">the value to check for</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="matches" c:identifier="wp_object_interest_matches">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2724">Checks if the specified @object matches the type and all the constraints that are described in @self.


If @self is configured to match GObject subclasses, this is equivalent to wp_object_interest_matches_full (self, G_OBJECT_TYPE (object), object, NULL, NULL) and if it is configured to match WpProperties, this is equivalent to wp_object_interest_matches_full (self, self-&gt;gtype, NULL, (WpProperties *) object, NULL);</doc>
        <source-position filename="lib/wp/object-interest.h" line="126"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2735">TRUE if the object matches, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2726">the object interest</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </instance-parameter>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2727">the target object to check for a match</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="matches_full"
              c:identifier="wp_object_interest_matches_full">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2739">A low-level version of wp_object_interest_matches().


In this version, the object's type is directly given in @object_type and is not inferred from the @object. @object is only used to check for constraints against GObject properties.
@pw_props and @pw_global_props are used to check constraints against PipeWire object properties and global properties, respectively.
@object, @pw_props and @pw_global_props may be NULL, but in case there are any constraints that require them, the match will fail. As a special case, if @object is not NULL and is a subclass of WpProxy, then @pw_props and @pw_global_props, if required, will be internally retrieved from @object by calling wp_pipewire_object_get_properties() and wp_global_proxy_get_global_properties() respectively.
When @flags contains WP_INTEREST_MATCH_FLAGS_CHECK_ALL, all the constraints are checked and the returned value contains accurate information about which types of constraints have failed to match, if any. When this flag is not present, this function returns after the first failure has been encountered. This means that the returned flags set will contain all but one flag, which will indicate the kind of constraint that failed (more could have failed, but they are not checked...)</doc>
        <source-position filename="lib/wp/object-interest.h" line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2757">flags that indicate which components of the interest match. WP_INTEREST_MATCH_ALL indicates a fully successful match; any other combination indicates a failure on the component(s) that do not appear on the flag set</doc>
          <type name="InterestMatch" c:type="WpInterestMatch"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2741">the object interest</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2742">flags to alter the behavior of this function</doc>
            <type name="InterestMatchFlags" c:type="WpInterestMatchFlags"/>
          </parameter>
          <parameter name="object_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2743">the type to be checked against the interest's type</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2744">the object to be used for checking constraints of type WP_CONSTRAINT_TYPE_G_PROPERTY</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
          <parameter name="pw_props"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2745">the properties to be used for checking constraints of type WP_CONSTRAINT_TYPE_PW_PROPERTY</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
          <parameter name="pw_global_props"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2746">the properties to be used for checking constraints of type WP_CONSTRAINT_TYPE_PW_GLOBAL_PROPERTY</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_object_interest_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2682">Increases the reference count of an object interest.</doc>
        <source-position filename="lib/wp/object-interest.h" line="117"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2691">@self with an additional reference count on it</doc>
          <type name="ObjectInterest" c:type="WpObjectInterest*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2684">the object interest to ref</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_object_interest_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2695">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/object-interest.h" line="120"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2697">the object interest to unref</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="validate"
              c:identifier="wp_object_interest_validate"
              throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2707">Validates the interest, ensuring that the interest GType is a valid object and that all the constraints have been expressed properly.


This is called internally when @self is first used to find a match, so it is not necessary to call it explicitly</doc>
        <source-position filename="lib/wp/object-interest.h" line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2720">TRUE if the interest is valid and can be used in a match, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2709">the object interest to validate</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="ObjectManager"
           c:symbol-prefix="object_manager"
           c:type="WpObjectManager"
           parent="GObject.Object"
           glib:type-name="WpObjectManager"
           glib:get-type="wp_object_manager_get_type"
           glib:type-struct="ObjectManagerClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="300">The WpObjectManager class provides a way to collect a set of objects and be notified when objects that fulfill a certain set of criteria are created or destroyed.
There are 4 kinds of objects that can be managed by a WpObjectManager:
 - remote PipeWire global objects that are advertised on the registry; these are bound locally to subclasses of WpGlobalProxy
 - remote PipeWire global objects that are created by calling a remote factory through the WirePlumber API; these are very similar to other global objects but it should be noted that the same WpGlobalProxy instance that created them appears in the WpObjectManager (as soon as its WP_PROXY_FEATURE_BOUND is enabled)
 - local PipeWire objects that are being exported to PipeWire (WpImplMetadata, WpImplNode, etc); these appear in the WpObjectManager as soon as they are exported (so, when their WP_PROXY_FEATURE_BOUND is enabled)
 - WirePlumber-specific objects, such as plugins, factories and session items

To start an object manager, you first need to declare interest in a certain kind of object by calling wp_object_manager_add_interest() and then install it on the WpCore with wp_core_install_object_manager().
Upon installing a WpObjectManager on a WpCore, any pre-existing objects that match the interests of this WpObjectManager will immediately become available to get through wp_object_manager_new_iterator() and the WpObjectManager object-added signal will be emitted for all of them. However, note that if these objects need to be prepared (to activate some features on them), the emission of object-added will be delayed. To know when it is safe to access the initial set of objects, wait until the installed signal has been emitted. That signal is emitted asynchronously after all the initial objects have been prepared.</doc>
      <source-position filename="lib/wp/object-manager.h" line="25"/>
      <constructor name="new" c:identifier="wp_object_manager_new">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2761">Constructs a new object manager.</doc>
        <source-position filename="lib/wp/object-manager.h" line="28"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2769">the newly constructed object manager</doc>
          <type name="ObjectManager" c:type="WpObjectManager*"/>
        </return-value>
      </constructor>
      <method name="add_global"
              c:identifier="wp_object_manager_add_global"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2976">Adds a global object to the object manager.


caller must also call wp_object_manager_maybe_objects_changed() after</doc>
        <source-position filename="lib/wp/object-manager.h" line="89"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2978">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="global" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2979">the global object to add</doc>
            <type name="Global" c:type="WpGlobal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_interest"
              c:identifier="wp_object_manager_add_interest"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2786">Equivalent to:



|[&lt;!-- language="C" --&gt;
  WpObjectInterest *i = wp_object_interest_new (gtype, ...);
  wp_object_manager_add_interest_full (self, i);
]|
The constraints specified in the variable arguments must follow the rules documented in wp_object_interest_new().</doc>
        <source-position filename="lib/wp/object-manager.h" line="38"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2788">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2789">the GType of the objects that we are declaring interest in</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2790">a list of constraints, terminated by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_interest_full"
              c:identifier="wp_object_manager_add_interest_full">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2806">Declares interest in a certain kind of object.


Interest consists of a GType that the object must be an ancestor of (g_type_is_a() must match) and optionally, a set of additional constraints on certain properties of the object. Refer to WpObjectInterest for more details.</doc>
        <source-position filename="lib/wp/object-manager.h" line="42"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2808">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="interest" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2809">the interest</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_object"
              c:identifier="wp_object_manager_add_object"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2944">Adds an object to the object manager.


caller must also call wp_object_manager_maybe_objects_changed() after</doc>
        <source-position filename="lib/wp/object-manager.h" line="83"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2946">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2947">the object to add</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_objects"
              c:identifier="wp_object_manager_get_n_objects">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2835">Gets the number of objects managed by the object manager.</doc>
        <source-position filename="lib/wp/object-manager.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2844">the number of objects managed by this WpObjectManager</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2837">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_installed"
              c:identifier="wp_object_manager_is_installed">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2773">Checks if an object manager is installed.</doc>
        <source-position filename="lib/wp/object-manager.h" line="33"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2782">TRUE if the object manager is installed (i.e. the WpObjectManager installed signal has been emitted), FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2775">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lookup"
              c:identifier="wp_object_manager_lookup"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2896">Equivalent to:



|[&lt;!-- language="C" --&gt;
  WpObjectInterest *i = wp_object_interest_new (gtype, ...);
  return wp_object_manager_lookup_full (self, i);
]|
The constraints specified in the variable arguments must follow the rules documented in wp_object_interest_new().</doc>
        <source-position filename="lib/wp/object-manager.h" line="68"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2913">the first managed object that matches the lookup interest, or NULL if no object matches</doc>
          <type name="GObject.Object" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2898">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2899">the GType of the object to lookup</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2900">a list of constraints, terminated by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_full" c:identifier="wp_object_manager_lookup_full">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2917">Searches for an object that matches the specified @interest and returns it, if found.


If more than one objects match, only the first one is returned. To find multiple objects that match certain criteria, wp_object_manager_new_filtered_iterator() is more suitable.</doc>
        <source-position filename="lib/wp/object-manager.h" line="72"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2928">the first managed object that matches the lookup interest, or NULL if no object matches</doc>
          <type name="GObject.Object" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2919">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="interest" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2920">the interest</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </parameter>
        </parameters>
      </method>
      <method name="maybe_objects_changed"
              c:identifier="wp_object_manager_maybe_objects_changed"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2932">Checks if the object manager should emit the 'objects-changed' signal.</doc>
        <source-position filename="lib/wp/object-manager.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2934">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="new_filtered_iterator"
              c:identifier="wp_object_manager_new_filtered_iterator"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2861">Equivalent to:



|[&lt;!-- language="C" --&gt;
  WpObjectInterest *i = wp_object_interest_new (gtype, ...);
  return wp_object_manager_new_filtered_iterator_full (self, i);
]|
The constraints specified in the variable arguments must follow the rules documented in wp_object_interest_new().</doc>
        <source-position filename="lib/wp/object-manager.h" line="60"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2878">a WpIterator that iterates over all the matching objects of this object manager</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2863">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2864">the GType of the objects to iterate through</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2865">a list of constraints, terminated by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="new_filtered_iterator_full"
              c:identifier="wp_object_manager_new_filtered_iterator_full">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2882">Iterates through all the objects managed by this object manager that match the specified @interest.</doc>
        <source-position filename="lib/wp/object-manager.h" line="64"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2892">a WpIterator that iterates over all the matching objects of this object manager</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2884">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="interest" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2885">the interest</doc>
            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_iterator"
              c:identifier="wp_object_manager_new_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2848">Iterates through all the objects managed by this object manager.</doc>
        <source-position filename="lib/wp/object-manager.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="2857">a WpIterator that iterates over all the managed objects of this object manager</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2850">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="request_object_features"
              c:identifier="wp_object_manager_request_object_features">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2820">Requests the object manager to automatically prepare the @wanted_features on any managed object that is of the specified @object_type.


These features will always be prepared before the object appears on the object manager.</doc>
        <source-position filename="lib/wp/object-manager.h" line="48"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2822">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="object_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2823">the WpProxy descendant type</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="wanted_features" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2824">the features to enable on this kind of object</doc>
            <type name="ObjectFeatures" c:type="WpObjectFeatures"/>
          </parameter>
        </parameters>
      </method>
      <method name="rm_object"
              c:identifier="wp_object_manager_rm_object"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2960">Removes an object from the object manager.


caller must also call wp_object_manager_maybe_objects_changed() after</doc>
        <source-position filename="lib/wp/object-manager.h" line="86"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2962">the object manager</doc>
            <type name="ObjectManager" c:type="WpObjectManager*"/>
          </instance-parameter>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="2963">the object to remove</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <property name="core" transfer-ownership="none">
        <type name="Core"/>
      </property>
      <glib:signal name="installed" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="object-added" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="GObject.Object"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="object-removed" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="GObject.Object"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="objects-changed" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ObjectManagerClass"
            c:type="WpObjectManagerClass"
            glib:is-gtype-struct-for="ObjectManager">
      <source-position filename="lib/wp/object-manager.h" line="25"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function-macro name="PADDING"
                    c:identifier="WP_PADDING"
                    introspectable="0">
      <source-position filename="lib/wp/defs.h" line="38"/>
      <parameters>
        <parameter name="n">
        </parameter>
      </parameters>
    </function-macro>
    <interface name="PipewireObject"
               c:symbol-prefix="pipewire_object"
               c:type="WpPipewireObject"
               glib:type-name="WpPipewireObject"
               glib:get-type="wp_pipewire_object_get_type"
               glib:type-struct="PipewireObjectInterface">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="319">An interface for standard PipeWire objects.
The common characteristic of all objects that implement this interface is the presence of an "info" structure that contains additional properties for this object (in the form of a spa_dict / pw_properties) and optionally also some parameters that can be enumerated and set on the object.</doc>
      <source-position filename="lib/wp/proxy-interfaces.h" line="52"/>
      <prerequisite name="Proxy"/>
      <virtual-method name="enum_params"
                      invoker="enum_params"
                      glib:finish-func="enum_params_finish"
                      glib:sync-func="enum_params_sync">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3902">Enumerate object parameters.


This will asynchronously return the result, or an error, by calling the given @callback. The result is going to be a WpIterator containing WpSpaPod objects, which can be retrieved with wp_pipewire_object_enum_params_finish().</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="37"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3904">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
          <parameter name="id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3905">the parameter id to enumerate or NULL for all parameters</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="filter"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3906">a param filter or NULL</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3907">a cancellable for the async operation</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3908">a callback to call with the result</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="4">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3909">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="enum_params_finish"
                      invoker="enum_params_finish"
                      throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3920">Finishes an asynchronous parameter enumeration operation.</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="41"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3931">an iterator to iterate over the collected params, or NULL if the operation resulted in error; the items in the iterator are WpSpaPod</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3922">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3923">the async result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="enum_params_sync"
                      invoker="enum_params_sync"
                      glib:async-func="enum_params">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3935">This method can be used to retrieve object parameters in a synchronous way (in contrast with wp_pipewire_object_enum_params(), which is async).


The WP_PIPEWIRE_OBJECT_FEATURE_PARAM_&lt;something&gt; feature that corresponds to the specified @id must have been activated earlier. These features enable monitoring and caching of params underneath, so that they are always available for retrieval with this method.
Note, however, that cached params may be out-of-date if they have changed very recently on the remote object and the caching mechanism hasn't been able to update them yet, so if you really need up-to-date information you should only rely on wp_pipewire_object_enum_params() instead.</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="44"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3948">an iterator to iterate over cached parameters, or NULL if parameters for this @id are not cached; the items in the iterator are WpSpaPod</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3937">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3938">the parameter id to enumerate</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="filter"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3939">a param filter or NULL</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_native_info" invoker="get_native_info">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3813">Retrieves the native info structure of this object (pw_node_info, pw_port_info, etc...)


Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="31"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3825">the native pipewire info structure of this object</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3815">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_param_info" invoker="get_param_info">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3880">Returns the available parameters of this pipewire object.


The return value is a GVariant of type a{ss}, where the key of each map entry is a spa param type id (the same ids that you can pass in wp_pipewire_object_enum_params()) and the value is a string that can contain the following letters, each of them representing a flag:
 - r: the param is readable (SPA_PARAM_INFO_READ)
 - w: the param is writable (SPA_PARAM_INFO_WRITE)

For params that are readable, you can query them with wp_pipewire_object_enum_params()
Params that are writable can be set with wp_pipewire_object_set_param()
Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="35"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3898">a variant of type a{ss} or NULL if the object does not support params at all</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3882">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_properties" invoker="get_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3829">Retrieves the PipeWire properties of this object.


Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="33"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3841">the pipewire properties of this object; normally these are the properties that are part of the info structure</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3831">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_param" invoker="set_param">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3952">Sets a parameter on the object.</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="47"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3964">TRUE on success, FALSE if setting the param failed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3954">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3955">the parameter id to set</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3956">optional flags or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="param" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3957">the parameter to set</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="enum_params"
              c:identifier="wp_pipewire_object_enum_params"
              glib:finish-func="enum_params_finish"
              glib:sync-func="enum_params_sync">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3902">Enumerate object parameters.


This will asynchronously return the result, or an error, by calling the given @callback. The result is going to be a WpIterator containing WpSpaPod objects, which can be retrieved with wp_pipewire_object_enum_params_finish().</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="72"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3904">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
          <parameter name="id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3905">the parameter id to enumerate or NULL for all parameters</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="filter"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3906">a param filter or NULL</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3907">a cancellable for the async operation</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3908">a callback to call with the result</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3909">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="enum_params_finish"
              c:identifier="wp_pipewire_object_enum_params_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3920">Finishes an asynchronous parameter enumeration operation.</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="77"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3931">an iterator to iterate over the collected params, or NULL if the operation resulted in error; the items in the iterator are WpSpaPod</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3922">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3923">the async result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="enum_params_sync"
              c:identifier="wp_pipewire_object_enum_params_sync"
              glib:async-func="enum_params">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3935">This method can be used to retrieve object parameters in a synchronous way (in contrast with wp_pipewire_object_enum_params(), which is async).


The WP_PIPEWIRE_OBJECT_FEATURE_PARAM_&lt;something&gt; feature that corresponds to the specified @id must have been activated earlier. These features enable monitoring and caching of params underneath, so that they are always available for retrieval with this method.
Note, however, that cached params may be out-of-date if they have changed very recently on the remote object and the caching mechanism hasn't been able to update them yet, so if you really need up-to-date information you should only rely on wp_pipewire_object_enum_params() instead.</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="81"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3948">an iterator to iterate over cached parameters, or NULL if parameters for this @id are not cached; the items in the iterator are WpSpaPod</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3937">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3938">the parameter id to enumerate</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="filter"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3939">a param filter or NULL</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_native_info"
              c:identifier="wp_pipewire_object_get_native_info"
              glib:get-property="native-info">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3813">Retrieves the native info structure of this object (pw_node_info, pw_port_info, etc...)


Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="55"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3825">the native pipewire info structure of this object</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3815">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_param_info"
              c:identifier="wp_pipewire_object_get_param_info"
              glib:get-property="param-info">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3880">Returns the available parameters of this pipewire object.


The return value is a GVariant of type a{ss}, where the key of each map entry is a spa param type id (the same ids that you can pass in wp_pipewire_object_enum_params()) and the value is a string that can contain the following letters, each of them representing a flag:
 - r: the param is readable (SPA_PARAM_INFO_READ)
 - w: the param is writable (SPA_PARAM_INFO_WRITE)

For params that are readable, you can query them with wp_pipewire_object_enum_params()
Params that are writable can be set with wp_pipewire_object_set_param()
Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="69"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3898">a variant of type a{ss} or NULL if the object does not support params at all</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3882">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_properties"
              c:identifier="wp_pipewire_object_get_properties"
              glib:get-property="properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3829">Retrieves the PipeWire properties of this object.


Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="58"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3841">the pipewire properties of this object; normally these are the properties that are part of the info structure</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3831">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_property"
              c:identifier="wp_pipewire_object_get_property">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3861">Returns the value of a single pipewire property.


This is the same as getting the whole properties structure with wp_pipewire_object_get_properties() and accessing a single property with wp_properties_get(), but saves one call and having to clean up the WpProperties reference count afterwards.
The value is owned by the proxy, but it is guaranteed to stay alive until execution returns back to the event loop.
Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="65"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3876">the value of the pipewire property @key or NULL if the property doesn't exist</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3863">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3864">the property name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_properties_iterator"
              c:identifier="wp_pipewire_object_new_properties_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3845">Iterates over the object's PipeWire properties.


Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="61"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3857">an iterator that iterates over the pipewire properties of this object. Use wp_properties_iterator_item_get_key() and wp_properties_iterator_item_get_value() to parse the items returned by this iterator.</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3847">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_param" c:identifier="wp_pipewire_object_set_param">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3952">Sets a parameter on the object.</doc>
        <source-position filename="lib/wp/proxy-interfaces.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3964">TRUE on success, FALSE if setting the param failed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3954">the pipewire object</doc>
            <type name="PipewireObject" c:type="WpPipewireObject*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3955">the parameter id to set</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3956">optional flags or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="param" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3957">the parameter to set</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
        </parameters>
      </method>
      <property name="native-info"
                transfer-ownership="none"
                getter="get_native_info">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="param-info"
                transfer-ownership="none"
                getter="get_param_info">
        <type name="GLib.Variant"/>
      </property>
      <property name="properties"
                transfer-ownership="none"
                getter="get_properties">
        <type name="Properties"/>
      </property>
      <glib:signal name="params-changed" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="PipewireObjectInterface"
            c:type="WpPipewireObjectInterface"
            glib:is-gtype-struct-for="PipewireObject">
      <source-position filename="lib/wp/proxy-interfaces.h" line="52"/>
      <field name="parent_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_native_info">
        <callback name="get_native_info">
          <source-position filename="lib/wp/proxy-interfaces.h" line="31"/>
          <return-value transfer-ownership="none" nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3825">the native pipewire info structure of this object</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3815">the pipewire object</doc>
              <type name="PipewireObject" c:type="WpPipewireObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_properties">
        <callback name="get_properties">
          <source-position filename="lib/wp/proxy-interfaces.h" line="33"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3841">the pipewire properties of this object; normally these are the properties that are part of the info structure</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3831">the pipewire object</doc>
              <type name="PipewireObject" c:type="WpPipewireObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_param_info">
        <callback name="get_param_info">
          <source-position filename="lib/wp/proxy-interfaces.h" line="35"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3898">a variant of type a{ss} or NULL if the object does not support params at all</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3882">the pipewire object</doc>
              <type name="PipewireObject" c:type="WpPipewireObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="enum_params">
        <callback name="enum_params">
          <source-position filename="lib/wp/proxy-interfaces.h" line="37"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3904">the pipewire object</doc>
              <type name="PipewireObject" c:type="WpPipewireObject*"/>
            </parameter>
            <parameter name="id"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3905">the parameter id to enumerate or NULL for all parameters</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="filter"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3906">a param filter or NULL</doc>
              <type name="SpaPod" c:type="WpSpaPod*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3907">a cancellable for the async operation</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="5">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3908">a callback to call with the result</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="5">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3909">data to pass to @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="enum_params_finish">
        <callback name="enum_params_finish" throws="1">
          <source-position filename="lib/wp/proxy-interfaces.h" line="41"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3931">an iterator to iterate over the collected params, or NULL if the operation resulted in error; the items in the iterator are WpSpaPod</doc>
            <type name="Iterator" c:type="WpIterator*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3922">the pipewire object</doc>
              <type name="PipewireObject" c:type="WpPipewireObject*"/>
            </parameter>
            <parameter name="res" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3923">the async result</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="enum_params_sync">
        <callback name="enum_params_sync">
          <source-position filename="lib/wp/proxy-interfaces.h" line="44"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3948">an iterator to iterate over cached parameters, or NULL if parameters for this @id are not cached; the items in the iterator are WpSpaPod</doc>
            <type name="Iterator" c:type="WpIterator*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3937">the pipewire object</doc>
              <type name="PipewireObject" c:type="WpPipewireObject*"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3938">the parameter id to enumerate</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="filter"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3939">a param filter or NULL</doc>
              <type name="SpaPod" c:type="WpSpaPod*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_param">
        <callback name="set_param">
          <source-position filename="lib/wp/proxy-interfaces.h" line="47"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3964">TRUE on success, FALSE if setting the param failed</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3954">the pipewire object</doc>
              <type name="PipewireObject" c:type="WpPipewireObject*"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3955">the parameter id to set</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3956">optional flags or 0</doc>
              <type name="guint32" c:type="guint32"/>
            </parameter>
            <parameter name="param" transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="3957">the parameter to set</doc>
              <type name="SpaPod" c:type="WpSpaPod*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="Plugin"
           c:symbol-prefix="plugin"
           c:type="WpPlugin"
           parent="Object"
           abstract="1"
           glib:type-name="WpPlugin"
           glib:get-type="wp_plugin_get_type"
           glib:type-struct="PluginClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="331">WpPlugin is a base class for objects that provide functionality to the WirePlumber daemon.
Typically, a plugin is created within a module and then registered to make it available for use by the daemon. The daemon is responsible for calling wp_object_activate() on it after all modules have been loaded, the core is connected and the initial discovery of global objects is done.
Being a WpObject subclass, the plugin inherits WpObject's activation system. For most implementations, there is only need for activating one feature, WP_PLUGIN_FEATURE_ENABLED, and this can be done by implementing only WpPluginClass::enable() and WpPluginClass::disable(). For more advanced plugins that need to have more features, you may implement directly the functions of WpObjectClass and ignore the ones of WpPluginClass.</doc>
      <source-position filename="lib/wp/plugin.h" line="42"/>
      <function name="find" c:identifier="wp_plugin_find">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3201">Looks up a plugin.</doc>
        <source-position filename="lib/wp/plugin.h" line="45"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3211">the plugin matching the lookup name</doc>
          <type name="Plugin" c:type="WpPlugin*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3203">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="plugin_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3204">the lookup name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="disable">
        <source-position filename="lib/wp/plugin.h" line="38"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Plugin" c:type="WpPlugin*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="enable">
        <source-position filename="lib/wp/plugin.h" line="37"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Plugin" c:type="WpPlugin*"/>
          </instance-parameter>
          <parameter name="transition" transfer-ownership="none">
            <type name="Transition" c:type="WpTransition*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_name"
              c:identifier="wp_plugin_get_name"
              glib:get-property="name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3215">Retrieves the name of a plugin.</doc>
        <source-position filename="lib/wp/plugin.h" line="48"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3224">the name of this plugin</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3217">the plugin</doc>
            <type name="Plugin" c:type="WpPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_name"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="Object" c:type="WpObject"/>
      </field>
    </class>
    <record name="PluginClass"
            c:type="WpPluginClass"
            glib:is-gtype-struct-for="Plugin">
      <source-position filename="lib/wp/plugin.h" line="42"/>
      <field name="parent_class">
        <type name="ObjectClass" c:type="WpObjectClass"/>
      </field>
      <field name="enable">
        <callback name="enable">
          <source-position filename="lib/wp/plugin.h" line="37"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Plugin" c:type="WpPlugin*"/>
            </parameter>
            <parameter name="transition" transfer-ownership="none">
              <type name="Transition" c:type="WpTransition*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="disable">
        <callback name="disable">
          <source-position filename="lib/wp/plugin.h" line="38"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Plugin" c:type="WpPlugin*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="PluginFeatures"
              glib:type-name="WpPluginFeatures"
              glib:get-type="wp_plugin_features_get_type"
              c:type="WpPluginFeatures">
      <member name="enabled"
              value="1"
              c:identifier="WP_PLUGIN_FEATURE_ENABLED"
              glib:nick="enabled"
              glib:name="WP_PLUGIN_FEATURE_ENABLED">
      </member>
    </bitfield>
    <class name="Port"
           c:symbol-prefix="port"
           c:type="WpPort"
           parent="GlobalProxy"
           glib:type-name="WpPort"
           glib:get-type="wp_port_get_type"
           glib:type-struct="PortClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="344">The WpPort class allows accessing the properties and methods of a PipeWire port object (struct pw_port).
A WpPort is constructed internally when a new port appears on the PipeWire registry and it is made available through the WpObjectManager API.</doc>
      <source-position filename="lib/wp/port.h" line="31"/>
      <implements name="PipewireObject"/>
      <method name="get_direction" c:identifier="wp_port_get_direction">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3228">Gets the current direction of the port.


Requires WP_PIPEWIRE_OBJECT_FEATURE_INFO</doc>
        <source-position filename="lib/wp/port.h" line="34"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3240">the current direction of the port</doc>
          <type name="Direction" c:type="WpDirection"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3230">the port</doc>
            <type name="Port" c:type="WpPort*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="PortClass"
            c:type="WpPortClass"
            glib:is-gtype-struct-for="Port">
      <source-position filename="lib/wp/port.h" line="31"/>
      <field name="parent_class">
        <type name="GlobalProxyClass" c:type="WpGlobalProxyClass"/>
      </field>
    </record>
    <record name="Properties"
            c:type="WpProperties"
            opaque="1"
            glib:type-name="WpProperties"
            glib:get-type="wp_properties_get_type"
            c:symbol-prefix="properties">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="356">WpProperties is a data structure that contains string key-value pairs, which are used to send/receive/attach arbitrary properties to PipeWire objects.
This could be thought of as a hash table with strings as both keys and values. However, the reason that this class exists instead of using GHashTable directly is that in reality it wraps the PipeWire native struct spa_dict and struct pw_properties and therefore it can be easily passed to PipeWire function calls that require a struct spa_dict * or a struct pw_properties * as arguments. Or alternatively, it can easily wrap a struct spa_dict * or a struct pw_properties * that was given from the PipeWire API without necessarily doing an expensive copy operation.
WpProperties normally wraps a struct pw_properties, unless it was created with wp_properties_new_wrap_dict(), in which case it wraps a struct spa_dict and it is immutable (you cannot add/remove/modify any key-value pair).
In most cases, it actually owns the struct pw_properties internally and manages its lifetime. The exception to that rule is when WpProperties is constructed with wp_properties_new_wrap(), in which case the ownership of the struct pw_properties remains outside. This must be used with care, as the struct pw_properties may be free'ed externally.
WpProperties is reference-counted with wp_properties_ref() and wp_properties_unref().</doc>
      <source-position filename="lib/wp/properties.h" line="30"/>
      <constructor name="new"
                   c:identifier="wp_properties_new"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3256">Constructs a new properties set that contains the given properties.</doc>
        <source-position filename="lib/wp/properties.h" line="36"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3266">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3258">a property name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3259">a property value, followed by any number of further property key-value pairs, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_copy" c:identifier="wp_properties_new_copy">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3339">Constructs a new WpProperties that contains a copy of all the properties contained in the given @props structure.</doc>
        <source-position filename="lib/wp/properties.h" line="54"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3348">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <parameter name="props"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3341">a native pw_properties structure to copy</doc>
            <type name="gpointer" c:type="const pw_properties*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_copy_dict"
                   c:identifier="wp_properties_new_copy_dict">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3367">Constructs a new WpProperties that contains a copy of all the properties contained in the given @dict structure.</doc>
        <source-position filename="lib/wp/properties.h" line="60"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3376">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <parameter name="dict"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3369">a native spa_dict structure to copy</doc>
            <type name="gpointer" c:type="const spa_dict*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_empty" c:identifier="wp_properties_new_empty">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3244">Creates a new empty properties set.</doc>
        <source-position filename="lib/wp/properties.h" line="33"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3252">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
      </constructor>
      <constructor name="new_json" c:identifier="wp_properties_new_json">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3297">Constructs a new properties set that contains the properties that can be parsed from the given JSON object.</doc>
        <source-position filename="lib/wp/properties.h" line="45"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3306">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <parameter name="json" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3299">a JSON object</doc>
            <type name="SpaJson" c:type="const WpSpaJson*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_string" c:identifier="wp_properties_new_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3284">Constructs a new properties set that contains the properties that can be parsed from the given string.</doc>
        <source-position filename="lib/wp/properties.h" line="42"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3293">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3286">a string containing either a whitespace separated list of key=value pairs (ex. "key1=value1 key2=value2") or a JSON object (ex. '{"key1":"value1"}')</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_take" c:identifier="wp_properties_new_take">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3325">Constructs a new WpProperties that wraps the given @props structure, allowing reading &amp; writing properties on that @props structure through the WpProperties API.


In contrast with wp_properties_new_wrap(), this function assumes ownership of the @props structure, so it will try to free @props when it is destroyed.</doc>
        <source-position filename="lib/wp/properties.h" line="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3335">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <parameter name="props"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3327">a native pw_properties structure to wrap</doc>
            <type name="gpointer" c:type="pw_properties*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_valist"
                   c:identifier="wp_properties_new_valist"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3270">This is the va_list version of wp_properties_new()</doc>
        <source-position filename="lib/wp/properties.h" line="39"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3280">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3272">a property name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3273">the variable arguments passed to wp_properties_new()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrap" c:identifier="wp_properties_new_wrap">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3310">Constructs a new WpProperties that wraps the given @props structure, allowing reading properties on that @props structure through the WpProperties API.


Care must be taken when using this function, since the returned WpProperties object does not own the @props structure. Therefore, if the owner decides to free @props, the returned WpProperties will crash when used. In addition, the returned WpProperties object will not try to free @props when destroyed.
Furthermore, note that the returned WpProperties object is immutable. That means that you cannot add or modify any properties on it, unless you make a copy first.</doc>
        <source-position filename="lib/wp/properties.h" line="48"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3321">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <parameter name="props"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3312">a native pw_properties structure to wrap</doc>
            <type name="gpointer" c:type="const pw_properties*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrap_dict"
                   c:identifier="wp_properties_new_wrap_dict">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3352">Constructs a new WpProperties that wraps the given @dict structure, allowing reading properties from that @dict through the WpProperties API.


Note that the returned object does not own the @dict, so care must be taken not to free it externally while this WpProperties object is alive.
In addition, note that the returned WpProperties object is immutable. That means that you cannot add or modify any properties on it, since there is no defined method for modifying a struct spa_dict. If you need to change this properties set later, you should make a copy with wp_properties_copy().</doc>
        <source-position filename="lib/wp/properties.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3363">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <parameter name="dict"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3354">a native spa_dict structure to wrap</doc>
            <type name="gpointer" c:type="const spa_dict*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add" c:identifier="wp_properties_add">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3468">Adds new properties in @self, using the given @props as a source.


Properties (keys) from @props that are already contained in @self are not modified, unlike what happens with wp_properties_update(). Properties in @self that are not contained in @props are left untouched.</doc>
        <source-position filename="lib/wp/properties.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3479">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3470">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3471">a properties set that contains properties to add</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_from_dict" c:identifier="wp_properties_add_from_dict">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3483">Adds new properties in @self, using the given @dict as a source.


Properties (keys) from @dict that are already contained in @self are not modified, unlike what happens with wp_properties_update_from_dict(). Properties in @self that are not contained in @dict are left untouched.</doc>
        <source-position filename="lib/wp/properties.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3494">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3485">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="dict"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3486">a spa_dict that contains properties to add</doc>
            <type name="gpointer" c:type="const spa_dict*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_keys"
              c:identifier="wp_properties_add_keys"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3547">Adds new properties in @self, using the given @props as a source.


Unlike wp_properties_add(), this function only adds properties that have one of the specified keys; the rest is left untouched.</doc>
        <source-position filename="lib/wp/properties.h" line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3560">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3549">a properties set</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3550">a properties set that contains properties to add</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
          <parameter name="key1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3551">a property to add</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3552">a list of additional properties to add, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_keys_array"
              c:identifier="wp_properties_add_keys_array">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3581">The same as wp_properties_add_keys(), using a NULL-terminated array for specifying the keys to add.</doc>
        <source-position filename="lib/wp/properties.h" line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3592">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3583">a properties set</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3584">a properties set that contains properties to add</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
          <parameter name="keys" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3585">the properties to add</doc>
            <array c:type="const gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="add_keys_from_dict"
              c:identifier="wp_properties_add_keys_from_dict"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3564">Adds new properties in @self, using the given @dict as a source.


Unlike wp_properties_add_from_dict(), this function only adds properties that have one of the specified keys; the rest is left untouched.</doc>
        <source-position filename="lib/wp/properties.h" line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3577">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3566">a properties set</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="dict"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3567">a spa_dict that contains properties to add</doc>
            <type name="gpointer" c:type="const spa_dict*"/>
          </parameter>
          <parameter name="key1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3568">a property to add</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3569">a list of additional properties to add, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="wp_properties_copy">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3380">Constructs and returns a new WpProperties object that contains a copy of all the properties contained in @other.</doc>
        <source-position filename="lib/wp/properties.h" line="63"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3389">the newly constructed properties set</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="other" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3382">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ensure_unique_owner"
              c:identifier="wp_properties_ensure_unique_owner">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3405">Ensures that the given properties set is uniquely owned.


"Uniquely owned" means that:
 - its reference count is 1
 - it is not wrapping a native spa_dict or pw_properties object

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.</doc>
        <source-position filename="lib/wp/properties.h" line="74"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3419">the uniquely owned properties object</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3407">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="wp_properties_get">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3596">Looks up a given property value from a key.</doc>
        <source-position filename="lib/wp/properties.h" line="128"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3606">the value of the property identified with @key, or NULL if this property is not contained in @self</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3598">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3599">a property key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_count"
              c:identifier="wp_properties_get_count"
              version="0.4.10">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3731">Gets the number of properties contained in this object.</doc>
        <source-position filename="lib/wp/properties.h" line="170"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3740">the number of properties contained in this object</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3733">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="matches" c:identifier="wp_properties_matches">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3798">Checks if all property values contained in @other are matching with the values in @self.


If a property is contained in @other and not in @self, the result is not matched. If a property is contained in both sets, then the value of the property in @other is interpreted as a glob-style pattern (using g_pattern_match_simple()) and the value in @self is checked to see if it matches with this pattern.</doc>
        <source-position filename="lib/wp/properties.h" line="193"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3809">TRUE if all matches were successful, FALSE if at least one property value did not match</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3800">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="other" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3801">a set of properties to match</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_iterator" c:identifier="wp_properties_new_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3718">Iterates through all the properties in the properties object.</doc>
        <source-position filename="lib/wp/properties.h" line="165"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3727">an iterator that iterates over the properties. The items in the iterator are of type WpPropertiesItem. Use wp_properties_item_get_key() and wp_properties_item_get_value() to retrieve their contents.</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3720">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="peek_dict" c:identifier="wp_properties_peek_dict">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3758">Gets the dictionary wrapped by a properties object.</doc>
        <source-position filename="lib/wp/properties.h" line="181"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3767">the internal properties set as a struct spa_dict *</doc>
          <type name="gpointer" c:type="const spa_dict*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3760">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_properties_ref">
        <source-position filename="lib/wp/properties.h" line="68"/>
        <return-value transfer-ownership="full">
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="wp_properties_set">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3610">Sets the given property @key - @value pair on @self.


If the property already existed, the value is overwritten with the new one.
If the @value is NULL, then the specified property is removed from @self</doc>
        <source-position filename="lib/wp/properties.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3623">1 if the property was changed. 0 if nothing was changed because the property already existed with the same value or because the key to remove did not exist.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3612">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3613">a property key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3614">a property value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="setf" c:identifier="wp_properties_setf" introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3627">Formats the given @format string with the specified arguments and sets the result as a value of the property specified with @key.</doc>
        <source-position filename="lib/wp/properties.h" line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3639">1 if the property was changed. 0 if nothing was changed because the property already existed with the same value</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3629">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3630">a property key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3631">a printf-style format to be formatted and set as a value for this property @key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3632">arguments for @format</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="setf_valist"
              c:identifier="wp_properties_setf_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3643">This is the va_list version of wp_properties_setf()</doc>
        <source-position filename="lib/wp/properties.h" line="139"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3655">1 if the property was changed. 0 if nothing was changed because the property already existed with the same value</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3645">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3646">a property key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3647">a printf-style format to be formatted and set as a value for this property @key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3648">the variable arguments passed to wp_properties_setf()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="sort" c:identifier="wp_properties_sort">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3746">Sorts the keys in alphabetical order.</doc>
        <source-position filename="lib/wp/properties.h" line="176"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3748">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="to_pw_properties"
              c:identifier="wp_properties_to_pw_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3771">Gets a copy of the properties object as a struct pw_properties</doc>
        <source-position filename="lib/wp/properties.h" line="184"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3780">a copy of the properties in @self as a struct pw_properties</doc>
          <type name="gpointer" c:type="pw_properties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3773">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_properties_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3393">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/properties.h" line="71"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3395">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref_and_take_pw_properties"
              c:identifier="wp_properties_unref_and_take_pw_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3784">Similar to wp_properties_to_pw_properties(), but this method avoids making a copy of the properties by returning the struct pw_properties that is stored internally and then freeing the WpProperties wrapper.


If @self is not uniquely owned (see wp_properties_ensure_unique_owner()), then this method does make a copy and is the same as wp_properties_to_pw_properties(), performance-wise.</doc>
        <source-position filename="lib/wp/properties.h" line="187"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3794">the properties in @self as a struct pw_properties</doc>
          <type name="gpointer" c:type="pw_properties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3786">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="update" c:identifier="wp_properties_update">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3423">Updates (adds new or modifies existing) properties in @self, using the given @props as a source.


Any properties that are not contained in @props are left untouched.</doc>
        <source-position filename="lib/wp/properties.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3434">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3425">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3426">a properties set that contains properties to update</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_from_dict"
              c:identifier="wp_properties_update_from_dict">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3438">Updates (adds new or modifies existing) properties in @self, using the given @dict as a source.


Any properties that are not contained in @dict are left untouched.</doc>
        <source-position filename="lib/wp/properties.h" line="82"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3449">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3440">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="dict"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3441">a spa_dict that contains properties to update</doc>
            <type name="gpointer" c:type="const spa_dict*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_from_json"
              c:identifier="wp_properties_update_from_json">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3453">Updates (adds new or modifies existing) properties in @self, using the given @json as a source.


Any properties that are not contained in @json are left untouched.</doc>
        <source-position filename="lib/wp/properties.h" line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3464">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3455">a properties object</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="json" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3456">a JSON object that contains properties to update</doc>
            <type name="SpaJson" c:type="const WpSpaJson*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_keys"
              c:identifier="wp_properties_update_keys"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3498">Updates (adds new or modifies existing) properties in @self, using the given @props as a source.


Unlike wp_properties_update(), this function only updates properties that have one of the specified keys; the rest is left untouched.</doc>
        <source-position filename="lib/wp/properties.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3511">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3500">a properties set</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3501">a properties set that contains properties to update</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
          <parameter name="key1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3502">a property to update</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3503">a list of additional properties to update, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="update_keys_array"
              c:identifier="wp_properties_update_keys_array">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3532">The same as wp_properties_update_keys(), using a NULL-terminated array for specifying the keys to update.</doc>
        <source-position filename="lib/wp/properties.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3543">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3534">a properties set</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3535">a properties set that contains properties to update</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
          <parameter name="keys" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3536">the properties to update</doc>
            <array c:type="const gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="update_keys_from_dict"
              c:identifier="wp_properties_update_keys_from_dict"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3515">Updates (adds new or modifies existing) properties in @self, using the given @dict as a source.


Unlike wp_properties_update_from_dict(), this function only updates properties that have one of the specified keys; the rest is left untouched.</doc>
        <source-position filename="lib/wp/properties.h" line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3528">the number of properties that were changed</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3517">a properties set</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </instance-parameter>
          <parameter name="dict"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3518">a spa_dict that contains properties to update</doc>
            <type name="gpointer" c:type="const spa_dict*"/>
          </parameter>
          <parameter name="key1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3519">a property to update</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3520">a list of additional properties to update, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
    </record>
    <record name="PropertiesItem"
            c:type="WpPropertiesItem"
            opaque="1"
            glib:type-name="WpPropertiesItem"
            glib:get-type="wp_properties_item_get_type"
            c:symbol-prefix="properties_item">
      <source-position filename="lib/wp/properties.h" line="148"/>
      <method name="get_key"
              c:identifier="wp_properties_item_get_key"
              version="0.4.2">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3688">Gets the key from a properties item.</doc>
        <source-position filename="lib/wp/properties.h" line="157"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3697">the property key of the @item</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3690">the item held by the GValue that was returned from the WpIterator of wp_properties_new_iterator()</doc>
            <type name="PropertiesItem" c:type="WpPropertiesItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value"
              c:identifier="wp_properties_item_get_value"
              version="0.4.2">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3703">Gets the value from a properties item.</doc>
        <source-position filename="lib/wp/properties.h" line="160"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3712">the property value of the @item</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3705">the item held by the GValue that was returned from the WpIterator of wp_properties_new_iterator()</doc>
            <type name="PropertiesItem" c:type="WpPropertiesItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_properties_item_ref" version="0.4.2">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3659">Increases the reference count of a properties item object.</doc>
        <source-position filename="lib/wp/properties.h" line="151"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3668">@self with an additional reference count on it</doc>
          <type name="PropertiesItem" c:type="WpPropertiesItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3661">a properties item object</doc>
            <type name="PropertiesItem" c:type="WpPropertiesItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref"
              c:identifier="wp_properties_item_unref"
              version="0.4.2">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3674">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/properties.h" line="154"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3676">a properties item object</doc>
            <type name="PropertiesItem" c:type="WpPropertiesItem*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="Proxy"
           c:symbol-prefix="proxy"
           c:type="WpProxy"
           parent="Object"
           abstract="1"
           glib:type-name="WpProxy"
           glib:get-type="wp_proxy_get_type"
           glib:type-struct="ProxyClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="371">Base class for all objects that expose PipeWire objects using pw_proxy underneath.
This base class cannot be instantiated. It provides handling of pw_proxy's events and exposes common functionality.</doc>
      <source-position filename="lib/wp/proxy.h" line="85"/>
      <virtual-method name="bound">
        <source-position filename="lib/wp/proxy.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Proxy" c:type="WpProxy*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="error">
        <source-position filename="lib/wp/proxy.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Proxy" c:type="WpProxy*"/>
          </instance-parameter>
          <parameter name="seq" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="res" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="pw_proxy_created">
        <source-position filename="lib/wp/proxy.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Proxy" c:type="WpProxy*"/>
          </instance-parameter>
          <parameter name="proxy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="pw_proxy*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="pw_proxy_destroyed">
        <source-position filename="lib/wp/proxy.h" line="79"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Proxy" c:type="WpProxy*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_bound_id"
              c:identifier="wp_proxy_get_bound_id"
              glib:get-property="bound-id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3968">Returns the proxy bound id.


The bound id is the id that this object has on the PipeWire registry (a.k.a. the global id). The object must have the WP_PROXY_FEATURE_BOUND feature before this method can be called.
Requires WP_PROXY_FEATURE_BOUND</doc>
        <source-position filename="lib/wp/proxy.h" line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3981">the bound id of this object</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3970">the proxy</doc>
            <type name="Proxy" c:type="WpProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_interface_type"
              c:identifier="wp_proxy_get_interface_type">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3985">Gets the interface type of the proxied object.</doc>
        <source-position filename="lib/wp/proxy.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="3995">the PipeWire type of the interface that is being proxied</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3987">the proxy</doc>
            <type name="Proxy" c:type="WpProxy*"/>
          </instance-parameter>
          <parameter name="version"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="3988">the version of the interface</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_pw_proxy"
              c:identifier="wp_proxy_get_pw_proxy"
              glib:get-property="pw-proxy">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="3999">Gets the pw_proxy wrapped by this proxy object.</doc>
        <source-position filename="lib/wp/proxy.h" line="94"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4008">a pointer to the underlying pw_proxy object</doc>
          <type name="gpointer" c:type="pw_proxy*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4001">the proxy</doc>
            <type name="Proxy" c:type="WpProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_pw_proxy" c:identifier="wp_proxy_set_pw_proxy">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4012">Private method to be used by subclasses to set the pw_proxy pointer when it is available.


This can be called only if there is no pw_proxy already set. Takes ownership of @proxy.</doc>
        <source-position filename="lib/wp/proxy.h" line="99"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Proxy" c:type="WpProxy*"/>
          </instance-parameter>
          <parameter name="proxy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="pw_proxy*"/>
          </parameter>
        </parameters>
      </method>
      <property name="bound-id"
                transfer-ownership="none"
                getter="get_bound_id"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="pw-proxy"
                transfer-ownership="none"
                getter="get_pw_proxy">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <field name="parent_instance">
        <type name="Object" c:type="WpObject"/>
      </field>
      <glib:signal name="bound" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="error" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="pw-proxy-created" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="pw-proxy-destroyed" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ProxyClass"
            c:type="WpProxyClass"
            glib:is-gtype-struct-for="Proxy">
      <source-position filename="lib/wp/proxy.h" line="85"/>
      <field name="parent_class">
        <type name="ObjectClass" c:type="WpObjectClass"/>
      </field>
      <field name="pw_iface_type">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="pw_iface_version">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="pw_proxy_created">
        <callback name="pw_proxy_created">
          <source-position filename="lib/wp/proxy.h" line="78"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Proxy" c:type="WpProxy*"/>
            </parameter>
            <parameter name="proxy"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="pw_proxy*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pw_proxy_destroyed">
        <callback name="pw_proxy_destroyed">
          <source-position filename="lib/wp/proxy.h" line="79"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Proxy" c:type="WpProxy*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="bound">
        <callback name="bound">
          <source-position filename="lib/wp/proxy.h" line="80"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Proxy" c:type="WpProxy*"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <type name="guint32" c:type="guint32"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="error">
        <callback name="error">
          <source-position filename="lib/wp/proxy.h" line="81"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Proxy" c:type="WpProxy*"/>
            </parameter>
            <parameter name="seq" transfer-ownership="none">
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="res" transfer-ownership="none">
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="ProxyFeatures"
              glib:type-name="WpProxyFeatures"
              glib:get-type="wp_proxy_features_get_type"
              c:type="WpProxyFeatures">
      <member name="proxy_feature_bound"
              value="1"
              c:identifier="WP_PROXY_FEATURE_BOUND"
              glib:nick="proxy-feature-bound"
              glib:name="WP_PROXY_FEATURE_BOUND">
      </member>
      <member name="pipewire_object_feature_info"
              value="16"
              c:identifier="WP_PIPEWIRE_OBJECT_FEATURE_INFO"
              glib:nick="pipewire-object-feature-info"
              glib:name="WP_PIPEWIRE_OBJECT_FEATURE_INFO">
      </member>
      <member name="pipewire_object_feature_param_props"
              value="32"
              c:identifier="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_PROPS"
              glib:nick="pipewire-object-feature-param-props"
              glib:name="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_PROPS">
      </member>
      <member name="pipewire_object_feature_param_format"
              value="64"
              c:identifier="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_FORMAT"
              glib:nick="pipewire-object-feature-param-format"
              glib:name="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_FORMAT">
      </member>
      <member name="pipewire_object_feature_param_profile"
              value="128"
              c:identifier="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_PROFILE"
              glib:nick="pipewire-object-feature-param-profile"
              glib:name="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_PROFILE">
      </member>
      <member name="pipewire_object_feature_param_port_config"
              value="256"
              c:identifier="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_PORT_CONFIG"
              glib:nick="pipewire-object-feature-param-port-config"
              glib:name="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_PORT_CONFIG">
      </member>
      <member name="pipewire_object_feature_param_route"
              value="512"
              c:identifier="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_ROUTE"
              glib:nick="pipewire-object-feature-param-route"
              glib:name="WP_PIPEWIRE_OBJECT_FEATURE_PARAM_ROUTE">
      </member>
      <member name="pipewire_object_features_minimal"
              value="17"
              c:identifier="WP_PIPEWIRE_OBJECT_FEATURES_MINIMAL"
              glib:nick="pipewire-object-features-minimal"
              glib:name="WP_PIPEWIRE_OBJECT_FEATURES_MINIMAL">
      </member>
      <member name="pipewire_object_features_all"
              value="1009"
              c:identifier="WP_PIPEWIRE_OBJECT_FEATURES_ALL"
              glib:nick="pipewire-object-features-all"
              glib:name="WP_PIPEWIRE_OBJECT_FEATURES_ALL">
      </member>
    </bitfield>
    <callback name="RuleMatchCallback" c:type="WpRuleMatchCallback" throws="1">
      <source-position filename="lib/wp/json-utils.h" line="26"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="action" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </parameter>
      </parameters>
    </callback>
    <constant name="SETTINGS_PERSISTENT_METADATA_NAME_PREFIX"
              value="persistent-"
              c:type="WP_SETTINGS_PERSISTENT_METADATA_NAME_PREFIX">
      <source-position filename="lib/wp/settings.h" line="16"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SETTINGS_SCHEMA_METADATA_NAME_PREFIX"
              value="schema-"
              c:type="WP_SETTINGS_SCHEMA_METADATA_NAME_PREFIX">
      <source-position filename="lib/wp/settings.h" line="15"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SPA_TYPE_INVALID"
              value="4294967295"
              c:type="WP_SPA_TYPE_INVALID">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7890">Type id representing an invalid SPA type.</doc>
      <source-position filename="docs/wp-gtkdoc.h" line="7899"/>
      <type name="SpaType" c:type="WpSpaType"/>
    </constant>
    <class name="SessionItem"
           c:symbol-prefix="session_item"
           c:type="WpSessionItem"
           parent="Object"
           abstract="1"
           glib:type-name="WpSessionItem"
           glib:get-type="wp_session_item_get_type"
           glib:type-struct="SessionItemClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="383">Session items are high level objects that wrap underlying PipeWire objects and manage them. For example, a session item may be managing a node, taking responsibility for configuring the PortConfig and Format parameters of the node. Or another may be managing links between two nodes.
All the implementations are provided by modules and instantiated via the WpSiFactory class.</doc>
      <source-position filename="lib/wp/session-item.h" line="61"/>
      <function name="handle_proxy_destroyed"
                c:identifier="wp_session_item_handle_proxy_destroyed">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4169">Helper callback for sub-classes that defers and unexports the session item.


Only meant to be used when the pipewire proxy destroyed signal is triggered.</doc>
        <source-position filename="lib/wp/session-item.h" line="107"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4171">the proxy that was destroyed by the server</doc>
            <type name="Proxy" c:type="WpProxy*"/>
          </parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4172">the associated session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </parameter>
        </parameters>
      </function>
      <function name="make" c:identifier="wp_session_item_make">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4600">Finds the factory associated with the given @name from the @core and uses it to construct a new WpSessionItem.</doc>
        <source-position filename="lib/wp/si-factory.h" line="49"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4610">the new session item</doc>
          <type name="SessionItem" c:type="WpSessionItem*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4602">the WpCore</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="factory_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4603">the name of the factory to be used for constructing the object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="configure" invoker="configure">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4049">Configures the session item with a set of properties.</doc>
        <source-position filename="lib/wp/session-item.h" line="46"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4059">TRUE on success, FALSE if the item could not be configured</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4051">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4052">the properties used to configure the item</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="disable_active">
        <source-position filename="lib/wp/session-item.h" line="51"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="disable_exported">
        <source-position filename="lib/wp/session-item.h" line="53"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="enable_active">
        <source-position filename="lib/wp/session-item.h" line="55"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
          <parameter name="transition" transfer-ownership="none">
            <type name="Transition" c:type="WpTransition*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="enable_exported">
        <source-position filename="lib/wp/session-item.h" line="57"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
          <parameter name="transition" transfer-ownership="none">
            <type name="Transition" c:type="WpTransition*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_associated_proxy">
        <source-position filename="lib/wp/session-item.h" line="48"/>
        <return-value transfer-ownership="none" nullable="1">
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
          <parameter name="proxy_type" transfer-ownership="none">
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="reset" invoker="reset">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4036">Resets the session item.


This essentially removes the configuration and deactivates all active features.</doc>
        <source-position filename="lib/wp/session-item.h" line="44"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4038">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="configure" c:identifier="wp_session_item_configure">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4049">Configures the session item with a set of properties.</doc>
        <source-position filename="lib/wp/session-item.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4059">TRUE on success, FALSE if the item could not be configured</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4051">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4052">the properties used to configure the item</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_associated_proxy"
              c:identifier="wp_session_item_get_associated_proxy">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4076">An associated proxy is a WpProxy subclass instance that is somehow related to this item.</doc>
        <source-position filename="lib/wp/session-item.h" line="77"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4086">the associated proxy of the specified @proxy_type, or NULL if there is no association to such a proxy</doc>
          <type name="Proxy" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4078">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
          <parameter name="proxy_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4079">a WpProxy subclass GType</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_associated_proxy_id"
              c:identifier="wp_session_item_get_associated_proxy_id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4090">Gets the bound id of a proxy associated with the session item.</doc>
        <source-position filename="lib/wp/session-item.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4100">the bound id of the associated proxy of the specified @proxy_type, or SPA_ID_INVALID if there is no association to such a proxy</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4092">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
          <parameter name="proxy_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4093">a WpProxy subclass GType</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_properties"
              c:identifier="wp_session_item_get_properties"
              glib:get-property="properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4128">Gets the properties of a session item.</doc>
        <source-position filename="lib/wp/session-item.h" line="95"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4137">the item's properties.</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4130">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_property" c:identifier="wp_session_item_get_property">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4141">Looks up a named session item property value for a given key.</doc>
        <source-position filename="lib/wp/session-item.h" line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4151">the item property value for the given key.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4143">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4144">the property key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_configured"
              c:identifier="wp_session_item_is_configured">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4063">Checks if the session item is configured.</doc>
        <source-position filename="lib/wp/session-item.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4072">TRUE if the item is configured, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4065">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="register" c:identifier="wp_session_item_register">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4104">Registers the session item to its associated core.</doc>
        <source-position filename="lib/wp/session-item.h" line="87"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4106">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="wp_session_item_remove">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4116">Removes the session item from its associated core.</doc>
        <source-position filename="lib/wp/session-item.h" line="90"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4118">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="wp_session_item_reset">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4036">Resets the session item.


This essentially removes the configuration and deactivates all active features.</doc>
        <source-position filename="lib/wp/session-item.h" line="66"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4038">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_properties"
              c:identifier="wp_session_item_set_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4155">Sets the item's properties.


This should only be done by sub-classes after the configuration has been done.</doc>
        <source-position filename="lib/wp/session-item.h" line="104"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4157">the session item</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4158">the new properties to set</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <property name="properties"
                transfer-ownership="none"
                getter="get_properties">
        <type name="Properties"/>
      </property>
      <field name="parent_instance">
        <type name="Object" c:type="WpObject"/>
      </field>
    </class>
    <record name="SessionItemClass"
            c:type="WpSessionItemClass"
            glib:is-gtype-struct-for="SessionItem">
      <source-position filename="lib/wp/session-item.h" line="61"/>
      <field name="parent_class">
        <type name="ObjectClass" c:type="WpObjectClass"/>
      </field>
      <field name="reset">
        <callback name="reset">
          <source-position filename="lib/wp/session-item.h" line="44"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4038">the session item</doc>
              <type name="SessionItem" c:type="WpSessionItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="configure">
        <callback name="configure">
          <source-position filename="lib/wp/session-item.h" line="46"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4059">TRUE on success, FALSE if the item could not be configured</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4051">the session item</doc>
              <type name="SessionItem" c:type="WpSessionItem*"/>
            </parameter>
            <parameter name="props" transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4052">the properties used to configure the item</doc>
              <type name="Properties" c:type="WpProperties*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_associated_proxy">
        <callback name="get_associated_proxy">
          <source-position filename="lib/wp/session-item.h" line="48"/>
          <return-value transfer-ownership="none" nullable="1">
            <type name="gpointer" c:type="gpointer"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="SessionItem" c:type="WpSessionItem*"/>
            </parameter>
            <parameter name="proxy_type" transfer-ownership="none">
              <type name="GType" c:type="GType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="disable_active">
        <callback name="disable_active">
          <source-position filename="lib/wp/session-item.h" line="51"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="SessionItem" c:type="WpSessionItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="disable_exported">
        <callback name="disable_exported">
          <source-position filename="lib/wp/session-item.h" line="53"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="SessionItem" c:type="WpSessionItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="enable_active">
        <callback name="enable_active">
          <source-position filename="lib/wp/session-item.h" line="55"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="SessionItem" c:type="WpSessionItem*"/>
            </parameter>
            <parameter name="transition" transfer-ownership="none">
              <type name="Transition" c:type="WpTransition*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="enable_exported">
        <callback name="enable_exported">
          <source-position filename="lib/wp/session-item.h" line="57"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="SessionItem" c:type="WpSessionItem*"/>
            </parameter>
            <parameter name="transition" transfer-ownership="none">
              <type name="Transition" c:type="WpTransition*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="SessionItemFeatures"
              glib:type-name="WpSessionItemFeatures"
              glib:get-type="wp_session_item_features_get_type"
              c:type="WpSessionItemFeatures">
      <member name="active"
              value="1"
              c:identifier="WP_SESSION_ITEM_FEATURE_ACTIVE"
              glib:nick="active"
              glib:name="WP_SESSION_ITEM_FEATURE_ACTIVE">
      </member>
      <member name="exported"
              value="2"
              c:identifier="WP_SESSION_ITEM_FEATURE_EXPORTED"
              glib:nick="exported"
              glib:name="WP_SESSION_ITEM_FEATURE_EXPORTED">
      </member>
    </bitfield>
    <class name="Settings"
           c:symbol-prefix="settings"
           c:type="WpSettings"
           parent="Object"
           glib:type-name="WpSettings"
           glib:get-type="wp_settings_get_type"
           glib:type-struct="SettingsClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="395">WpSettings loads and parses the "sm-settings" (default value) metadata, which contains wireplumber settings, and provides APIs to its clients (modules, lua scripts etc) to access them.
Being a WpObject subclass, the settings inherits WpObject's activation system.</doc>
      <source-position filename="lib/wp/settings.h" line="110"/>
      <constructor name="new" c:identifier="wp_settings_new">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4338">Creates a new WpSettings object.</doc>
        <source-position filename="lib/wp/settings.h" line="113"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4348">a new WpSettings object</doc>
          <type name="Settings" c:type="WpSettings*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4340">the WpCore</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="metadata_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4341">the name of the metadata object to associate with the settings object; NULL means the default "sm-settings"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="find" c:identifier="wp_settings_find">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4352">Finds a registered WpSettings object by its metadata name.</doc>
        <source-position filename="lib/wp/settings.h" line="116"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4362">the WpSettings object, or NULL if not found</doc>
          <type name="Settings" c:type="WpSettings*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4354">the WpCore</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="metadata_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4355">the name of the metadata object that the settings object is associated with; NULL returns the first settings object that is found</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <method name="delete" c:identifier="wp_settings_delete">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4496">Deletes a saved setting to not make it persistent after reboot.</doc>
        <source-position filename="lib/wp/settings.h" line="163"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4506">TRUE if the setting could be deleted, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4498">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4499">the name of the saved setting to be deleted</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_all" c:identifier="wp_settings_delete_all">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4534">Deletes all saved setting to not make them persistent after reboot.</doc>
        <source-position filename="lib/wp/settings.h" line="172"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4536">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="wp_settings_get">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4411">Gets the WpSpaJson value of a setting.</doc>
        <source-position filename="lib/wp/settings.h" line="144"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4421">The WpSpaJson value of the setting, or NULL if the setting does not exist</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4413">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4414">the name of the setting</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_saved" c:identifier="wp_settings_get_saved">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4425">Gets the WpSpaJson saved value of a setting.</doc>
        <source-position filename="lib/wp/settings.h" line="147"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4435">The WpSpaJson saved value of the setting, or NULL if the setting does not exist</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4427">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4428">the name of the setting</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_spec" c:identifier="wp_settings_get_spec">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4439">Gets the specification of a setting.</doc>
        <source-position filename="lib/wp/settings.h" line="150"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4449">the specification of the setting</doc>
          <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4441">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4442">the name of the setting</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_iterator" c:identifier="wp_settings_new_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4546">Iterates over settings.</doc>
        <source-position filename="lib/wp/settings.h" line="175"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4555">an iterator that iterates over the settings.</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4548">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="wp_settings_reset">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4468">Resets the setting to its default value.</doc>
        <source-position filename="lib/wp/settings.h" line="157"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4478">TRUE if the setting could be reset, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4470">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4471">the name of the setting to reset</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset_all" c:identifier="wp_settings_reset_all">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4510">Resets all the settings to their default value.</doc>
        <source-position filename="lib/wp/settings.h" line="166"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4512">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="save" c:identifier="wp_settings_save">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4482">Saves a setting to make it persistent after reboot.</doc>
        <source-position filename="lib/wp/settings.h" line="160"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4492">TRUE if the setting could be saved, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4484">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4485">the name of the setting to be saved</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_all" c:identifier="wp_settings_save_all">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4522">Saves all the settings to make them persistent after reboot.</doc>
        <source-position filename="lib/wp/settings.h" line="169"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4524">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="wp_settings_set">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4453">Sets a new setting value.</doc>
        <source-position filename="lib/wp/settings.h" line="153"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4464">TRUE if the setting could be set, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4455">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4456">the name of the setting</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4457">the JSON value of the setting</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </parameter>
        </parameters>
      </method>
      <method name="subscribe" c:identifier="wp_settings_subscribe">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4366">Subscribes callback for a given setting pattern(a glob-style pattern matched using g_pattern_match_simple), this allows clients to look for any changes made in settings through metadata.</doc>
        <source-position filename="lib/wp/settings.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4378">the subscription ID (always greater than 0 for successful subscriptions)</doc>
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4368">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="pattern" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4369">name of the pattern to match the settings with</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4370">the callback triggered when the settings change.</doc>
            <type name="SettingsChangedCallback"
                  c:type="WpSettingsChangedCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4371">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="subscribe_closure"
              c:identifier="wp_settings_subscribe_closure">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4382">Subscribes callback for a given setting pattern(a glob-style pattern matched using g_pattern_match_simple), this allows clients to look for any changes made in settings through metadata.</doc>
        <source-position filename="lib/wp/settings.h" line="136"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4393">the subscription ID (always greater than 0 for success)</doc>
          <type name="guintptr" c:type="guintptr"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4384">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="pattern" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4385">name of the pattern to match the settings with</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="closure"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4386">a GAsyncReadyCallback wrapped in a GClosure</doc>
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unsubscribe" c:identifier="wp_settings_unsubscribe">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4397">Unsubscribes callback for a given subscription_id.</doc>
        <source-position filename="lib/wp/settings.h" line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4407">TRUE if success, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4399">the settings object</doc>
            <type name="Settings" c:type="WpSettings*"/>
          </instance-parameter>
          <parameter name="subscription_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4400">identifies the callback</doc>
            <type name="guintptr" c:type="guintptr"/>
          </parameter>
        </parameters>
      </method>
      <property name="metadata-name"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
    </class>
    <callback name="SettingsChangedCallback"
              c:type="WpSettingsChangedCallback">
      <source-position filename="lib/wp/settings.h" line="127"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="obj" transfer-ownership="none">
          <type name="Settings" c:type="WpSettings*"/>
        </parameter>
        <parameter name="setting" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="SettingsClass"
            c:type="WpSettingsClass"
            glib:is-gtype-struct-for="Settings">
      <source-position filename="lib/wp/settings.h" line="110"/>
      <field name="parent_class">
        <type name="ObjectClass" c:type="WpObjectClass"/>
      </field>
    </record>
    <bitfield name="SettingsFeatures"
              glib:type-name="WpSettingsFeatures"
              glib:get-type="wp_settings_features_get_type"
              c:type="WpSettingsFeatures">
      <member name="loaded"
              value="1"
              c:identifier="WP_SETTINGS_LOADED"
              glib:nick="loaded"
              glib:name="WP_SETTINGS_LOADED">
      </member>
    </bitfield>
    <record name="SettingsItem"
            c:type="WpSettingsItem"
            opaque="1"
            glib:type-name="WpSettingsItem"
            glib:get-type="wp_settings_item_get_type"
            c:symbol-prefix="settings_item">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="407">WpSettingsItem holds the key and value of a setting</doc>
      <source-position filename="lib/wp/settings.h" line="78"/>
      <method name="get_key" c:identifier="wp_settings_item_get_key">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4312">Gets the key from a settings item.</doc>
        <source-position filename="lib/wp/settings.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4321">the settings key of the @item</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4314">the item held by the GValue that was returned from the WpIterator of wp_settings_new_iterator()</doc>
            <type name="SettingsItem" c:type="WpSettingsItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value" c:identifier="wp_settings_item_get_value">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4325">Gets the value from a settings item.</doc>
        <source-position filename="lib/wp/settings.h" line="90"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4334">the settings value of the @item</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4327">the item held by the GValue that was returned from the WpIterator of wp_settings_new_iterator()</doc>
            <type name="SettingsItem" c:type="WpSettingsItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_settings_item_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4287">Increases the reference count of a settings item object.</doc>
        <source-position filename="lib/wp/settings.h" line="81"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4296">@self with an additional reference count on it</doc>
          <type name="SettingsItem" c:type="WpSettingsItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4289">a settings item object</doc>
            <type name="SettingsItem" c:type="WpSettingsItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_settings_item_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4300">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/settings.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4302">a settings item object</doc>
            <type name="SettingsItem" c:type="WpSettingsItem*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="SettingsSpec"
            c:type="WpSettingsSpec"
            opaque="1"
            glib:type-name="WpSettingsSpec"
            glib:get-type="wp_settings_spec_get_type"
            c:symbol-prefix="settings_spec">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="418">WpSettingSpec holds the specification of a setting.</doc>
      <source-position filename="lib/wp/settings.h" line="34"/>
      <method name="check_value" c:identifier="wp_settings_spec_check_value">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4273">Checks whether a value is compatible with the spec or not.</doc>
        <source-position filename="lib/wp/settings.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4283">TRUE if the value is compatible with the spec, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4275">the settings spec object</doc>
            <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4276">the value to check</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_default_value"
              c:identifier="wp_settings_spec_get_default_value">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4234">Gets the default value of a settings spec.</doc>
        <source-position filename="lib/wp/settings.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4243">the default value of the settings spec</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4236">the settings spec object</doc>
            <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description"
              c:identifier="wp_settings_spec_get_description">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4208">Gets the description of a settings spec.</doc>
        <source-position filename="lib/wp/settings.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4217">the description of the settings spec</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4210">the settings spec object</doc>
            <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_max_value"
              c:identifier="wp_settings_spec_get_max_value">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4260">Gets the maximum value of a settings spec.</doc>
        <source-position filename="lib/wp/settings.h" line="63"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4269">the maximum value of the settings spec, or NULL if the spec type is not WP_SETTINGS_SPEC_TYPE_INT or WP_SETTINGS_SPEC_TYPE_FLOAT</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4262">the settings spec object</doc>
            <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_min_value"
              c:identifier="wp_settings_spec_get_min_value">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4247">Gets the minimum value of a settings spec.</doc>
        <source-position filename="lib/wp/settings.h" line="60"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4256">the minimum value of the settings spec, or NULL if the spec type is not WP_SETTINGS_SPEC_TYPE_INT or WP_SETTINGS_SPEC_TYPE_FLOAT</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4249">the settings spec object</doc>
            <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value_type"
              c:identifier="wp_settings_spec_get_value_type">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4221">Gets the type of a settings spec.</doc>
        <source-position filename="lib/wp/settings.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4230">the type of the settings spec</doc>
          <type name="SettingsSpecType" c:type="WpSettingsSpecType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4223">the settings spec object</doc>
            <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_settings_spec_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4183">Increases the reference count of a settings spec object.</doc>
        <source-position filename="lib/wp/settings.h" line="45"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4192">@self with an additional reference count on it</doc>
          <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4185">a settings spec object</doc>
            <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_settings_spec_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4196">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/settings.h" line="48"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4198">a settings spec object</doc>
            <type name="SettingsSpec" c:type="WpSettingsSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="SettingsSpecType"
                 glib:type-name="WpSettingsSpecType"
                 glib:get-type="wp_settings_spec_type_get_type"
                 c:type="WpSettingsSpecType">
      <member name="unknown"
              value="0"
              c:identifier="WP_SETTINGS_SPEC_TYPE_UNKNOWN"
              glib:nick="unknown"
              glib:name="WP_SETTINGS_SPEC_TYPE_UNKNOWN">
      </member>
      <member name="bool"
              value="1"
              c:identifier="WP_SETTINGS_SPEC_TYPE_BOOL"
              glib:nick="bool"
              glib:name="WP_SETTINGS_SPEC_TYPE_BOOL">
      </member>
      <member name="int"
              value="2"
              c:identifier="WP_SETTINGS_SPEC_TYPE_INT"
              glib:nick="int"
              glib:name="WP_SETTINGS_SPEC_TYPE_INT">
      </member>
      <member name="float"
              value="3"
              c:identifier="WP_SETTINGS_SPEC_TYPE_FLOAT"
              glib:nick="float"
              glib:name="WP_SETTINGS_SPEC_TYPE_FLOAT">
      </member>
      <member name="string"
              value="4"
              c:identifier="WP_SETTINGS_SPEC_TYPE_STRING"
              glib:nick="string"
              glib:name="WP_SETTINGS_SPEC_TYPE_STRING">
      </member>
      <member name="array"
              value="5"
              c:identifier="WP_SETTINGS_SPEC_TYPE_ARRAY"
              glib:nick="array"
              glib:name="WP_SETTINGS_SPEC_TYPE_ARRAY">
      </member>
      <member name="object"
              value="6"
              c:identifier="WP_SETTINGS_SPEC_TYPE_OBJECT"
              glib:nick="object"
              glib:name="WP_SETTINGS_SPEC_TYPE_OBJECT">
      </member>
    </enumeration>
    <interface name="SiAcquisition"
               c:symbol-prefix="si_acquisition"
               c:type="WpSiAcquisition"
               glib:type-name="WpSiAcquisition"
               glib:get-type="wp_si_acquisition_get_type"
               glib:type-struct="SiAcquisitionInterface">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="429">This interface provides a way to request an item for linking before doing so. This allows item implementations to apply internal policy rules.
A WpSiAcquisition is associated directly with a WpSiLinkable via wp_si_linkable_get_acquisition(). In order to allow switching policies, it is recommended that port info implementations use a separate session item to implement this interface and allow replacing it.</doc>
      <source-position filename="lib/wp/si-interfaces.h" line="155"/>
      <prerequisite name="SessionItem"/>
      <virtual-method name="acquire"
                      invoker="acquire"
                      glib:finish-func="acquire_finish">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4781">Acquires the @item for linking by @acquisitor.


When a link is not allowed by policy, this operation should return an error.
When a link needs to be delayed for a short amount of time (ex. to apply a fade out effect on another item), this operation should finish with a delay. It is safe to assume that after this operation completes, the item will be linked immediately.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="145"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4783">the session item</doc>
            <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
          </instance-parameter>
          <parameter name="acquisitor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4784">the link that is trying to acquire a port info item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4785">the item that is being acquired</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4786">the callback to call when the operation is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4787">user data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="acquire_finish"
                      invoker="acquire_finish"
                      throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4799">Finishes the operation started by wp_si_acquisition_acquire(). This is meant to be called in the callback that was passed to that method.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="147"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4810">TRUE on success, FALSE if there was an error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4801">the session item</doc>
            <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4802">the async result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="release" invoker="release">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4814">Releases the @item, which means that it is being unlinked.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="150"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4816">the session item</doc>
            <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
          </instance-parameter>
          <parameter name="acquisitor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4817">the link that had previously acquired the item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4818">the port info that is being released</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="acquire"
              c:identifier="wp_si_acquisition_acquire"
              glib:finish-func="acquire_finish">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4781">Acquires the @item for linking by @acquisitor.


When a link is not allowed by policy, this operation should return an error.
When a link needs to be delayed for a short amount of time (ex. to apply a fade out effect on another item), this operation should finish with a delay. It is safe to assume that after this operation completes, the item will be linked immediately.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="158"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4783">the session item</doc>
            <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
          </instance-parameter>
          <parameter name="acquisitor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4784">the link that is trying to acquire a port info item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4785">the item that is being acquired</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4786">the callback to call when the operation is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4787">user data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="acquire_finish"
              c:identifier="wp_si_acquisition_acquire_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4799">Finishes the operation started by wp_si_acquisition_acquire(). This is meant to be called in the callback that was passed to that method.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="162"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4810">TRUE on success, FALSE if there was an error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4801">the session item</doc>
            <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4802">the async result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="release" c:identifier="wp_si_acquisition_release">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4814">Releases the @item, which means that it is being unlinked.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="166"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4816">the session item</doc>
            <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
          </instance-parameter>
          <parameter name="acquisitor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4817">the link that had previously acquired the item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4818">the port info that is being released</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="SiAcquisitionInterface"
            c:type="WpSiAcquisitionInterface"
            glib:is-gtype-struct-for="SiAcquisition">
      <source-position filename="lib/wp/si-interfaces.h" line="155"/>
      <field name="interface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="acquire">
        <callback name="acquire">
          <source-position filename="lib/wp/si-interfaces.h" line="145"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4783">the session item</doc>
              <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
            </parameter>
            <parameter name="acquisitor" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4784">the link that is trying to acquire a port info item</doc>
              <type name="SiLink" c:type="WpSiLink*"/>
            </parameter>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4785">the item that is being acquired</doc>
              <type name="SiLinkable" c:type="WpSiLinkable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4786">the callback to call when the operation is done</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4787">user data for @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="acquire_finish">
        <callback name="acquire_finish" throws="1">
          <source-position filename="lib/wp/si-interfaces.h" line="147"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4810">TRUE on success, FALSE if there was an error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4801">the session item</doc>
              <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
            </parameter>
            <parameter name="res" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4802">the async result</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="release">
        <callback name="release">
          <source-position filename="lib/wp/si-interfaces.h" line="150"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4816">the session item</doc>
              <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
            </parameter>
            <parameter name="acquisitor" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4817">the link that had previously acquired the item</doc>
              <type name="SiLink" c:type="WpSiLink*"/>
            </parameter>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4818">the port info that is being released</doc>
              <type name="SiLinkable" c:type="WpSiLinkable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <interface name="SiAdapter"
               c:symbol-prefix="si_adapter"
               c:type="WpSiAdapter"
               glib:type-name="WpSiAdapter"
               glib:get-type="wp_si_adapter_get_type"
               glib:type-struct="SiAdapterInterface">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="441">An interface for port adapters</doc>
      <source-position filename="lib/wp/si-interfaces.h" line="53"/>
      <prerequisite name="SessionItem"/>
      <virtual-method name="get_ports_format" invoker="get_ports_format">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4643">Gets the format used to configure the adapter session item's ports.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="44"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4653">The format used to configure the ports of the adapter session item. Some items automatically choose a format when being activated, others never set a format on activation and the user needs to manually set it externally with wp_si_adapter_set_ports_format().</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4645">the session item</doc>
            <type name="SiAdapter" c:type="WpSiAdapter*"/>
          </instance-parameter>
          <parameter name="mode"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4646">the mode</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_ports_state"
                      invoker="get_ports_state"
                      version="0.4.10">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4628">Gets the ports state.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4637">The state of the ports</doc>
          <type name="SiAdapterPortsState" c:type="WpSiAdapterPortsState"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4630">the session item</doc>
            <type name="SiAdapter" c:type="WpSiAdapter*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_ports_format"
                      invoker="set_ports_format"
                      glib:finish-func="set_ports_format_finish">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4657">Sets the format and configures the adapter session item ports using the given format.


The result of the operation can be checked using the wp_si_adapter_set_ports_format_finish() API. If format is NULL, the adapter will be configured with the default format. If mode is NULL, the adapter will use "dsp" mode.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4659">the session item</doc>
            <type name="SiAdapter" c:type="WpSiAdapter*"/>
          </instance-parameter>
          <parameter name="format"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4660">the format to be set</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
          <parameter name="mode"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4661">the mode</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4662">the callback to call when the operation is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4663">user data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_ports_format_finish"
                      invoker="set_ports_format_finish"
                      throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4674">Finishes the operation started by wp_si_adapter_set_format(). This is meant to be called in the callback that was passed to that method.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="47"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4685">TRUE on success, FALSE if there was an error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4676">the session item</doc>
            <type name="SiAdapter" c:type="WpSiAdapter*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4677">the async result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_ports_format"
              c:identifier="wp_si_adapter_get_ports_format">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4643">Gets the format used to configure the adapter session item's ports.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="59"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4653">The format used to configure the ports of the adapter session item. Some items automatically choose a format when being activated, others never set a format on activation and the user needs to manually set it externally with wp_si_adapter_set_ports_format().</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4645">the session item</doc>
            <type name="SiAdapter" c:type="WpSiAdapter*"/>
          </instance-parameter>
          <parameter name="mode"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4646">the mode</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_ports_state"
              c:identifier="wp_si_adapter_get_ports_state"
              version="0.4.10">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4628">Gets the ports state.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4637">The state of the ports</doc>
          <type name="SiAdapterPortsState" c:type="WpSiAdapterPortsState"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4630">the session item</doc>
            <type name="SiAdapter" c:type="WpSiAdapter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_ports_format"
              c:identifier="wp_si_adapter_set_ports_format"
              glib:finish-func="set_ports_format_finish">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4657">Sets the format and configures the adapter session item ports using the given format.


The result of the operation can be checked using the wp_si_adapter_set_ports_format_finish() API. If format is NULL, the adapter will be configured with the default format. If mode is NULL, the adapter will use "dsp" mode.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="63"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4659">the session item</doc>
            <type name="SiAdapter" c:type="WpSiAdapter*"/>
          </instance-parameter>
          <parameter name="format"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4660">the format to be set</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
          <parameter name="mode"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4661">the mode</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4662">the callback to call when the operation is done</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4663">user data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ports_format_finish"
              c:identifier="wp_si_adapter_set_ports_format_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4674">Finishes the operation started by wp_si_adapter_set_format(). This is meant to be called in the callback that was passed to that method.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4685">TRUE on success, FALSE if there was an error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4676">the session item</doc>
            <type name="SiAdapter" c:type="WpSiAdapter*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4677">the async result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="adapter-ports-state-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="SiAdapterPortsState"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="SiAdapterPortsState"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="SiAdapterInterface"
            c:type="WpSiAdapterInterface"
            glib:is-gtype-struct-for="SiAdapter">
      <source-position filename="lib/wp/si-interfaces.h" line="53"/>
      <field name="interface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_ports_format">
        <callback name="get_ports_format">
          <source-position filename="lib/wp/si-interfaces.h" line="44"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4653">The format used to configure the ports of the adapter session item. Some items automatically choose a format when being activated, others never set a format on activation and the user needs to manually set it externally with wp_si_adapter_set_ports_format().</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4645">the session item</doc>
              <type name="SiAdapter" c:type="WpSiAdapter*"/>
            </parameter>
            <parameter name="mode"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full"
                       nullable="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4646">the mode</doc>
              <type name="utf8" c:type="const gchar**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_ports_format">
        <callback name="set_ports_format">
          <source-position filename="lib/wp/si-interfaces.h" line="45"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4659">the session item</doc>
              <type name="SiAdapter" c:type="WpSiAdapter*"/>
            </parameter>
            <parameter name="format"
                       transfer-ownership="full"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4660">the format to be set</doc>
              <type name="SpaPod" c:type="WpSpaPod*"/>
            </parameter>
            <parameter name="mode"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4661">the mode</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4662">the callback to call when the operation is done</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4663">user data for @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_ports_format_finish">
        <callback name="set_ports_format_finish" throws="1">
          <source-position filename="lib/wp/si-interfaces.h" line="47"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4685">TRUE on success, FALSE if there was an error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4676">the session item</doc>
              <type name="SiAdapter" c:type="WpSiAdapter*"/>
            </parameter>
            <parameter name="res" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4677">the async result</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_ports_state">
        <callback name="get_ports_state">
          <source-position filename="lib/wp/si-interfaces.h" line="49"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4637">The state of the ports</doc>
            <type name="SiAdapterPortsState" c:type="WpSiAdapterPortsState"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4630">the session item</doc>
              <type name="SiAdapter" c:type="WpSiAdapter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="SiAdapterPortsState"
                 glib:type-name="WpSiAdapterPortsState"
                 glib:get-type="wp_si_adapter_ports_state_get_type"
                 c:type="WpSiAdapterPortsState">
      <member name="none"
              value="0"
              c:identifier="WP_SI_ADAPTER_PORTS_STATE_NONE"
              glib:nick="none"
              glib:name="WP_SI_ADAPTER_PORTS_STATE_NONE">
      </member>
      <member name="configuring"
              value="1"
              c:identifier="WP_SI_ADAPTER_PORTS_STATE_CONFIGURING"
              glib:nick="configuring"
              glib:name="WP_SI_ADAPTER_PORTS_STATE_CONFIGURING">
      </member>
      <member name="configured"
              value="2"
              c:identifier="WP_SI_ADAPTER_PORTS_STATE_CONFIGURED"
              glib:nick="configured"
              glib:name="WP_SI_ADAPTER_PORTS_STATE_CONFIGURED">
      </member>
    </enumeration>
    <class name="SiFactory"
           c:symbol-prefix="si_factory"
           c:type="WpSiFactory"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="WpSiFactory"
           glib:get-type="wp_si_factory_get_type"
           glib:type-struct="SiFactoryClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="452">A factory for session items.
The most simple way to register a new item implementation would be:
|[&lt;!-- language="C" --&gt;
  wp_si_factory_register (core,
     wp_si_factory_new_simple (
]|
And the most simple way to construct an item from a registered factory:
|[&lt;!-- language="C" --&gt;
  item = wp_session_item_make (core,
]|</doc>
      <source-position filename="lib/wp/si-factory.h" line="33"/>
      <constructor name="new_simple" c:identifier="wp_si_factory_new_simple">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4614">Creates a simple factory that constructs objects of a given GType.</doc>
        <source-position filename="lib/wp/si-factory.h" line="36"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4624">the new factory</doc>
          <type name="SiFactory" c:type="WpSiFactory*"/>
        </return-value>
        <parameters>
          <parameter name="factory_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4616">the factory name; must be a static string!</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="si_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4617">the WpSessionItem subclass type to instantiate for constructing items</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="find" c:identifier="wp_si_factory_find">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4586">Looks up a factory matching a name.</doc>
        <source-position filename="lib/wp/si-factory.h" line="46"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4596">the factory matching the lookup name</doc>
          <type name="SiFactory" c:type="WpSiFactory*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4588">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="factory_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4589">the lookup name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="construct" invoker="construct">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4572">Creates a new instance of the session item that is constructed by this factory.</doc>
        <source-position filename="lib/wp/si-factory.h" line="29"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4582">a new session item instance</doc>
          <type name="SessionItem" c:type="WpSessionItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4574">the factory</doc>
            <type name="SiFactory" c:type="WpSiFactory*"/>
          </instance-parameter>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4575">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="construct" c:identifier="wp_si_factory_construct">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4572">Creates a new instance of the session item that is constructed by this factory.</doc>
        <source-position filename="lib/wp/si-factory.h" line="43"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4582">a new session item instance</doc>
          <type name="SessionItem" c:type="WpSessionItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4574">the factory</doc>
            <type name="SiFactory" c:type="WpSiFactory*"/>
          </instance-parameter>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4575">the core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="wp_si_factory_get_name"
              glib:get-property="name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4559">Gets the name of the factory.</doc>
        <source-position filename="lib/wp/si-factory.h" line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4568">the factory name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4561">the factory</doc>
            <type name="SiFactory" c:type="WpSiFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_name">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="SiFactoryClass"
            c:type="WpSiFactoryClass"
            glib:is-gtype-struct-for="SiFactory">
      <source-position filename="lib/wp/si-factory.h" line="33"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="construct">
        <callback name="construct">
          <source-position filename="lib/wp/si-factory.h" line="29"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4582">a new session item instance</doc>
            <type name="SessionItem" c:type="WpSessionItem*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4574">the factory</doc>
              <type name="SiFactory" c:type="WpSiFactory*"/>
            </parameter>
            <parameter name="core" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4575">the core</doc>
              <type name="Core" c:type="WpCore*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <interface name="SiLink"
               c:symbol-prefix="si_link"
               c:type="WpSiLink"
               glib:type-name="WpSiLink"
               glib:get-type="wp_si_link_get_type"
               glib:type-struct="SiLinkInterface">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="472">An interface for session items that provide a PipeWire link.</doc>
      <source-position filename="lib/wp/si-interfaces.h" line="118"/>
      <prerequisite name="SessionItem"/>
      <virtual-method name="get_in_item" invoker="get_in_item">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4768">Gets the input item linked by the link.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4777">the input item that is linked by this link</doc>
          <type name="SiLinkable" c:type="WpSiLinkable*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4770">the session item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_out_item" invoker="get_out_item">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4755">Gets the output item linked by the link.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="113"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4764">the output item that is linked by this link</doc>
          <type name="SiLinkable" c:type="WpSiLinkable*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4757">the session item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_properties" invoker="get_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4742">Gets the properties of the link.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="111"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4751">the properties of the link</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4744">the session item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_registration_info"
                      invoker="get_registration_info">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4729">This should return information that is used for registering the link, as a GVariant of type a{ss} that contains additional properties to be added to the list of global properties.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="110"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4738">registration info for the link</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4731">the session item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_in_item" c:identifier="wp_si_link_get_in_item">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4768">Gets the input item linked by the link.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="130"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4777">the input item that is linked by this link</doc>
          <type name="SiLinkable" c:type="WpSiLinkable*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4770">the session item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_out_item" c:identifier="wp_si_link_get_out_item">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4755">Gets the output item linked by the link.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="127"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4764">the output item that is linked by this link</doc>
          <type name="SiLinkable" c:type="WpSiLinkable*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4757">the session item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_properties" c:identifier="wp_si_link_get_properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4742">Gets the properties of the link.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="124"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4751">the properties of the link</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4744">the session item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_registration_info"
              c:identifier="wp_si_link_get_registration_info">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4729">This should return information that is used for registering the link, as a GVariant of type a{ss} that contains additional properties to be added to the list of global properties.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="121"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4738">registration info for the link</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4731">the session item</doc>
            <type name="SiLink" c:type="WpSiLink*"/>
          </instance-parameter>
        </parameters>
      </method>
      <glib:signal name="link-properties-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </interface>
    <record name="SiLinkInterface"
            c:type="WpSiLinkInterface"
            glib:is-gtype-struct-for="SiLink">
      <source-position filename="lib/wp/si-interfaces.h" line="118"/>
      <field name="interface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_registration_info">
        <callback name="get_registration_info">
          <source-position filename="lib/wp/si-interfaces.h" line="110"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4738">registration info for the link</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4731">the session item</doc>
              <type name="SiLink" c:type="WpSiLink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_properties">
        <callback name="get_properties">
          <source-position filename="lib/wp/si-interfaces.h" line="111"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4751">the properties of the link</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4744">the session item</doc>
              <type name="SiLink" c:type="WpSiLink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_out_item">
        <callback name="get_out_item">
          <source-position filename="lib/wp/si-interfaces.h" line="113"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4764">the output item that is linked by this link</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4757">the session item</doc>
              <type name="SiLink" c:type="WpSiLink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_in_item">
        <callback name="get_in_item">
          <source-position filename="lib/wp/si-interfaces.h" line="114"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4777">the input item that is linked by this link</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4770">the session item</doc>
              <type name="SiLink" c:type="WpSiLink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <interface name="SiLinkable"
               c:symbol-prefix="si_linkable"
               c:type="WpSiLinkable"
               glib:type-name="WpSiLinkable"
               glib:get-type="wp_si_linkable_get_type"
               glib:type-struct="SiLinkableInterface">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="483">An interface for retrieving PipeWire port information from a session item. This information is used to create links in the nodes graph.</doc>
      <source-position filename="lib/wp/si-interfaces.h" line="88"/>
      <prerequisite name="SessionItem"/>
      <virtual-method name="get_acquisition" invoker="get_acquisition">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4716">Gets the acquisition interface associated with the item.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="84"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4725">the acquisition interface associated with this item, or NULL if this item does not require acquiring items before linking them</doc>
          <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4718">the session item</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_ports" invoker="get_ports">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4689">This method returns a variant of type "a(uuu)", where each tuple in the array contains the following information:



 - u: (guint32) node id
 - u: (guint32) port id (the port must belong on the node specified above)
 - u: (guint32) the audio channel (enum spa_audio_channel) that this port makes available, or 0 for non-audio content

The order in which ports appear in this array is important when no channel information is available. The link implementation should link the ports in the order they appear. This is normally a good enough substitute for channel matching.
The @context argument can be used to get different sets of ports from the item. The following well-known contexts are defined:
 - NULL: get the standard ports to be linked
 - "monitor": get the monitor ports
 - "control": get the control port
 - "reverse": get the reverse direction ports, if this item controls a filter node, which would have ports on both directions

Contexts other than NULL may only be used internally to ease the implementation of more complex item relationships. For example, a WpSessionItem that is in control of an input (sink) adapter node may implement WpSiLinkable where the NULL context will return the standard input ports and the "monitor" context will return the adapter's monitor ports. When linking this item to another item, the NULL context will always be used, but the item may internally spawn a secondary WpSessionItem that implements the "monitor" item. That secondary item may implement WpSiLinkable, chaining calls to the WpSiLinkable of the original item using the "monitor" context. This way, the monitor WpSessionItem does not need to share control of the underlying node; it only proxies calls to satisfy the API.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="83"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4712">a GVariant containing information about the ports of this item</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4691">the session item</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </instance-parameter>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4692">an optional context for the ports</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_acquisition"
              c:identifier="wp_si_linkable_get_acquisition">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4716">Gets the acquisition interface associated with the item.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="95"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4725">the acquisition interface associated with this item, or NULL if this item does not require acquiring items before linking them</doc>
          <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4718">the session item</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ports" c:identifier="wp_si_linkable_get_ports">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4689">This method returns a variant of type "a(uuu)", where each tuple in the array contains the following information:



 - u: (guint32) node id
 - u: (guint32) port id (the port must belong on the node specified above)
 - u: (guint32) the audio channel (enum spa_audio_channel) that this port makes available, or 0 for non-audio content

The order in which ports appear in this array is important when no channel information is available. The link implementation should link the ports in the order they appear. This is normally a good enough substitute for channel matching.
The @context argument can be used to get different sets of ports from the item. The following well-known contexts are defined:
 - NULL: get the standard ports to be linked
 - "monitor": get the monitor ports
 - "control": get the control port
 - "reverse": get the reverse direction ports, if this item controls a filter node, which would have ports on both directions

Contexts other than NULL may only be used internally to ease the implementation of more complex item relationships. For example, a WpSessionItem that is in control of an input (sink) adapter node may implement WpSiLinkable where the NULL context will return the standard input ports and the "monitor" context will return the adapter's monitor ports. When linking this item to another item, the NULL context will always be used, but the item may internally spawn a secondary WpSessionItem that implements the "monitor" item. That secondary item may implement WpSiLinkable, chaining calls to the WpSiLinkable of the original item using the "monitor" context. This way, the monitor WpSessionItem does not need to share control of the underlying node; it only proxies calls to satisfy the API.</doc>
        <source-position filename="lib/wp/si-interfaces.h" line="91"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4712">a GVariant containing information about the ports of this item</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4691">the session item</doc>
            <type name="SiLinkable" c:type="WpSiLinkable*"/>
          </instance-parameter>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4692">an optional context for the ports</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="SiLinkableInterface"
            c:type="WpSiLinkableInterface"
            glib:is-gtype-struct-for="SiLinkable">
      <source-position filename="lib/wp/si-interfaces.h" line="88"/>
      <field name="interface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_ports">
        <callback name="get_ports">
          <source-position filename="lib/wp/si-interfaces.h" line="83"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4712">a GVariant containing information about the ports of this item</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4691">the session item</doc>
              <type name="SiLinkable" c:type="WpSiLinkable*"/>
            </parameter>
            <parameter name="context"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4692">an optional context for the ports</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_acquisition">
        <callback name="get_acquisition">
          <source-position filename="lib/wp/si-interfaces.h" line="84"/>
          <return-value transfer-ownership="none" nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4725">the acquisition interface associated with this item, or NULL if this item does not require acquiring items before linking them</doc>
            <type name="SiAcquisition" c:type="WpSiAcquisition*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="docs/wp-gtkdoc.h"
                   line="4718">the session item</doc>
              <type name="SiLinkable" c:type="WpSiLinkable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="SimpleEventHook"
           c:symbol-prefix="simple_event_hook"
           c:type="WpSimpleEventHook"
           parent="InterestEventHook"
           glib:type-name="WpSimpleEventHook"
           glib:get-type="wp_simple_event_hook_get_type"
           glib:type-struct="SimpleEventHookClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="494">An event hook that runs a GClosure, synchronously.</doc>
      <source-position filename="lib/wp/event-hook.h" line="107"/>
      <constructor name="new" c:identifier="wp_simple_event_hook_new">
        <source-position filename="lib/wp/event-hook.h" line="111"/>
        <return-value transfer-ownership="full">
          <type name="EventHook" c:type="WpEventHook*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="before" transfer-ownership="none">
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
          <parameter name="after" transfer-ownership="none">
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="closure"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="GObject.Closure"/>
      </property>
    </class>
    <record name="SimpleEventHookClass"
            c:type="WpSimpleEventHookClass"
            glib:is-gtype-struct-for="SimpleEventHook">
      <source-position filename="lib/wp/event-hook.h" line="107"/>
      <field name="parent_class">
        <type name="InterestEventHookClass" c:type="WpInterestEventHookClass"/>
      </field>
    </record>
    <class name="SpaDevice"
           c:symbol-prefix="spa_device"
           c:type="WpSpaDevice"
           parent="Proxy"
           glib:type-name="WpSpaDevice"
           glib:get-type="wp_spa_device_get_type"
           glib:type-struct="SpaDeviceClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="505">A WpSpaDevice allows running a spa_device object locally, loading the implementation from a SPA factory. This is useful to run device monitors inside the session manager and have control over creating the actual nodes that the spa_device requests to create.
To enable the spa device, call wp_object_activate() requesting WP_SPA_DEVICE_FEATURE_ENABLED.
For actual devices (not device monitors) it also possible and desirable to export the device to PipeWire, which can be done by requesting WP_PROXY_FEATURE_BOUND from wp_object_activate(). When exporting, the export should be done before enabling the device, by requesting both features at the same time.</doc>
      <source-position filename="lib/wp/device.h" line="47"/>
      <constructor name="new_from_spa_factory"
                   c:identifier="wp_spa_device_new_from_spa_factory">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1331">Constructs a SPA_TYPE_INTERFACE_Device by loading the given SPA @factory_name.


To export this device to the PipeWire server, you need to call wp_object_activate() requesting WP_PROXY_FEATURE_BOUND and wait for the operation to complete.</doc>
        <source-position filename="lib/wp/device.h" line="54"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1343">A new WpSpaDevice wrapping the device that was constructed by the factory, or NULL if the factory does not exist or was unable to construct the device</doc>
          <type name="SpaDevice" c:type="WpSpaDevice*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1333">the wireplumber core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="factory_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1334">the name of the SPA factory</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1335">properties to be passed to device constructor</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrap" c:identifier="wp_spa_device_new_wrap">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1316">Constructs an SPA Device object from an existing device handle.</doc>
        <source-position filename="lib/wp/device.h" line="50"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1327">A new WpSpaDevice</doc>
          <type name="SpaDevice" c:type="WpSpaDevice*"/>
        </return-value>
        <parameters>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1318">the wireplumber core</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="spa_device_handle"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1319">the spa device handle</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="properties"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1320">additional properties of the device</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_managed_object"
              c:identifier="wp_spa_device_get_managed_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1375">Gets one of the objects managed by this device.</doc>
        <source-position filename="lib/wp/device.h" line="64"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1385">the managed object associated with @id</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1377">the spa device</doc>
            <type name="SpaDevice" c:type="WpSpaDevice*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1378">the (device-internal) id of the object to get</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_properties"
              c:identifier="wp_spa_device_get_properties"
              glib:get-property="properties">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1347">Gets the properties of this device.</doc>
        <source-position filename="lib/wp/device.h" line="58"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1356">the device properties</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1349">the spa device</doc>
            <type name="SpaDevice" c:type="WpSpaDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="new_managed_object_iterator"
              c:identifier="wp_spa_device_new_managed_object_iterator"
              version="0.4.11">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1360">Iterates through all the objects managed by this device.</doc>
        <source-position filename="lib/wp/device.h" line="61"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1369">a WpIterator that iterates over all the objects managed by this device</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1362">the spa device</doc>
            <type name="SpaDevice" c:type="WpSpaDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_managed_pending"
              c:identifier="wp_spa_device_set_managed_pending">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1403">Marks a managed object id pending.


When an object id is pending, Props from received ObjectConfig events for the id are saved. When wp_spa_device_store_managed_object later sets an object for the id, the saved Props are immediately set on the object and pending status is cleared.
If an object is already set for the id, this has no effect.</doc>
        <source-position filename="lib/wp/device.h" line="71"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1405">the spa device</doc>
            <type name="SpaDevice" c:type="WpSpaDevice*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1406">the (device-internal) id of the object</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="store_managed_object"
              c:identifier="wp_spa_device_store_managed_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1389">Stores or removes a managed object into/from a device.</doc>
        <source-position filename="lib/wp/device.h" line="67"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1391">the spa device</doc>
            <type name="SpaDevice" c:type="WpSpaDevice*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1392">the (device-internal) id of the object</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="object"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="1393">the object to store or NULL to remove the managed object associated with @id</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <property name="properties"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_properties">
        <type name="Properties"/>
      </property>
      <property name="spa-device-handle"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <glib:signal name="create-object" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="p2" transfer-ownership="none">
            <type name="Properties"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="object-removed" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SpaDeviceClass"
            c:type="WpSpaDeviceClass"
            glib:is-gtype-struct-for="SpaDevice">
      <source-position filename="lib/wp/device.h" line="47"/>
      <field name="parent_class">
        <type name="ProxyClass" c:type="WpProxyClass"/>
      </field>
    </record>
    <bitfield name="SpaDeviceFeatures"
              glib:type-name="WpSpaDeviceFeatures"
              glib:get-type="wp_spa_device_features_get_type"
              c:type="WpSpaDeviceFeatures">
      <member name="enabled"
              value="65536"
              c:identifier="WP_SPA_DEVICE_FEATURE_ENABLED"
              glib:nick="enabled"
              glib:name="WP_SPA_DEVICE_FEATURE_ENABLED">
      </member>
    </bitfield>
    <record name="SpaJson"
            c:type="WpSpaJson"
            opaque="1"
            version="0.4.8"
            glib:type-name="WpSpaJson"
            glib:get-type="wp_spa_json_get_type"
            c:symbol-prefix="spa_json">
      <source-position filename="lib/wp/spa-json.h" line="29"/>
      <constructor name="new_array"
                   c:identifier="wp_spa_json_new_array"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5085">Creates a spa json of type array.</doc>
        <source-position filename="lib/wp/spa-json.h" line="89"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5095">The new spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="format"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5087">the first value format ("n", "b", "i", "f", "s" or "J")</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5088">a list of array types and values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_array_valist"
                   c:identifier="wp_spa_json_new_array_valist"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5099">This is the va_list version of wp_spa_json_new_array()</doc>
        <source-position filename="lib/wp/spa-json.h" line="93"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5109">The new spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="format"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5101">the first value format ("n", "b", "i", "f", "s" or "J")</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5102">the variable arguments passed to wp_spa_json_new_array()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_boolean" c:identifier="wp_spa_json_new_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5033">Creates a spa json of type boolean.</doc>
        <source-position filename="lib/wp/spa-json.h" line="77"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5042">The new spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5035">the boolean value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_float" c:identifier="wp_spa_json_new_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5059">Creates a spa json of type float.</doc>
        <source-position filename="lib/wp/spa-json.h" line="83"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5068">The new spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5061">the float value</doc>
            <type name="gfloat" c:type="float"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_string"
                   c:identifier="wp_spa_json_new_from_string"
                   version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4853">Constructs a new WpSpaJson from a JSON string.</doc>
        <source-position filename="lib/wp/spa-json.h" line="38"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4862">a new WpSpaJson; unlike the "wrap" variants, this function copies the data in @json_str, so it does not need to stay alive.</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="json_str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4855">a JSON string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_stringn"
                   c:identifier="wp_spa_json_new_from_stringn"
                   version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4868">Constructs a new WpSpaJson from a JSON string with specific length.</doc>
        <source-position filename="lib/wp/spa-json.h" line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4878">a new WpSpaJson; unlike the "wrap" variants, this function copies the data in @json_str, so it does not need to stay alive.</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="json_str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4870">a JSON string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4871">the specific length of the string</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_int" c:identifier="wp_spa_json_new_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5046">Creates a spa json of type int.</doc>
        <source-position filename="lib/wp/spa-json.h" line="80"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5055">The new spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5048">the int value</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_null" c:identifier="wp_spa_json_new_null">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5021">Creates a spa json of type NULL.</doc>
        <source-position filename="lib/wp/spa-json.h" line="74"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5029">The new spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
      </constructor>
      <constructor name="new_object"
                   c:identifier="wp_spa_json_new_object"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5113">Creates a spa json of type object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="96"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5124">The new spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="key"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5115">the first object property key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="format"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5116">the first property format ("n", "b", "i", "f", "s" or "J")</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5117">a list of object properties and values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_object_valist"
                   c:identifier="wp_spa_json_new_object_valist"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5128">This is the va_list version of wp_spa_json_new_object()</doc>
        <source-position filename="lib/wp/spa-json.h" line="100"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5139">The new spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="key"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5130">the first object property key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="format"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5131">the first property format ("n", "b", "i", "f", "s" or "J")</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5132">the variable arguments passed to wp_spa_json_new_object()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_string" c:identifier="wp_spa_json_new_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5072">Creates a spa json of type string.</doc>
        <source-position filename="lib/wp/spa-json.h" line="86"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5081">The new spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5074">the string value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrap" c:identifier="wp_spa_json_new_wrap">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4915">Constructs a new WpSpaJson that wraps the given spa_json.</doc>
        <source-position filename="lib/wp/spa-json.h" line="50"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4924">a new WpSpaJson that references the data in @json. @json is not copied, so it needs to stay alive.</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="json"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4917">a spa_json</doc>
            <type name="gpointer" c:type="spa_json*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrap_string"
                   c:identifier="wp_spa_json_new_wrap_string"
                   version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4884">Constructs a new WpSpaJson that wraps a JSON string.</doc>
        <source-position filename="lib/wp/spa-json.h" line="44"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4893">a new WpSpaJson that references the data in @json_str. @json_str is not copied, so it needs to stay alive.</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="json_str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4886">a JSON string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrap_stringn"
                   c:identifier="wp_spa_json_new_wrap_stringn"
                   version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4899">Constructs a new WpSpaJson that wraps a JSON string with specific length.</doc>
        <source-position filename="lib/wp/spa-json.h" line="47"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4909">a new WpSpaJson that references the data in @json_str. @json_str is not copied, so it needs to stay alive.</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <parameter name="json_str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4901">a JSON string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4902">the specific length of the string</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy" c:identifier="wp_spa_json_copy">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4982">Copies a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="65"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4991">The newly copied spa json</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="other" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4984">a spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ensure_unique_owner"
              c:identifier="wp_spa_json_ensure_unique_owner">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5008">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.</doc>
        <source-position filename="lib/wp/spa-json.h" line="71"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5017">the uniquely owned spa json object which may or may not be the same as @self.</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5010">a spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="wp_spa_json_get_data">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4941">Returns the json data.</doc>
        <source-position filename="lib/wp/spa-json.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4950">a const pointer to the json data</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4943">a spa json object</doc>
            <type name="SpaJson" c:type="const WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size" c:identifier="wp_spa_json_get_size">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4954">Returns the json data size.</doc>
        <source-position filename="lib/wp/spa-json.h" line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4963">the json data size</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4956">a spa json object</doc>
            <type name="SpaJson" c:type="const WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_spa_json" c:identifier="wp_spa_json_get_spa_json">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4928">Converts a WpSpaJson pointer to a struct spa_json one, for use with native pipewire &amp; spa functions. The returned pointer is owned by WpSpaJson and may not be modified or freed.</doc>
        <source-position filename="lib/wp/spa-json.h" line="53"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4937">a const pointer to the underlying spa_json structure</doc>
          <type name="gpointer" c:type="const spa_json*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4930">a spa json object</doc>
            <type name="SpaJson" c:type="const WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_array" c:identifier="wp_spa_json_is_array">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5208">Checks whether the spa json is of type array or not.</doc>
        <source-position filename="lib/wp/spa-json.h" line="119"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5217">TRUE if it is of type array, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5210">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_boolean" c:identifier="wp_spa_json_is_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5156">Checks whether the spa json is of type boolean or not.</doc>
        <source-position filename="lib/wp/spa-json.h" line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5165">TRUE if it is of type boolean, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5158">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_container" c:identifier="wp_spa_json_is_container">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5221">Checks whether the spa json is of type container or not.</doc>
        <source-position filename="lib/wp/spa-json.h" line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5230">TRUE if it is of type container, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5223">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_float" c:identifier="wp_spa_json_is_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5182">Checks whether the spa json is of type float or not.</doc>
        <source-position filename="lib/wp/spa-json.h" line="113"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5191">TRUE if it is of type float, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5184">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_int" c:identifier="wp_spa_json_is_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5169">Checks whether the spa json is of type int or not.</doc>
        <source-position filename="lib/wp/spa-json.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5178">TRUE if it is of type int, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5171">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_null" c:identifier="wp_spa_json_is_null">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5143">Checks whether the spa json is of type null or not.</doc>
        <source-position filename="lib/wp/spa-json.h" line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5152">TRUE if it is of type null, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5145">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_object" c:identifier="wp_spa_json_is_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5234">Checks whether the spa json is of type object or not.</doc>
        <source-position filename="lib/wp/spa-json.h" line="125"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5243">TRUE if it is of type object, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5236">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_string" c:identifier="wp_spa_json_is_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5195">Checks whether the spa json is of type string or not.</doc>
        <source-position filename="lib/wp/spa-json.h" line="116"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5204">TRUE if it is of type string, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5197">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_unique_owner"
              c:identifier="wp_spa_json_is_unique_owner">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4995">Checks if the json is the unique owner of its data or not.</doc>
        <source-position filename="lib/wp/spa-json.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5004">TRUE if the json owns the data, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4997">a spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="new_iterator" c:identifier="wp_spa_json_new_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5773">Creates a new iterator for a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="158"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5782">the new spa json iterator</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5775">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="object_get"
              c:identifier="wp_spa_json_object_get"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5358">Parses the object property values of a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="152"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5368">TRUE if the properties and values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5360">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5361">the list of property names, formats and values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="object_get_valist"
              c:identifier="wp_spa_json_object_get_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5372">This is the va_list version of wp_spa_json_object_get()</doc>
        <source-position filename="lib/wp/spa-json.h" line="155"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5382">TRUE if the properties and values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5374">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5375">the variable arguments passed to wp_spa_json_object_get()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_array"
              c:identifier="wp_spa_json_parse_array"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5302">Parses the array types and values of a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5312">TRUE if the types and values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5304">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
          <parameter name="..."
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5305">the list of array types and values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_array_valist"
              c:identifier="wp_spa_json_parse_array_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5316">This is the va_list version of wp_spa_json_parse_array()</doc>
        <source-position filename="lib/wp/spa-json.h" line="143"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5326">TRUE if the types and values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5318">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
          <parameter name="args"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5319">the variable arguments passed to wp_spa_json_parse_array()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_boolean" c:identifier="wp_spa_json_parse_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5247">Parses the boolean value of a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="128"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5257">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5249">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5250">the boolean value</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_float" c:identifier="wp_spa_json_parse_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5275">Parses the float value of a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="134"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5285">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5277">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5278">the float value</doc>
            <type name="gfloat" c:type="float*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_int" c:identifier="wp_spa_json_parse_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5261">Parses the int value of a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5271">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5263">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5264">the int value</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_object"
              c:identifier="wp_spa_json_parse_object"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5330">Parses the object properties and values of a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="146"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5340">TRUE if the properties and values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5332">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
          <parameter name="..."
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5333">the list of object properties and values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_object_valist"
              c:identifier="wp_spa_json_parse_object_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5344">This is the va_list version of wp_spa_json_parse_object()</doc>
        <source-position filename="lib/wp/spa-json.h" line="149"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5354">TRUE if the properties and values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5346">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
          <parameter name="args"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5347">the variable arguments passed to wp_spa_json_parse_object()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_string" c:identifier="wp_spa_json_parse_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5289">Parses the string value of a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="137"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5298">The newly allocated parsed string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5291">the spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_spa_json_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4828">Increases the reference count of a spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="32"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4837">@self with an additional reference count on it</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4830">a spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="wp_spa_json_to_string"
              version="0.4.11">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4967">Returns a newly allocated json string with length matching the size.</doc>
        <source-position filename="lib/wp/spa-json.h" line="62"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="4976">the json string with length matching the size</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4969">a spa json object</doc>
            <type name="SpaJson" c:type="const WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_spa_json_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="4841">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/spa-json.h" line="35"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="4843">a spa json object</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="SpaJsonBuilder"
            c:type="WpSpaJsonBuilder"
            opaque="1"
            version="0.4.8"
            glib:type-name="WpSpaJsonBuilder"
            glib:get-type="wp_spa_json_builder_get_type"
            c:symbol-prefix="spa_json_builder">
      <source-position filename="lib/wp/spa-json.h" line="170"/>
      <constructor name="new_array"
                   c:identifier="wp_spa_json_builder_new_array">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5411">Creates a spa json builder of type array.</doc>
        <source-position filename="lib/wp/spa-json.h" line="179"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5419">the new spa json builder</doc>
          <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
        </return-value>
      </constructor>
      <constructor name="new_object"
                   c:identifier="wp_spa_json_builder_new_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5423">Creates a spa json builder of type object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="182"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5431">the new spa json builder</doc>
          <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
        </return-value>
      </constructor>
      <method name="add"
              c:identifier="wp_spa_json_builder_add"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5552">Adds values into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="214"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5554">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5555">the json values</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_boolean"
              c:identifier="wp_spa_json_builder_add_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5460">Adds a boolean value into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="191"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5462">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5463">the boolean value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_float" c:identifier="wp_spa_json_builder_add_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5486">Adds a float value into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="197"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5488">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5489">the float value</doc>
            <type name="gfloat" c:type="float"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_from_string"
              c:identifier="wp_spa_json_builder_add_from_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5525">Adds a json string into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="206"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5527">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="json_str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5528">the json string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_from_stringn"
              c:identifier="wp_spa_json_builder_add_from_stringn">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5538">Adds a json string with specific length into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="210"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5540">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="json_str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5541">the json string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5542">the specific length of the json string</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_int" c:identifier="wp_spa_json_builder_add_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5473">Adds a int value into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="194"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5475">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5476">the int value</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_json" c:identifier="wp_spa_json_builder_add_json">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5512">Adds a json value into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="203"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5514">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="json" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5515">the json value</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_null" c:identifier="wp_spa_json_builder_add_null">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5448">Adds a null value into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="188"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5450">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="add_property"
              c:identifier="wp_spa_json_builder_add_property">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5435">Adds a property into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="185"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5437">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5438">the name of the property</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_string" c:identifier="wp_spa_json_builder_add_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5499">Adds a string value into the builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="200"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5501">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5502">the string value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_valist"
              c:identifier="wp_spa_json_builder_add_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5565">This is the va_list version of wp_spa_json_builder_add()</doc>
        <source-position filename="lib/wp/spa-json.h" line="218"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5567">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5568">the variable arguments passed to wp_spa_json_builder_add()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="end" c:identifier="wp_spa_json_builder_end">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5578">Ends the builder process and returns the constructed spa json object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="221"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5587">the constructed spa json object</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5580">the spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_spa_json_builder_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5386">Increases the reference count of a spa json builder.</doc>
        <source-position filename="lib/wp/spa-json.h" line="173"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5395">@self with an additional reference count on it</doc>
          <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5388">a spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_spa_json_builder_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5399">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/spa-json.h" line="176"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5401">a spa json builder object</doc>
            <type name="SpaJsonBuilder" c:type="WpSpaJsonBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="SpaJsonParser"
            c:type="WpSpaJsonParser"
            opaque="1"
            version="0.4.8"
            glib:type-name="WpSpaJsonParser"
            glib:get-type="wp_spa_json_parser_get_type"
            c:symbol-prefix="spa_json_parser">
      <source-position filename="lib/wp/spa-json.h" line="233"/>
      <constructor name="new_array"
                   c:identifier="wp_spa_json_parser_new_array">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5616">Creates a spa json array parser. The @json object must be valid for the entire life-cycle of the returned parser.</doc>
        <source-position filename="lib/wp/spa-json.h" line="242"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5625">The new spa json parser</doc>
          <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
        </return-value>
        <parameters>
          <parameter name="json" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5618">the spa json array to parse</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_object"
                   c:identifier="wp_spa_json_parser_new_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5629">Creates a spa json object parser. The @json object must be valid for the entire life-cycle of the returned parser.</doc>
        <source-position filename="lib/wp/spa-json.h" line="245"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5638">The new spa json parser</doc>
          <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
        </return-value>
        <parameters>
          <parameter name="json" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5631">the spa json object to parse</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_undefined"
                   c:identifier="wp_spa_json_parser_new_undefined"
                   version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5642">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.
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.</doc>
        <source-position filename="lib/wp/spa-json.h" line="248"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5655">The new spa json parser</doc>
          <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
        </return-value>
        <parameters>
          <parameter name="json" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5644">the spa json to parse</doc>
            <type name="SpaJson" c:type="WpSpaJson*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="end" c:identifier="wp_spa_json_parser_end">
        <source-position filename="lib/wp/spa-json.h" line="277"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get"
              c:identifier="wp_spa_json_parser_get"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5745">Gets the values from a spa json parser object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="270"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5755">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5747">the spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
          <parameter name="..."
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5748">a list of values to get, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_boolean" c:identifier="wp_spa_json_parser_get_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5674">Gets the boolean value from a spa json parser.</doc>
        <source-position filename="lib/wp/spa-json.h" line="254"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5684">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5676">the spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5677">the boolean value</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_float" c:identifier="wp_spa_json_parser_get_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5702">Gets the float value from a spa json parser object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="261"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5712">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5704">the spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5705">the float value</doc>
            <type name="gfloat" c:type="float*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_int" c:identifier="wp_spa_json_parser_get_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5688">Gets the int value from a spa json parser object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="258"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5698">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5690">the spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5691">the int value</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_json" c:identifier="wp_spa_json_parser_get_json">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5729">Gets the spa json value from a spa json parser object.


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</doc>
        <source-position filename="lib/wp/spa-json.h" line="267"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5741">The spa json value or NULL if it could not be obtained</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5731">the spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_null" c:identifier="wp_spa_json_parser_get_null">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5661">Gets the null value from a spa json parser.</doc>
        <source-position filename="lib/wp/spa-json.h" line="251"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5670">TRUE if the null value is present, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5663">the spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_string" c:identifier="wp_spa_json_parser_get_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5716">Gets the string value from a spa json parser object.</doc>
        <source-position filename="lib/wp/spa-json.h" line="264"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5725">The newly allocated parsed string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5718">the spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_valist"
              c:identifier="wp_spa_json_parser_get_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5759">This is the va_list version of wp_spa_json_parser_get()</doc>
        <source-position filename="lib/wp/spa-json.h" line="274"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5769">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5761">the spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5762">the variable arguments passed to wp_spa_json_parser_get()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_spa_json_parser_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5591">Increases the reference count of a spa json parser.</doc>
        <source-position filename="lib/wp/spa-json.h" line="236"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5600">@self with an additional reference count on it</doc>
          <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5593">a spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_spa_json_parser_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5604">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/spa-json.h" line="239"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5606">a spa json parser object</doc>
            <type name="SpaJsonParser" c:type="WpSpaJsonParser*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="SpaPod"
            c:type="WpSpaPod"
            opaque="1"
            glib:type-name="WpSpaPod"
            glib:get-type="wp_spa_pod_get_type"
            c:symbol-prefix="spa_pod">
      <source-position filename="lib/wp/spa-pod.h" line="30"/>
      <constructor name="new_boolean" c:identifier="wp_spa_pod_new_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5928">Creates a spa pod of type boolean.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5937">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5930">the boolean value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_bytes" c:identifier="wp_spa_pod_new_bytes">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6019">Creates a spa pod of type bytes.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="87"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6029">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6021">the bytes value</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6022">the length of the bytes value</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_choice"
                   c:identifier="wp_spa_pod_new_choice"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6088">Creates a spa pod of type choice.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6098">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="choice_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6090">the name of the choice type ("Range", "Step", ...),</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6091">a list of choice values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_choice_valist"
                   c:identifier="wp_spa_pod_new_choice_valist"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6102">This is the va_list version of wp_spa_pod_new_choice()</doc>
        <source-position filename="lib/wp/spa-pod.h" line="106"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6112">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="choice_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6104">the name of the choice type ("Range", "Step", ...)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6105">the variable arguments passed to wp_spa_pod_new_choice()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_double" c:identifier="wp_spa_pod_new_double">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5993">Creates a spa pod of type double.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="81"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6002">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5995">the double value</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_fd" c:identifier="wp_spa_pod_new_fd">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6047">Creates a spa pod of type Fd.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="93"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6056">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6049">the Fd value</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_float" c:identifier="wp_spa_pod_new_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5980">Creates a spa pod of type float.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="78"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5989">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5982">the float value</doc>
            <type name="gfloat" c:type="float"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_fraction" c:identifier="wp_spa_pod_new_fraction">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6074">Creates a spa pod of type fraction.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="99"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6084">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="num" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6076">the numerator value of the fraction</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="denom" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6077">the denominator value of the fraction</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_id" c:identifier="wp_spa_pod_new_id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5941">Creates a spa pod of type Id.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="69"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5950">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5943">the Id value</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_int" c:identifier="wp_spa_pod_new_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5954">Creates a spa pod of type int.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5963">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5956">the int value</doc>
            <type name="gint32" c:type="gint32"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_long" c:identifier="wp_spa_pod_new_long">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5967">Creates a spa pod of type long.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5976">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5969">the long value</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_none" c:identifier="wp_spa_pod_new_none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5916">Creates a spa pod of type None.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="63"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5924">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
      </constructor>
      <constructor name="new_object"
                   c:identifier="wp_spa_pod_new_object"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6116">Creates a spa pod of type object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="109"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6127">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="type_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6118">the type name of the object type</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="id_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6119">the id name of the object,</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6120">a list of object properties with their values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_object_valist"
                   c:identifier="wp_spa_pod_new_object_valist"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6131">This is the va_list version of wp_spa_pod_new_object()</doc>
        <source-position filename="lib/wp/spa-pod.h" line="113"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6142">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="type_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6133">the type name of the object type</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="id_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6134">the id name of the object</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6135">the variable arguments passed to wp_spa_pod_new_object()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_pointer" c:identifier="wp_spa_pod_new_pointer">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6033">Creates a spa pod of type pointer.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="90"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6043">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="type_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6035">the name of the type of the pointer</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6036">the pointer value</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_rectangle"
                   c:identifier="wp_spa_pod_new_rectangle">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6060">Creates a spa pod of type rectangle.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="96"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6070">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6062">the width value of the rectangle</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6063">the height value of the rectangle</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_sequence"
                   c:identifier="wp_spa_pod_new_sequence"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6146">Creates a spa pod of type sequence.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="117"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6156">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="unit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6148">the unit of the sequence</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6149">a list of sequence controls with their values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_sequence_valist"
                   c:identifier="wp_spa_pod_new_sequence_valist"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6160">This is the va_list version of wp_spa_pod_new_sequence()</doc>
        <source-position filename="lib/wp/spa-pod.h" line="120"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6170">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="unit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6162">the unit of the sequence</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6163">the variable arguments passed to wp_spa_pod_new_sequence()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_string" c:identifier="wp_spa_pod_new_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6006">Creates a spa pod of type string.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="84"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6015">The new spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6008">the string value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrap" c:identifier="wp_spa_pod_new_wrap">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5811">Constructs a new WpSpaPod that wraps the given spa_pod.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="39"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5820">a new WpSpaPod that references the data in @pod. @pod is not copied, so it needs to stay alive. The returned WpSpaPod can be modified by using the setter functions, in which case @pod will be modified underneath.</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="pod"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5813">a spa_pod</doc>
            <type name="gpointer" c:type="spa_pod*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_wrap_const"
                   c:identifier="wp_spa_pod_new_wrap_const">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5824">Constructs a new immutable WpSpaPod that wraps the given spa_pod.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="42"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5833">a new WpSpaPod that references the data in @pod. @pod is not copied, so it needs to stay alive. The returned WpSpaPod cannot be modified, unless it's copied first.</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <parameter name="pod"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5826">a constant spa_pod</doc>
            <type name="gpointer" c:type="const spa_pod*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy" c:identifier="wp_spa_pod_copy">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5877">Copies a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="54"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5886">The newly copied spa pod</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="other" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5879">a spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ensure_unique_owner"
              c:identifier="wp_spa_pod_ensure_unique_owner">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5903">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.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="60"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5912">the uniquely owned spa pod object which may or may not be the same as @self.</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5905">a spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="wp_spa_pod_equal">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6762">Checks whether two spa pod objects have the same value or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="256"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6772">TRUE if both spa pod objects have the same values, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6764">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="pod" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6765">the pod with the value to be compared with</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
        </parameters>
      </method>
      <method name="filter" c:identifier="wp_spa_pod_filter">
        <source-position filename="lib/wp/spa-pod.h" line="293"/>
        <return-value transfer-ownership="full">
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="filter" transfer-ownership="none">
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
        </parameters>
      </method>
      <method name="fixate" c:identifier="wp_spa_pod_fixate">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6891">Fixates choices in an object pod so that they only have one value.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="290"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6900">TRUE if the pod was an object and it went through the fixation procedure, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6893">a spa pod</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_array_child" c:identifier="wp_spa_pod_get_array_child">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6878">Gets the child of a spa pod array object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="284"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6887">the child of the spa pod array object</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6880">a spa pod choice object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_boolean" c:identifier="wp_spa_pod_get_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6434">Gets the boolean value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="183"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6444">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6436">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6437">the boolean value</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bytes" c:identifier="wp_spa_pod_get_bytes">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6532">Gets the bytes value and its len of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="204"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6543">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6534">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6535">the bytes value</doc>
            <type name="gpointer" c:type="gconstpointer*"/>
          </parameter>
          <parameter name="len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6536">the length of the bytes value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_choice_child"
              c:identifier="wp_spa_pod_get_choice_child">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6865">Gets the child of a spa pod choice object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="281"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6874">the child of the spa pod choice object</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6867">a spa pod choice object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_choice_type" c:identifier="wp_spa_pod_get_choice_type">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5864">If the pod is a Choice, this gets the choice type (Range, Step, Enum, ...)</doc>
        <source-position filename="lib/wp/spa-pod.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5873">the choice type of the choice pod</doc>
          <type name="SpaIdValue" c:type="WpSpaIdValue"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5866">a choice pod</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_control" c:identifier="wp_spa_pod_get_control">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6849">Gets the offset, type name and spa pod value of a spa pod control.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="277"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6861">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6851">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6852">the offset of the control</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
          <parameter name="ctl_type"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6853">the control type (Properties, Midi, ...)</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6854">the spa pod value of the control</doc>
            <type name="SpaPod" c:type="WpSpaPod**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_double" c:identifier="wp_spa_pod_get_double">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6504">Gets the double value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="198"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6514">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6506">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6507">the double value</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_fd" c:identifier="wp_spa_pod_get_fd">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6561">Gets the Fd value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="211"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6571">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6563">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6564">the Fd value</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_float" c:identifier="wp_spa_pod_get_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6490">Gets the float value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="195"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6500">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6492">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6493">the float value</doc>
            <type name="gfloat" c:type="float*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_fraction" c:identifier="wp_spa_pod_get_fraction">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6590">Gets the fractions's numerator and denominator value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="218"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6601">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6592">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="num"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6593">the fractions's numerator value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
          <parameter name="denom"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6594">the fractions's denominator value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_id" c:identifier="wp_spa_pod_get_id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6448">Gets the Id value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="186"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6458">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6450">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6451">the Id value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_int" c:identifier="wp_spa_pod_get_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6462">Gets the int value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="189"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6472">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6464">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6465">the int value</doc>
            <type name="gint32" c:type="gint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_long" c:identifier="wp_spa_pod_get_long">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6476">Gets the long value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="192"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6486">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6478">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6479">the long value</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_object"
              c:identifier="wp_spa_pod_get_object"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6776">Gets the object properties values of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="259"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6787">TRUE if the object properties values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6778">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="id_name"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6779">the id name of the object,</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
          <parameter name="..."
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6780">the list of the object properties values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_object_valist"
              c:identifier="wp_spa_pod_get_object_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6791">This is the va_list version of wp_spa_pod_get_object()</doc>
        <source-position filename="lib/wp/spa-pod.h" line="263"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6802">TRUE if the object properties values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6793">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="id_name"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6794">the id name of the object</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
          <parameter name="args"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6795">the variable arguments passed to wp_spa_pod_get_object()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_pointer" c:identifier="wp_spa_pod_get_pointer">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6547">Gets the pointer value and its type name of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="208"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6557">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6549">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6550">the pointer value</doc>
            <type name="gpointer" c:type="gconstpointer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_property" c:identifier="wp_spa_pod_get_property">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6834">Gets the name, flags and spa pod value of a spa pod property.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="273"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6845">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6836">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="key"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6837">the name of the property</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6838">the spa pod value of the property</doc>
            <type name="SpaPod" c:type="WpSpaPod**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_rectangle" c:identifier="wp_spa_pod_get_rectangle">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6575">Gets the rectangle's width and height value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="214"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6586">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6577">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="width"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6578">the rectangle's width value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
          <parameter name="height"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6579">the rectangle's height value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_spa_pod" c:identifier="wp_spa_pod_get_spa_pod">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5837">Converts a WpSpaPod pointer to a struct spa_pod one, for use with native pipewire &amp; spa functions. The returned pointer is owned by WpSpaPod and may not be modified or freed.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="45"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5846">a const pointer to the underlying spa_pod structure</doc>
          <type name="gpointer" c:type="const spa_pod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5839">a spa pod object</doc>
            <type name="SpaPod" c:type="const WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_spa_type" c:identifier="wp_spa_pod_get_spa_type">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5850">Gets the SPA type of the spa pod.


If the pod is an object or pointer, this will return the derived object/pointer type directly. If the pod is an object property or a control, this will return the type of the contained value.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="48"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5860">the type of the spa pod</doc>
          <type name="SpaType" c:type="WpSpaType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5852">a spa pod</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_string" c:identifier="wp_spa_pod_get_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6518">Gets the string value of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="201"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6528">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6520">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6521">the string value</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_struct"
              c:identifier="wp_spa_pod_get_struct"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6806">Gets the struct's values of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="267"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6816">TRUE if the struct values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6808">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="..."
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6809">the list of the struct values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_struct_valist"
              c:identifier="wp_spa_pod_get_struct_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6820">This is the va_list version of wp_spa_pod_get_struct()</doc>
        <source-position filename="lib/wp/spa-pod.h" line="270"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6830">TRUE if the struct values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6822">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="args"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6823">the variable arguments passed to wp_spa_pod_get_struct()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_array" c:identifier="wp_spa_pod_is_array">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6343">Checks whether the spa pod is of type array or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="162"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6352">TRUE if it is of type array, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6345">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_boolean" c:identifier="wp_spa_pod_is_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6187">Checks whether the spa pod is of type boolean or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="126"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6196">TRUE if it is of type boolean, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6189">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_bytes" c:identifier="wp_spa_pod_is_bytes">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6278">Checks whether the spa pod is of type bytes or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="147"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6287">TRUE if it is of type bytes, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6280">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_choice" c:identifier="wp_spa_pod_is_choice">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6356">Checks whether the spa pod is of type choice or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="165"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6365">TRUE if it is of type choice, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6358">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_control" c:identifier="wp_spa_pod_is_control">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6421">Checks whether the spa pod is of type control or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="180"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6430">TRUE if it is of type control, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6423">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_double" c:identifier="wp_spa_pod_is_double">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6252">Checks whether the spa pod is of type double or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="141"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6261">TRUE if it is of type double, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6254">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_fd" c:identifier="wp_spa_pod_is_fd">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6304">Checks whether the spa pod is of type Fd or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="153"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6313">TRUE if it is of type Fd, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6306">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_float" c:identifier="wp_spa_pod_is_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6239">Checks whether the spa pod is of type float or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="138"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6248">TRUE if it is of type float, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6241">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_fraction" c:identifier="wp_spa_pod_is_fraction">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6330">Checks whether the spa pod is of type fraction or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="159"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6339">TRUE if it is of type fraction, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6332">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_id" c:identifier="wp_spa_pod_is_id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6200">Checks whether the spa pod is of type Id or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6209">TRUE if it is of type Id, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6202">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_int" c:identifier="wp_spa_pod_is_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6213">Checks whether the spa pod is of type int or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="132"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6222">TRUE if it is of type int, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6215">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_long" c:identifier="wp_spa_pod_is_long">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6226">Checks whether the spa pod is of type long or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6235">TRUE if it is of type long, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6228">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_none" c:identifier="wp_spa_pod_is_none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6174">Checks whether the spa pod is of type none or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6183">TRUE if it is of type none, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6176">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_object" c:identifier="wp_spa_pod_is_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6369">Checks whether the spa pod is of type object or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="168"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6378">TRUE if it is of type object, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6371">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_pointer" c:identifier="wp_spa_pod_is_pointer">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6291">Checks whether the spa pod is of type pointer or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="150"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6300">TRUE if it is of type pointer, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6293">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_property" c:identifier="wp_spa_pod_is_property">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6408">Checks whether the spa pod is of type property or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="177"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6417">TRUE if it is of type property, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6410">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_rectangle" c:identifier="wp_spa_pod_is_rectangle">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6317">Checks whether the spa pod is of type rectangle or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="156"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6326">TRUE if it is of type rectangle, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6319">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_sequence" c:identifier="wp_spa_pod_is_sequence">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6395">Checks whether the spa pod is of type sequence or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="174"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6404">TRUE if it is of type sequence, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6397">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_string" c:identifier="wp_spa_pod_is_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6265">Checks whether the spa pod is of type string or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6274">TRUE if it is of type string, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6267">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_struct" c:identifier="wp_spa_pod_is_struct">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6382">Checks whether the spa pod is of type struct or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="171"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6391">TRUE if it is of type struct, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6384">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_unique_owner" c:identifier="wp_spa_pod_is_unique_owner">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5890">Checks if the pod is the unique owner of its data or not.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5899">TRUE if the pod owns the data, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5892">a spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="new_iterator" c:identifier="wp_spa_pod_new_iterator">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7532">Creates a new iterator for a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="287"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7541">the new spa pod iterator</doc>
          <type name="Iterator" c:type="WpIterator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="pod" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7534">a spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_spa_pod_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5786">Increases the reference count of a spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="33"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="5795">@self with an additional reference count on it</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5788">a spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_boolean" c:identifier="wp_spa_pod_set_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6605">Sets a boolean value in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="221"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6615">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6607">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6608">the boolean value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_double" c:identifier="wp_spa_pod_set_double">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6675">Sets a double value in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="236"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6685">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6677">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6678">the double value</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_fd" c:identifier="wp_spa_pod_set_fd">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6704">Sets a Fd value in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="243"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6714">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6706">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6707">the Fd value</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_float" c:identifier="wp_spa_pod_set_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6661">Sets a float value in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="233"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6671">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6663">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6664">the float value</doc>
            <type name="gfloat" c:type="float"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_fraction" c:identifier="wp_spa_pod_set_fraction">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6733">Sets the numerator and denominator values of a fraction in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="250"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6744">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6735">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="num" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6736">the numerator value of the fraction</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="denom" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6737">the denominator value of the fraction</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_id" c:identifier="wp_spa_pod_set_id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6619">Sets an Id value in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="224"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6629">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6621">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6622">the Id value</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_int" c:identifier="wp_spa_pod_set_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6633">Sets an int value in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="227"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6643">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6635">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6636">the int value</doc>
            <type name="gint32" c:type="gint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_long" c:identifier="wp_spa_pod_set_long">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6647">Sets a long value in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="230"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6657">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6649">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6650">the long value</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pod" c:identifier="wp_spa_pod_set_pod">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6748">Sets the value of a spa pod object in the current spa pod object. The spa pod objects must be of the same value.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="253"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6758">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6750">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="pod" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6751">the pod with the value to be set</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pointer" c:identifier="wp_spa_pod_set_pointer">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6689">Sets a pointer value with its type name in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="239"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6700">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6691">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="type_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6692">the name of the type of the pointer</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6693">the pointer value</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_rectangle" c:identifier="wp_spa_pod_set_rectangle">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6718">Sets the width and height values of a rectangle in the spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="246"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6729">TRUE if the value could be set, FALSE othewrise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6720">the spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6721">the width value of the rectangle</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6722">the height value of the rectangle</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_spa_pod_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="5799">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="36"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="5801">a spa pod object</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="SpaPodBuilder"
            c:type="WpSpaPodBuilder"
            opaque="1"
            glib:type-name="WpSpaPodBuilder"
            glib:get-type="wp_spa_pod_builder_get_type"
            c:symbol-prefix="spa_pod_builder">
      <source-position filename="lib/wp/spa-pod.h" line="306"/>
      <constructor name="new_array"
                   c:identifier="wp_spa_pod_builder_new_array">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6929">Creates a spa pod builder of type array.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="315"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6937">the new spa pod builder</doc>
          <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
        </return-value>
      </constructor>
      <constructor name="new_choice"
                   c:identifier="wp_spa_pod_builder_new_choice">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6941">Creates a spa pod builder of type choice.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="318"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6950">the new spa pod builder</doc>
          <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
        </return-value>
        <parameters>
          <parameter name="choice_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6943">the name of the choice type ("Range", "Step", ...)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_object"
                   c:identifier="wp_spa_pod_builder_new_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6954">Creates a spa pod builder of type object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="321"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6964">the new spa pod builder</doc>
          <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
        </return-value>
        <parameters>
          <parameter name="type_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6956">the type name of the object type</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="id_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6957">the Id name of the object</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_sequence"
                   c:identifier="wp_spa_pod_builder_new_sequence">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6980">Creates a spa pod builder of type sequence.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="328"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6988">the new spa pod builder</doc>
          <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
        </return-value>
        <parameters>
          <parameter name="unit" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_struct"
                   c:identifier="wp_spa_pod_builder_new_struct">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6968">Creates a spa pod builder of type struct.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="325"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6976">the new spa pod builder</doc>
          <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
        </return-value>
      </constructor>
      <method name="add"
              c:identifier="wp_spa_pod_builder_add"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7217">Adds a list of values into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="387"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7219">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7220">a list of additional values, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_boolean" c:identifier="wp_spa_pod_builder_add_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7004">Adds a boolean value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="334"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7006">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7007">the boolean value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_bytes" c:identifier="wp_spa_pod_builder_add_bytes">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7095">Adds a bytes value with its length into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="355"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7097">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7098">the bytes value</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7099">the length of the bytes value</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_control" c:identifier="wp_spa_pod_builder_add_control">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7203">Adds a control into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="383"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7205">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7206">the offset of the control</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="ctl_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7207">the type name of the control</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_double" c:identifier="wp_spa_pod_builder_add_double">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7069">Adds a double value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="349"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7071">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7072">the double value</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_fd" c:identifier="wp_spa_pod_builder_add_fd">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7123">Adds a Fd value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="363"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7125">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7126">the Fd value</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_float" c:identifier="wp_spa_pod_builder_add_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7056">Adds a float value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="346"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7058">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7059">the float value</doc>
            <type name="gfloat" c:type="float"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_fraction"
              c:identifier="wp_spa_pod_builder_add_fraction">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7150">Adds the numerator and denominator values of a fraction into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="370"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7152">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="num" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7153">the numerator value of the fraction</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="denom" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7154">the denominator value of the fraction</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_id" c:identifier="wp_spa_pod_builder_add_id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7017">Adds a Id value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="337"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7019">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7020">the Id value</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_int" c:identifier="wp_spa_pod_builder_add_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7030">Adds a int value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="340"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7032">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7033">the int value</doc>
            <type name="gint32" c:type="gint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_long" c:identifier="wp_spa_pod_builder_add_long">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7043">Adds a long value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="343"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7045">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7046">the long value</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_none" c:identifier="wp_spa_pod_builder_add_none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6992">Adds a none value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="331"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6994">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="add_pod" c:identifier="wp_spa_pod_builder_add_pod">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7164">Adds a pod value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="374"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7166">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="pod" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7167">the pod value</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_pointer" c:identifier="wp_spa_pod_builder_add_pointer">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7109">Adds a pointer value with its type name into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="359"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7111">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="type_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7112">the type name that the pointer points to</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7113">the pointer value</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_property"
              c:identifier="wp_spa_pod_builder_add_property">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7177">Adds a property into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="377"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7179">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7180">the name of the property</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_property_id"
              c:identifier="wp_spa_pod_builder_add_property_id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7190">Adds a property into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="380"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7192">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7193">the id of the property</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_rectangle"
              c:identifier="wp_spa_pod_builder_add_rectangle">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7136">Adds the width and height values of a rectangle into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="366"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7138">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7139">the width value of the rectangle</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7140">the height value of the rectangle</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_string" c:identifier="wp_spa_pod_builder_add_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7082">Adds a string value into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="352"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7084">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7085">the string value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_valist"
              c:identifier="wp_spa_pod_builder_add_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7230">Adds a list of values into the builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="390"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7232">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7233">the variable arguments passed to wp_spa_pod_builder_add()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="end" c:identifier="wp_spa_pod_builder_end">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7243">Ends the builder process and returns the constructed spa pod object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="393"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7252">the constructed spa pod object</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7245">the spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_spa_pod_builder_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6904">Increases the reference count of a spa pod builder.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="309"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="6913">@self with an additional reference count on it</doc>
          <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6906">a spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_spa_pod_builder_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="6917">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="312"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="6919">a spa pod builder object</doc>
            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="SpaPodParser"
            c:type="WpSpaPodParser"
            opaque="1"
            glib:type-name="WpSpaPodParser"
            glib:get-type="wp_spa_pod_parser_get_type"
            c:symbol-prefix="spa_pod_parser">
      <source-position filename="lib/wp/spa-pod.h" line="406"/>
      <constructor name="new_object"
                   c:identifier="wp_spa_pod_parser_new_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7281">Creates an object spa pod parser. The @pod object must be valid for the entire life-cycle of the returned parser.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="415"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7291">The new spa pod parser</doc>
          <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
        </return-value>
        <parameters>
          <parameter name="pod" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7283">the object spa pod to parse</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
          <parameter name="id_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7284">the Id name of the object</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_struct"
                   c:identifier="wp_spa_pod_parser_new_struct">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7295">Creates an struct spa pod parser. The @pod object must be valid for the entire life-cycle of the returned parser.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="419"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7304">The new spa pod parser</doc>
          <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
        </return-value>
        <parameters>
          <parameter name="pod" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7297">the struct spa pod to parse</doc>
            <type name="SpaPod" c:type="WpSpaPod*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="end" c:identifier="wp_spa_pod_parser_end">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7520">Ends the parser process.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="474"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7522">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get"
              c:identifier="wp_spa_pod_parser_get"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7492">Gets a list of values from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="466"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7502">TRUE if the values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7494">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="..."
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7495">a list of values to get, followed by NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_boolean" c:identifier="wp_spa_pod_parser_get_boolean">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7308">Gets the boolean value from a spa pod parser.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="422"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7318">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7310">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7311">the boolean value</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bytes" c:identifier="wp_spa_pod_parser_get_bytes">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7406">Gets the bytes value and its length from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="444"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7417">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7408">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7409">the bytes value</doc>
            <type name="gpointer" c:type="gconstpointer*"/>
          </parameter>
          <parameter name="len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7410">the length of the bytes value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_double" c:identifier="wp_spa_pod_parser_get_double">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7378">Gets the double value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="437"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7388">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7380">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7381">the double value</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_fd" c:identifier="wp_spa_pod_parser_get_fd">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7435">Gets the Fd value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="452"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7445">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7437">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7438">the Fd value</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_float" c:identifier="wp_spa_pod_parser_get_float">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7364">Gets the float value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="434"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7374">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7366">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7367">the float value</doc>
            <type name="gfloat" c:type="float*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_fraction"
              c:identifier="wp_spa_pod_parser_get_fraction">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7464">Gets the fractions's numerator and denominator value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="459"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7475">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7466">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="num"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7467">the fractions's numerator value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
          <parameter name="denom"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7468">the fractions's denominator value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_id" c:identifier="wp_spa_pod_parser_get_id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7322">Gets the Id value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="425"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7332">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7324">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7325">the Id value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_int" c:identifier="wp_spa_pod_parser_get_int">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7336">Gets the int value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="428"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7346">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7338">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7339">the int value</doc>
            <type name="gint32" c:type="gint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_long" c:identifier="wp_spa_pod_parser_get_long">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7350">Gets the long value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="431"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7360">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7352">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7353">the long value</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_pod" c:identifier="wp_spa_pod_parser_get_pod">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7479">Gets the spa pod value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="463"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7488">The spa pod value or NULL if it could not be obtained</doc>
          <type name="SpaPod" c:type="WpSpaPod*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7481">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pointer" c:identifier="wp_spa_pod_parser_get_pointer">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7421">Gets the pointer value and its type name from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="448"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7431">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7423">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7424">the pointer value</doc>
            <type name="gpointer" c:type="gconstpointer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_rectangle"
              c:identifier="wp_spa_pod_parser_get_rectangle">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7449">Gets the rectangle's width and height value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="455"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7460">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7451">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="width"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7452">the rectangle's width value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
          <parameter name="height"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7453">the rectangle's height value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_string" c:identifier="wp_spa_pod_parser_get_string">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7392">Gets the string value from a spa pod parser object.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="440"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7402">TRUE if the value was obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7394">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7395">the string value</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_valist"
              c:identifier="wp_spa_pod_parser_get_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7506">This is the va_list version of wp_spa_pod_parser_get()</doc>
        <source-position filename="lib/wp/spa-pod.h" line="470"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7516">TRUE if the values were obtained, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7508">the spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7509">the variable arguments passed to wp_spa_pod_parser_get()</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="wp_spa_pod_parser_ref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7256">Increases the reference count of a spa pod parser.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="409"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7265">@self with an additional reference count on it</doc>
          <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7258">a spa pod sparser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="wp_spa_pod_parser_unref">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7269">Decreases the reference count on @self and frees it when the ref count reaches zero.</doc>
        <source-position filename="lib/wp/spa-pod.h" line="412"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7271">a spa pod parser object</doc>
            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="SpaType"
           c:symbol-prefix="spa_type"
           glib:type-name="WpSpaType"
           glib:get-type="wp_spa_type_get_type"
           glib:fundamental="1">
      <function name="from_name" c:identifier="wp_spa_type_from_name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7545">Looks up the type id from a given type name.</doc>
        <source-position filename="lib/wp/spa-type.h" line="48"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7554">the corresponding type id or WP_SPA_TYPE_INVALID if not found</doc>
          <type name="SpaType" c:type="WpSpaType"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7547">the name to look up</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_object_id_values_table"
              c:identifier="wp_spa_type_get_object_id_values_table">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7623">Gets the table with the values that can be stored in the special "id" field of an object of the given @type.


Object pods (see WpSpaPod) always have a special "id" field along with other fields that can be defined. This "id" field can only store values of a specific SPA_TYPE_Id type. This function returns the table that contains the possible values for that field.</doc>
        <source-position filename="lib/wp/spa-type.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7633">the table with the values that can be stored in the special "id" field of an object of the given @type</doc>
          <type name="SpaIdTable" c:type="WpSpaIdTable"/>
        </return-value>
        <parameters>
          <instance-parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7625">the type id of an object type</doc>
            <type name="SpaType" c:type="WpSpaType"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_values_table"
              c:identifier="wp_spa_type_get_values_table">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7637">Gets the values table of an SPA type.</doc>
        <source-position filename="lib/wp/spa-type.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7646">the associated WpSpaIdTable that contains possible values or object fields for this type, or NULL</doc>
          <type name="SpaIdTable" c:type="WpSpaIdTable"/>
        </return-value>
        <parameters>
          <instance-parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7639">a type id</doc>
            <type name="SpaType" c:type="WpSpaType"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_fundamental" c:identifier="wp_spa_type_is_fundamental">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7584">Checks if an SPA type is a fundamental type.</doc>
        <source-position filename="lib/wp/spa-type.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7593">TRUE if the @type has no parent, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7586">a type id</doc>
            <type name="SpaType" c:type="WpSpaType"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_id" c:identifier="wp_spa_type_is_id">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7597">Checks if an SPA type is an Id type.</doc>
        <source-position filename="lib/wp/spa-type.h" line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7606">TRUE if the @type is a SPA_TYPE_Id, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7599">a type id</doc>
            <type name="SpaType" c:type="WpSpaType"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_object" c:identifier="wp_spa_type_is_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7610">Checks if an SPA type is an Object type.</doc>
        <source-position filename="lib/wp/spa-type.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7619">TRUE if the @type is a SPA_TYPE_Object, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7612">a type id</doc>
            <type name="SpaType" c:type="WpSpaType"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="name" c:identifier="wp_spa_type_name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7571">Gets the name of an SPA type.</doc>
        <source-position filename="lib/wp/spa-type.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7580">the complete name of the given @type or NULL if @type is invalid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7573">a type id</doc>
            <type name="SpaType" c:type="WpSpaType"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="parent" c:identifier="wp_spa_type_parent">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7558">Gets the parent type of an SPA type.</doc>
        <source-position filename="lib/wp/spa-type.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7567">the direct parent type of the given @type; if the type is fundamental (i.e. has no parent), the returned type is the same as @type</doc>
          <type name="SpaType" c:type="WpSpaType"/>
        </return-value>
        <parameters>
          <instance-parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7560">a type id</doc>
            <type name="SpaType" c:type="WpSpaType"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <class name="State"
           c:symbol-prefix="state"
           c:type="WpState"
           parent="GObject.Object"
           glib:type-name="WpState"
           glib:get-type="wp_state_get_type"
           glib:type-struct="StateClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="554">The WpState class saves and loads properties from a file</doc>
      <source-position filename="lib/wp/state.h" line="25"/>
      <constructor name="new" c:identifier="wp_state_new">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7903">Constructs a new state object.</doc>
        <source-position filename="lib/wp/state.h" line="28"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7912">the new WpState</doc>
          <type name="State" c:type="WpState*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7905">the state name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="clear" c:identifier="wp_state_clear">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7942">Clears the state removing its file.</doc>
        <source-position filename="lib/wp/state.h" line="37"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7944">the state</doc>
            <type name="State" c:type="WpState*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_location" c:identifier="wp_state_get_location">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7929">Gets the location of a state object.</doc>
        <source-position filename="lib/wp/state.h" line="34"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7938">the location of this state</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7931">the state</doc>
            <type name="State" c:type="WpState*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="wp_state_get_name"
              glib:get-property="name">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7916">Gets the name of a state object.</doc>
        <source-position filename="lib/wp/state.h" line="31"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7925">the name of this state</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7918">the state</doc>
            <type name="State" c:type="WpState*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load" c:identifier="wp_state_load">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7987">Loads the state data from the file system.


This function will never fail. If it cannot load the state, for any reason, it will simply return an empty WpProperties, behaving as if there was no previous state stored.</doc>
        <source-position filename="lib/wp/state.h" line="47"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7997">a new WpProperties containing the state data</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7989">the state</doc>
            <type name="State" c:type="WpState*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="save" c:identifier="wp_state_save" throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7954">Saves new properties in the state, overwriting all previous data.</doc>
        <source-position filename="lib/wp/state.h" line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7965">TRUE if the properties could be saved, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7956">the state</doc>
            <type name="State" c:type="WpState*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7957">the properties to save</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_after_timeout"
              c:identifier="wp_state_save_after_timeout"
              version="0.5.0">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7969">Saves new properties in the state, overwriting all previous data, after a timeout.


This is similar to wp_state_save() but it will save the state after a timeout has elapsed. If the state is saved again before the timeout elapses, the timeout is reset.
This function is useful to avoid saving the state too often. When called consecutively, it will save the state only once. Every time it is called, it will cancel the previous timer and start a new one, resulting in timing out only after the last call.</doc>
        <source-position filename="lib/wp/state.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7971">the state</doc>
            <type name="State" c:type="WpState*"/>
          </instance-parameter>
          <parameter name="core" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7972">the core, used to add the timeout callback to the main loop</doc>
            <type name="Core" c:type="WpCore*"/>
          </parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="7973">the properties to save. This object will be referenced and kept alive until the timeout elapses, but not deep copied.</doc>
            <type name="Properties" c:type="WpProperties*"/>
          </parameter>
        </parameters>
      </method>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_name"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="timeout"
                writable="1"
                transfer-ownership="none"
                default-value="1000">
        <type name="guint" c:type="guint"/>
      </property>
    </class>
    <record name="StateClass"
            c:type="WpStateClass"
            glib:is-gtype-struct-for="State">
      <source-position filename="lib/wp/state.h" line="25"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="Transition"
           c:symbol-prefix="transition"
           c:type="WpTransition"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="WpTransition"
           glib:get-type="wp_transition_get_type"
           glib:type-struct="TransitionClass">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="565">A transition is an asynchronous operation, like GTask, that contains an internal state machine, where a series of 'steps' are executed in order to complete the operation.
For every step, _WpTransitionClass::get_next_step() is called in order to determine the next step to execute. Afterwards, _WpTransitionClass::execute_step() is called to perform any actions necessary to complete this step. When execution of the step is done, the operation's code must call wp_transition_advance() in order to continue to the next step. If an error occurs, the operation's code must call wp_transition_return_error() instead, in which case the transition completes immediately and wp_transition_had_error() returns TRUE.
Typically, every step will start an asynchronous operation. Although it is possible, the WpTransition base class does not expect _WpTransitionClass::execute_step() to call wp_transition_advance() directly. Instead, it is expected that wp_transition_advance() will be called from the callback that the step's asynchronous operation will call when it is completed.</doc>
      <source-position filename="lib/wp/transition.h" line="49"/>
      <implements name="Gio.AsyncResult"/>
      <constructor name="new" c:identifier="wp_transition_new">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8001">Creates a WpTransition acting on @source_object.


When the transition is done, @callback will be invoked.
The transition does not automatically start executing steps. You must call wp_transition_advance() after creating it in order to start it.
The transition is automatically unref'ed after the @callback has been executed. If you wish to keep an additional reference on it, you need to ref it explicitly.</doc>
        <source-position filename="lib/wp/transition.h" line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8019">the new transition</doc>
          <type name="Transition" c:type="WpTransition*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8003">the GType of the WpTransition subclass to instantiate</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="source_object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8004">the GObject that owns this task, or NULL</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8005">optional GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8006">a GAsyncReadyCallback</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="callback_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8007">user data passed to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_closure" c:identifier="wp_transition_new_closure">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8023">Creates a WpTransition acting on @source_object. When the transition is done, @closure will be invoked.


The transition does not automatically start executing steps. You must call wp_transition_advance() after creating it in order to start it.
Note that the transition is automatically unref'ed after the @closure has been executed. If you wish to keep an additional reference on it, you need to ref it explicitly.</doc>
        <source-position filename="lib/wp/transition.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8037">the new transition</doc>
          <type name="Transition" c:type="WpTransition*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8025">the GType of the WpTransition subclass to instantiate</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="source_object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8026">the GObject that owns this task, or NULL</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8027">optional GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="closure"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8028">a GAsyncReadyCallback wrapped in a GClosure</doc>
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="finish" c:identifier="wp_transition_finish" throws="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8189">Returns the final return status of the transition and its error, if there was one.


This is meant to be called from within the GAsyncReadyCallback that was specified in wp_transition_new().</doc>
        <source-position filename="lib/wp/transition.h" line="102"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8200">TRUE if the transition completed successfully, FALSE if there was an error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8191">a transition, as a GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="execute_step">
        <source-position filename="lib/wp/transition.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="transition" transfer-ownership="none">
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
          <parameter name="step" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_next_step">
        <source-position filename="lib/wp/transition.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="transition" transfer-ownership="none">
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
          <parameter name="step" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="advance" c:identifier="wp_transition_advance">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8155">Advances the transition to the next step.


This initially calls _WpTransitionClass::get_next_step() in order to determine what the next step is. If _WpTransitionClass::get_next_step() returns a step different than the previous one, it calls _WpTransitionClass::execute_step() to execute it.
The very first time that _WpTransitionClass::get_next_step() is called, its @step parameter equals WP_TRANSITION_STEP_NONE.
When _WpTransitionClass::get_next_step() returns WP_TRANSITION_STEP_NONE this function completes the transition, calling the transition's callback and then unref-ing the transition.
When _WpTransitionClass::get_next_step() returns WP_TRANSITION_STEP_ERROR, this function calls wp_transition_return_error(), unless it has already been called directly by _WpTransitionClass::get_next_step().
In error conditions, _WpTransitionClass::execute_step() is called once with @step being WP_TRANSITION_STEP_ERROR, allowing the implementation to rollback any changes or cancel underlying jobs, if necessary.</doc>
        <source-position filename="lib/wp/transition.h" line="94"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8157">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_completed"
              c:identifier="wp_transition_get_completed"
              glib:get-property="completed">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8129">Checks if the transition completed.</doc>
        <source-position filename="lib/wp/transition.h" line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8138">TRUE if the transition has completed (with or without an error), FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8131">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="wp_transition_get_data">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8099">Gets @self 's data.


See wp_transition_set_data().</doc>
        <source-position filename="lib/wp/transition.h" line="79"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8111">the transition's data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8101">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source_object"
              c:identifier="wp_transition_get_source_object">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8041">Gets the source object from the transition.


Like g_async_result_get_source_object(), but does not ref the object.</doc>
        <source-position filename="lib/wp/transition.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8051">the source object</doc>
          <type name="GObject.Object" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8043">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source_tag"
              c:identifier="wp_transition_get_source_tag">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8069">Gets @self 's source tag.


See wp_transition_set_source_tag().</doc>
        <source-position filename="lib/wp/transition.h" line="71"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8081">the transition's source tag</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8071">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="had_error" c:identifier="wp_transition_had_error">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8142">Checks if the transition completed with an error.</doc>
        <source-position filename="lib/wp/transition.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8151">TRUE if the transition completed with an error, FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8144">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_tagged" c:identifier="wp_transition_is_tagged">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8055">Checks if @self has the given @tag (generally a function pointer indicating the function @self was created by).</doc>
        <source-position filename="lib/wp/transition.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8065">TRUE if @self has the indicated @tag , FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8057">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
          <parameter name="tag"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8058">a tag</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="return_error" c:identifier="wp_transition_return_error">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8172">Completes the transition with an error.


This can be called anytime from within any virtual function or an async job handler.
In most cases this will also unref the transition, so it is not safe to access it after this function has been called.</doc>
        <source-position filename="lib/wp/transition.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8174">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
          <parameter name="error" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8175">a GError</doc>
            <type name="GLib.Error" c:type="GError*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_data" c:identifier="wp_transition_set_data">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8115">Sets @self 's data (freeing the existing data, if any). This can be an arbitrary user structure that holds data associated with this transition.</doc>
        <source-position filename="lib/wp/transition.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8117">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8118">transition-specific user data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="data_destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8119">GDestroyNotify for @data</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_source_tag"
              c:identifier="wp_transition_set_source_tag">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8085">Sets @self 's source tag.


You can use this to tag a transition's return value with a particular pointer (usually a pointer to the function doing the tagging) and then later check it using wp_transition_get_source_tag() (or g_async_result_is_tagged()) in the transition's "finish" function, to figure out if the response came from a particular place.</doc>
        <source-position filename="lib/wp/transition.h" line="74"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8087">the transition</doc>
            <type name="Transition" c:type="WpTransition*"/>
          </instance-parameter>
          <parameter name="tag"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="docs/wp-gtkdoc.h"
                 line="8088">an opaque pointer indicating the source of this transition</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <property name="completed"
                transfer-ownership="none"
                getter="get_completed"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="TransitionClass"
            c:type="WpTransitionClass"
            glib:is-gtype-struct-for="Transition">
      <source-position filename="lib/wp/transition.h" line="49"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_next_step">
        <callback name="get_next_step">
          <source-position filename="lib/wp/transition.h" line="43"/>
          <return-value transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="transition" transfer-ownership="none">
              <type name="Transition" c:type="WpTransition*"/>
            </parameter>
            <parameter name="step" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="execute_step">
        <callback name="execute_step">
          <source-position filename="lib/wp/transition.h" line="45"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="transition" transfer-ownership="none">
              <type name="Transition" c:type="WpTransition*"/>
            </parameter>
            <parameter name="step" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_wp_padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="TransitionStep"
                 glib:type-name="WpTransitionStep"
                 glib:get-type="wp_transition_step_get_type"
                 c:type="WpTransitionStep">
      <member name="none"
              value="0"
              c:identifier="WP_TRANSITION_STEP_NONE"
              glib:nick="none"
              glib:name="WP_TRANSITION_STEP_NONE">
      </member>
      <member name="error"
              value="1"
              c:identifier="WP_TRANSITION_STEP_ERROR"
              glib:nick="error"
              glib:name="WP_TRANSITION_STEP_ERROR">
      </member>
      <member name="custom_start"
              value="16"
              c:identifier="WP_TRANSITION_STEP_CUSTOM_START"
              glib:nick="custom-start"
              glib:name="WP_TRANSITION_STEP_CUSTOM_START">
      </member>
    </enumeration>
    <function name="base_dirs_find_file"
              c:identifier="wp_base_dirs_find_file"
              version="0.5.0">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="578">Searches for @filename in the hierarchy of directories specified by the @flags parameter.


Returns the highest priority file found in the hierarchy of directories specified by the @flags parameter. The @subdir parameter is the name of the subdirectory to search in, inside the specified directories. If @subdir is NULL, the base path of each directory is used.
The @filename parameter is the name of the file to search for. If the file is found, its full path is returned. If the file is not found, NULL is returned. The file is considered found if it is a regular file.
If the @filename is an absolute path, it is tested for existence and returned as is, ignoring the lookup directories in @flags as well as the @subdir parameter.</doc>
      <source-position filename="lib/wp/base-dirs.h" line="80"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="592">A newly allocated string with the absolute, canonicalized file path, or NULL if the file was not found.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="580">flags to specify the directories to look into and other options specific to the kind of file being looked up</doc>
          <type name="BaseDirsFlags" c:type="WpBaseDirsFlags"/>
        </parameter>
        <parameter name="subdir"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="581">the name of the subdirectory to search in, inside the specified directories</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="582">the name of the file to search for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="base_dirs_new_files_iterator"
              c:identifier="wp_base_dirs_new_files_iterator"
              version="0.5.0">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="598">Creates an iterator to iterate over all files that match @suffix within the @subdir of the directories specified in @flags.


The @subdir parameter is the name of the subdirectory to search in, inside the directories specified by @flags. If @subdir is NULL, the base path of each directory is used. If @subdir is an absolute path, files are only looked up in that directory and the directories in @flags are ignored.
The @suffix parameter is the filename suffix to match. If @suffix is NULL, all files are matched.
The iterator will iterate over the absolute paths of all the files files found, in the order of priority of the directories, starting from the lowest priority directory (e.g. /usr/share/wireplumber) and ending with the highest priority directory (e.g. $XDG_CONFIG_HOME/wireplumber). Files within each directory are also sorted by filename.</doc>
      <source-position filename="lib/wp/base-dirs.h" line="84"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="612">a new iterator iterating over strings which are absolute &amp; canonicalized paths to the files found</doc>
        <type name="Iterator" c:type="WpIterator*"/>
      </return-value>
      <parameters>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="600">flags to specify the directories to look into and other options specific to the kind of file being looked up</doc>
          <type name="BaseDirsFlags" c:type="WpBaseDirsFlags"/>
        </parameter>
        <parameter name="subdir"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="601">the name of the subdirectory to search in, inside the configuration directories</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="suffix"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="602">The filename suffix, NULL matches all entries</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function-macro name="critical"
                    c:identifier="wp_critical"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="141"/>
      <parameters>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="critical_boxed"
                    c:identifier="wp_critical_boxed"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="167"/>
      <parameters>
        <parameter name="type">
        </parameter>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="critical_object"
                    c:identifier="wp_critical_object"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="154"/>
      <parameters>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="debug" c:identifier="wp_debug" introspectable="0">
      <source-position filename="lib/wp/log.h" line="149"/>
      <parameters>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="debug_boxed"
                    c:identifier="wp_debug_boxed"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="175"/>
      <parameters>
        <parameter name="type">
        </parameter>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="debug_object"
                    c:identifier="wp_debug_object"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="162"/>
      <parameters>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function name="domain_library_quark"
              c:identifier="wp_domain_library_quark">
      <source-position filename="lib/wp/error.h" line="24"/>
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="get_library_api_version"
              c:identifier="wp_get_library_api_version"
              version="0.4.12">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="8231">Gets the WirePlumber library API version.</doc>
      <source-position filename="lib/wp/wp.h" line="77"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8239">WirePlumber library API version</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="get_library_version"
              c:identifier="wp_get_library_version"
              version="0.4.12">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="8217">Gets the WirePlumber library version.</doc>
      <source-position filename="lib/wp/wp.h" line="74"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="8225">WirePlumber library version</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function-macro name="info" c:identifier="wp_info" introspectable="0">
      <source-position filename="lib/wp/log.h" line="147"/>
      <parameters>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="info_boxed"
                    c:identifier="wp_info_boxed"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="173"/>
      <parameters>
        <parameter name="type">
        </parameter>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="info_object"
                    c:identifier="wp_info_object"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="160"/>
      <parameters>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function name="init" c:identifier="wp_init">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="8204">Initializes WirePlumber and PipeWire underneath.


@flags can modify which parts are initialized, in cases where you want to handle part of this initialization externally.</doc>
      <source-position filename="lib/wp/wp.h" line="71"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="8206">initialization flags</doc>
          <type name="InitFlags" c:type="WpInitFlags"/>
        </parameter>
      </parameters>
    </function>
    <function name="json_utils_match_rules"
              c:identifier="wp_json_utils_match_rules"
              throws="1">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="1958">Matches the given properties against a set of rules described in JSON and calls the given callback to perform actions on a successful match.


The given JSON should be an array of objects, where each object has a "matches" and an "actions" property. The "matches" value should also be an array of objects, where each object is a set of properties to match. Inside such an object, all properties must match to consider a successful match. However, if multiple objects are provided, only one object needs to match.
The "actions" value should be an object where the key is the action name and the value can be any valid JSON. Both the action name and the value are passed as-is on the @callback.</doc>
      <source-position filename="lib/wp/json-utils.h" line="30"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1973">FALSE if an error occurred, TRUE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="json" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1960">a JSON array containing rules in the described format</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </parameter>
        <parameter name="match_props" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1961">the properties to match against the rules</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   scope="call"
                   closure="3">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1962">a function to call for each action on a successful match</doc>
          <type name="RuleMatchCallback" c:type="WpRuleMatchCallback"/>
        </parameter>
        <parameter name="data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1963">data to be passed to @callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="json_utils_match_rules_update_properties"
              c:identifier="wp_json_utils_match_rules_update_properties">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="1977">Matches the given properties against a set of rules described in JSON and updates the properties if the rule actions include the "update-props" action.</doc>
      <source-position filename="lib/wp/json-utils.h" line="34"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="1987">the number of properties that were updated</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="json" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1979">a JSON array containing rules in the format accepted by wp_json_utils_match_rules()</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </parameter>
        <parameter name="props" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1980">the properties to match against the rules and also update, acting on the "update-props" action</doc>
          <type name="Properties" c:type="WpProperties*"/>
        </parameter>
      </parameters>
    </function>
    <function name="json_utils_merge_containers"
              c:identifier="wp_json_utils_merge_containers">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="1991">Merges two JSON containers (objects or arrays) into one.


If both @a and @b are objects, the result will be a new object containing all properties from both @a and @b. If a property exists in both @a and @b, the values are recursively merged. If a property exists in both @a and @b and the property name starts with the "override." prefix in either of those, the value from the key with the prefix is used.
If both @a and @b are arrays, the result will be a new array containing all elements from both @a and @b.
If @a and @b are not of the same type, NULL is returned.</doc>
      <source-position filename="lib/wp/json-utils.h" line="37"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2004">a new JSON container containing the merged contents of @a and @b or NULL if @a and @b are not of the same type</doc>
        <type name="SpaJson" c:type="WpSpaJson*"/>
      </return-value>
      <parameters>
        <parameter name="a" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1993">a JSON container</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </parameter>
        <parameter name="b" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="1994">a JSON container</doc>
          <type name="SpaJson" c:type="WpSpaJson*"/>
        </parameter>
      </parameters>
    </function>
    <function-macro name="local_log_topic_is_enabled"
                    c:identifier="wp_local_log_topic_is_enabled"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="115"/>
      <parameters>
        <parameter name="log_level">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="log" c:identifier="wp_log" introspectable="0">
      <source-position filename="lib/wp/log.h" line="134"/>
      <parameters>
        <parameter name="topic">
        </parameter>
        <parameter name="level">
        </parameter>
        <parameter name="type">
        </parameter>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function name="log_checked"
              c:identifier="wp_log_checked"
              introspectable="0"
              deprecated="1">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="2118">Used internally by the debug logging macros. Avoid using it directly.</doc>
      <doc-deprecated xml:space="preserve">Use wp_logt_checked instead.

This assumes that the arguments are correct and that the log_topic is enabled for the given log_level. No additional checks are performed.</doc-deprecated>
      <source-position filename="lib/wp/log.h" line="123"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="log_topic" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="log_level" transfer-ownership="none">
          <type name="GLib.LogLevelFlags" c:type="GLogLevelFlags"/>
        </parameter>
        <parameter name="file" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="line" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="func" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="object_type" transfer-ownership="none">
          <type name="GType" c:type="GType"/>
        </parameter>
        <parameter name="object"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
        <parameter name="message_format" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="log_init" c:identifier="wp_log_init" introspectable="0">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="2059">private, called from wp_init()</doc>
      <source-position filename="lib/wp/log.h" line="38"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="flags" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="log_set_level" c:identifier="wp_log_set_level">
      <source-position filename="lib/wp/log.h" line="41"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="log_level" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="log_writer_default" c:identifier="wp_log_writer_default">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="2106">WirePlumber's GLogWriterFunc.


This is installed automatically when you call wp_init() with WP_INIT_SET_GLIB_LOG set in the flags</doc>
      <source-position filename="lib/wp/log.h" line="119"/>
      <return-value transfer-ownership="none">
        <type name="GLib.LogWriterOutput" c:type="GLogWriterOutput"/>
      </return-value>
      <parameters>
        <parameter name="log_level" transfer-ownership="none">
          <type name="GLib.LogLevelFlags" c:type="GLogLevelFlags"/>
        </parameter>
        <parameter name="fields" transfer-ownership="none">
          <type name="GLib.LogField" c:type="const GLogField*"/>
        </parameter>
        <parameter name="n_fields" transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="logt_checked"
              c:identifier="wp_logt_checked"
              introspectable="0">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="2132">Used internally by the debug logging macros. Avoid using it directly.


This assumes that the arguments are correct and that the log_topic is enabled for the given log_level. No additional checks are performed.</doc>
      <source-position filename="lib/wp/log.h" line="129"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="topic" transfer-ownership="none">
          <type name="LogTopic" c:type="const WpLogTopic*"/>
        </parameter>
        <parameter name="log_level" transfer-ownership="none">
          <type name="GLib.LogLevelFlags" c:type="GLogLevelFlags"/>
        </parameter>
        <parameter name="file" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="line" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="func" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="object_type" transfer-ownership="none">
          <type name="GType" c:type="GType"/>
        </parameter>
        <parameter name="object"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
        <parameter name="message_format" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function-macro name="notice" c:identifier="wp_notice" introspectable="0">
      <source-position filename="lib/wp/log.h" line="145"/>
      <parameters>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="notice_boxed"
                    c:identifier="wp_notice_boxed"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="171"/>
      <parameters>
        <parameter name="type">
        </parameter>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="notice_object"
                    c:identifier="wp_notice_object"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="158"/>
      <parameters>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function name="spa_dynamic_id_table_register"
              c:identifier="wp_spa_dynamic_id_table_register">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7874">Registers an additional WpSpaIdTable in the spa type system.


This is useful to add custom enumeration types.
Note that both @name and @values must be statically allocated, or otherwise guaranteed to be kept in memory until wp_spa_dynamic_type_deinit() is called. No memory copy is done by this function.</doc>
      <source-position filename="lib/wp/spa-type.h" line="144"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7886">the new table</doc>
        <type name="SpaIdTable" c:type="WpSpaIdTable"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7876">the name of the id table</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="values"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7877">an array of spa_type_info that contains the values of the table</doc>
          <type name="gpointer" c:type="const spa_type_info*"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_dynamic_type_deinit"
              c:identifier="wp_spa_dynamic_type_deinit">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7845">Deinitializes the spa type registry.


You do not need to ever call this, unless you want to free memory at the end of the execution of a test, so that it doesn't show as leaked in the memory profiler.</doc>
      <source-position filename="lib/wp/spa-type.h" line="137"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="spa_dynamic_type_init"
              c:identifier="wp_spa_dynamic_type_init">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7832">Initializes the spa dynamic type registry.


This allows registering new spa types at runtime. The spa type system still works if this function is not called.
Normally called by wp_init() when WP_INIT_SPA_TYPES is passed in its flags.</doc>
      <source-position filename="lib/wp/spa-type.h" line="134"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="spa_dynamic_type_register"
              c:identifier="wp_spa_dynamic_type_register">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7857">Registers an additional type in the spa type system.


This is useful to add a custom pod object type.
Note that both @name and @values must be statically allocated, or otherwise guaranteed to be kept in memory until wp_spa_dynamic_type_deinit() is called. No memory copy is done by this function.</doc>
      <source-position filename="lib/wp/spa-type.h" line="140"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7870">the new type</doc>
        <type name="SpaType" c:type="WpSpaType"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7859">the name of the type</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="parent" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7860">the parent type</doc>
          <type name="SpaType" c:type="WpSpaType"/>
        </parameter>
        <parameter name="values"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7861">an array of spa_type_info that contains the values of the type, used only for Object types</doc>
          <type name="gpointer" c:type="const spa_type_info*"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_table_find_value"
              c:identifier="wp_spa_id_table_find_value">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7678">Finds a value in an SPA Id table.</doc>
      <source-position filename="lib/wp/spa-type.h" line="86"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7688">the WpSpaIdValue associated with @value, or NULL</doc>
        <type name="SpaIdValue" c:type="WpSpaIdValue"/>
      </return-value>
      <parameters>
        <parameter name="table" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7680">the id table</doc>
          <type name="SpaIdTable" c:type="WpSpaIdTable"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7681">a numeric value that is contained in the table</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_table_find_value_from_name"
              c:identifier="wp_spa_id_table_find_value_from_name">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7692">Finds a named value in an SPA Id table.</doc>
      <source-position filename="lib/wp/spa-type.h" line="89"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7702">the WpSpaIdValue associated with @name, or NULL</doc>
        <type name="SpaIdValue" c:type="WpSpaIdValue"/>
      </return-value>
      <parameters>
        <parameter name="table" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7694">the id table</doc>
          <type name="SpaIdTable" c:type="WpSpaIdTable"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7695">the full name of a value that is contained in the table</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_table_find_value_from_short_name"
              c:identifier="wp_spa_id_table_find_value_from_short_name">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7706">Finds a short named value in an SPA Id table.</doc>
      <source-position filename="lib/wp/spa-type.h" line="93"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7716">the WpSpaIdValue associated with @short_name, or NULL</doc>
        <type name="SpaIdValue" c:type="WpSpaIdValue"/>
      </return-value>
      <parameters>
        <parameter name="table" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7708">the id table</doc>
          <type name="SpaIdTable" c:type="WpSpaIdTable"/>
        </parameter>
        <parameter name="short_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7709">the short name of a value that is contained in the table</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_table_from_name"
              c:identifier="wp_spa_id_table_from_name">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7650">Finds a WpSpaIdTable given its name.


This name can either be the full type name of an object type, or the name of an enum (which is (!!) a type). For example, "Spa:Pod:Object:Param:Format" and "Spa:Enum:ParamId" are both valid table names.</doc>
      <source-position filename="lib/wp/spa-type.h" line="80"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7660">the associated table, or NULL</doc>
        <type name="SpaIdTable" c:type="WpSpaIdTable"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7652">the full name of an id table</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_table_get_type"
              c:identifier="wp_spa_id_table_get_type">
      <source-position filename="lib/wp/spa-type.h" line="77"/>
      <return-value transfer-ownership="none">
        <type name="GType" c:type="GType"/>
      </return-value>
    </function>
    <function name="spa_id_table_new_iterator"
              c:identifier="wp_spa_id_table_new_iterator">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7664">This function returns an iterator that allows you to iterate through the values associated with this table.


The items in the iterator are of type WpSpaIdValue.</doc>
      <source-position filename="lib/wp/spa-type.h" line="83"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7674">a WpIterator that iterates over WpSpaIdValue items</doc>
        <type name="Iterator" c:type="WpIterator*"/>
      </return-value>
      <parameters>
        <parameter name="table" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7666">the id table</doc>
          <type name="SpaIdTable" c:type="WpSpaIdTable"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_value_array_get_item_type"
              c:identifier="wp_spa_id_value_array_get_item_type">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7817">If the value type of @id is SPA_TYPE_Array, this function returns the type that is allowed to be contained inside the array.


When the returned type is (or is derived from) SPA_TYPE_Id or SPA_TYPE_Object, @table is set to point to the WpSpaIdTable that contains the possible Id values / object fields.</doc>
      <source-position filename="lib/wp/spa-type.h" line="127"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7828">the type that is allowed in the array, if @id represents an object field that takes an array as value</doc>
        <type name="SpaType" c:type="WpSpaType"/>
      </return-value>
      <parameters>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7819">an id value</doc>
          <type name="SpaIdValue" c:type="WpSpaIdValue"/>
        </parameter>
        <parameter name="table"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7820">the associated WpSpaIdTable</doc>
          <type name="SpaIdTable" c:type="WpSpaIdTable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_value_from_name"
              c:identifier="wp_spa_id_value_from_name">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7720">Looks up an id value (enum, flag or object field) directly from its full name.


For instance, "Spa:Enum:Direction:Input" will resolve to the id value that represents "Input" in the "Spa:Enum:Direction" enum.</doc>
      <source-position filename="lib/wp/spa-type.h" line="105"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7730">the id value for @name, or NULL if no such id value was found</doc>
        <type name="SpaIdValue" c:type="WpSpaIdValue"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7722">the full name of an id value</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_value_from_number"
              c:identifier="wp_spa_id_value_from_number">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7748">Looks up an id value given its container @table_name and its numeric representation, @id.</doc>
      <source-position filename="lib/wp/spa-type.h" line="112"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7758">the id value or NULL if it was not found</doc>
        <type name="SpaIdValue" c:type="WpSpaIdValue"/>
      </return-value>
      <parameters>
        <parameter name="table_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7750">the name of the WpSpaIdTable to look up the value in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7751">the numeric representation of the value to look up</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_value_from_short_name"
              c:identifier="wp_spa_id_value_from_short_name">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7734">Looks up an id value given its container @table_name and its @short_name.</doc>
      <source-position filename="lib/wp/spa-type.h" line="108"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7744">the id value or NULL if it was not found</doc>
        <type name="SpaIdValue" c:type="WpSpaIdValue"/>
      </return-value>
      <parameters>
        <parameter name="table_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7736">the name of the WpSpaIdTable to look up the value in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="short_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7737">the short name of the value to look up</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_value_get_type"
              c:identifier="wp_spa_id_value_get_type">
      <source-position filename="lib/wp/spa-type.h" line="102"/>
      <return-value transfer-ownership="none">
        <type name="GType" c:type="GType"/>
      </return-value>
    </function>
    <function name="spa_id_value_get_value_type"
              c:identifier="wp_spa_id_value_get_value_type">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7801">Returns the value type associated with this WpSpaIdValue.


This information is useful when @id represents an object field, which can take a value of an arbitrary type.
When the returned type is (or is derived from) SPA_TYPE_Id or SPA_TYPE_Object, @table is set to point to the WpSpaIdTable that contains the possible Id values / object fields.</doc>
      <source-position filename="lib/wp/spa-type.h" line="124"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7813">the value type associated with @id</doc>
        <type name="SpaType" c:type="WpSpaType"/>
      </return-value>
      <parameters>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7803">an id value</doc>
          <type name="SpaIdValue" c:type="WpSpaIdValue"/>
        </parameter>
        <parameter name="table"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7804">the associated WpSpaIdTable</doc>
          <type name="SpaIdTable" c:type="WpSpaIdTable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_value_name" c:identifier="wp_spa_id_value_name">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7775">Gets the name of an id value.</doc>
      <source-position filename="lib/wp/spa-type.h" line="118"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7784">the full name of this id value</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7777">an id value</doc>
          <type name="SpaIdValue" c:type="WpSpaIdValue"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_value_number" c:identifier="wp_spa_id_value_number">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7762">Gets the numeric value of an id value.</doc>
      <source-position filename="lib/wp/spa-type.h" line="115"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7771">the numeric representation of this id value</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7764">an id value</doc>
          <type name="SpaIdValue" c:type="WpSpaIdValue"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_id_value_short_name"
              c:identifier="wp_spa_id_value_short_name">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="7788">Gets the short name of an id value.</doc>
      <source-position filename="lib/wp/spa-type.h" line="121"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="7797">the short name of this id value</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="docs/wp-gtkdoc.h"
               line="7790">an id value</doc>
          <type name="SpaIdValue" c:type="WpSpaIdValue"/>
        </parameter>
      </parameters>
    </function>
    <function name="spa_log_get_instance"
              c:identifier="wp_spa_log_get_instance">
      <doc xml:space="preserve"
           filename="docs/wp-gtkdoc.h"
           line="2144">Gets WirePlumber's instance of spa_log</doc>
      <source-position filename="lib/wp/log.h" line="183"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="docs/wp-gtkdoc.h"
             line="2152">WirePlumber's instance of spa_log, which can be used to redirect PipeWire's log messages to the currently installed GLogWriterFunc. This is installed automatically when you call wp_init() with WP_INIT_SET_PW_LOG set in the flags</doc>
        <type name="gpointer" c:type="spa_log*"/>
      </return-value>
    </function>
    <function-macro name="trace" c:identifier="wp_trace" introspectable="0">
      <source-position filename="lib/wp/log.h" line="151"/>
      <parameters>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="trace_boxed"
                    c:identifier="wp_trace_boxed"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="177"/>
      <parameters>
        <parameter name="type">
        </parameter>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="trace_object"
                    c:identifier="wp_trace_object"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="164"/>
      <parameters>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="warning"
                    c:identifier="wp_warning"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="143"/>
      <parameters>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="warning_boxed"
                    c:identifier="wp_warning_boxed"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="169"/>
      <parameters>
        <parameter name="type">
        </parameter>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="warning_object"
                    c:identifier="wp_warning_object"
                    introspectable="0">
      <source-position filename="lib/wp/log.h" line="156"/>
      <parameters>
        <parameter name="object">
        </parameter>
        <parameter name="...">
        </parameter>
      </parameters>
    </function-macro>
  </namespace>
</repository>
