[devdocsgjs/revert-9231215c] Revert "Update for GNOME 41"




commit 52bef32275dddcf38eb035523d54a5c92465e2d8
Author: Andy Holmes <andyholmes gnome org>
Date:   Tue Dec 14 21:22:19 2021 +0000

    Revert "Update for GNOME 41"
    
    This reverts commit 9231215c9041d8416ccd297f00158796eddfe9af

 Dockerfile                                         |    23 +-
 assets/javascripts/gnome_news.json                 |     4 -
 assets/stylesheets/global/_icons.scss              |     6 -
 lib/docs/scrapers/gnome/girs/Wp-0.3.gir            | 14331 ++++
 lib/docs/scrapers/gnome/girs/mutter-8/Cally-8.gir  |  1128 -
 .../scrapers/gnome/girs/mutter-8/Clutter-8.gir     | 72892 -------------------
 .../scrapers/gnome/girs/mutter-8/ClutterX11-8.gir  |   315 -
 lib/docs/scrapers/gnome/girs/mutter-8/Cogl-8.gir   | 13813 ----
 .../scrapers/gnome/girs/mutter-8/CoglPango-8.gir   |   377 -
 lib/docs/scrapers/gnome/girs/mutter-8/Meta-8.gir   | 15958 ----
 10 files changed, 14341 insertions(+), 104506 deletions(-)
---
diff --git a/Dockerfile b/Dockerfile
index 0303e4d8..596630bb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
 # We bump this each release to fetch the latest stable GIRs
-FROM fedora:35 AS fetch
+FROM fedora:34 AS fetch
 
 RUN dnf install -y \
         NetworkManager-libnm-devel cairo-devel cheese-libs-devel \
@@ -16,8 +16,7 @@ RUN dnf install -y \
         libgxps-devel libhandy1-devel libnotify-devel libpeas-devel \
         librsvg2-devel libsecret-devel libzapojit-devel mutter pango-devel \
         polkit-devel poppler-glib-devel rest-devel telepathy-glib-devel \
-        tracker-devel udisks-devel upower-devel vte{,291}-devel \
-        wireplumber-devel && \
+        tracker-devel udisks-devel upower-devel vte{,291}-devel && \
     dnf clean all && \
     rm -rf /var/cache/yum
 
@@ -28,20 +27,20 @@ FROM fedora:33 AS build
 # These are GIRs from the fetch step
 COPY --from=fetch /usr/share/gir-1.0 /usr/share/gir-1.0
 COPY --from=fetch /usr/share/gnome-shell /usr/share/gnome-shell
-COPY --from=fetch /usr/lib64/mutter-9 /usr/lib64/mutter-9
+COPY --from=fetch /usr/lib64/mutter-8 /usr/lib64/mutter-8
 
 # These are extra GIRs we can't install with dnf
 COPY lib/docs/scrapers/gnome/girs/GtkosxApplication-1.0.gir /usr/share/gir-1.0/
 COPY lib/docs/scrapers/gnome/girs/Tracker-2.0.gir /usr/share/gir-1.0/
 COPY lib/docs/scrapers/gnome/girs/TrackerControl-2.0.gir /usr/share/gir-1.0/
 COPY lib/docs/scrapers/gnome/girs/TrackerMiner-2.0.gir /usr/share/gir-1.0/
+COPY lib/docs/scrapers/gnome/girs/Wp-0.3.gir /usr/share/gir-1.0/
 
 COPY lib/docs/scrapers/gnome/girs/mutter-3 /usr/lib64/mutter-3
 COPY lib/docs/scrapers/gnome/girs/mutter-4 /usr/lib64/mutter-4
 COPY lib/docs/scrapers/gnome/girs/mutter-5 /usr/lib64/mutter-5
 COPY lib/docs/scrapers/gnome/girs/mutter-6 /usr/lib64/mutter-6
 COPY lib/docs/scrapers/gnome/girs/mutter-7 /usr/lib64/mutter-7
-COPY lib/docs/scrapers/gnome/girs/mutter-8 /usr/lib64/mutter-8
 
 # Install devdocs dependencies
 RUN dnf install -y glibc-langpack-en
@@ -71,7 +70,6 @@ RUN bundle exec thor gir:generate_all /usr/lib64/mutter-5
 RUN bundle exec thor gir:generate_all /usr/lib64/mutter-6
 RUN bundle exec thor gir:generate_all /usr/lib64/mutter-7
 RUN bundle exec thor gir:generate_all /usr/lib64/mutter-8
-RUN bundle exec thor gir:generate_all /usr/lib64/mutter-9
 
 # Some of the gnome-shell GIRs need extra include paths
 RUN bundle exec thor gir:generate /usr/share/gnome-shell/Gvc-1.0.gir
@@ -84,9 +82,9 @@ RUN bundle exec thor gir:generate /usr/share/gnome-shell/St-1.0.gir --include /u
 # dbus10, dbusglib10, fontconfig20, freetype220, gdkpixdata20, gl10, libxml220,
 #   win3210, xfixes40, xft20, xlib20, xrandr13
 RUN for docset in appindicator301 appstreamglib10 atk10 atspi20 cairo10 \
-        cally10 cally9 camel12 champlain012 cheese30 clutter10 clutter9 \
-        cluttergdk10 cluttergst30 clutterx1110 clutterx119 cogl10 cogl20 cogl9 \
-        coglpango10 coglpango20 coglpango9 dbusmenu04 ebook12 ebookcontacts12 \
+        cally10 cally8 camel12 champlain012 cheese30 clutter10 clutter8 \
+        cluttergdk10 cluttergst30 clutterx1110 clutterx118 cogl10 cogl20 cogl8 \
+        coglpango10 coglpango20 coglpango8 dbusmenu04 ebook12 ebookcontacts12 \
         edataserver12 edataserverui12 evincedocument30 evinceview30 folks06 \
         folksdummy06 folkseds06 folkstelepathy06 gcab10 gck1 gcr3 gcrui3 \
         gda50 gdata00 gdesktopenums30 gdk20 gdk30 gdk40 gdkpixbuf20 gdkx1120 \
@@ -99,18 +97,17 @@ RUN for docset in appindicator301 appstreamglib10 atk10 atspi20 cairo10 \
         gstvideo10 gstvulkan10 gstwebrtc10 gtk20 gtk30 gtk40 gtkchamplain012 \
         gtkclutter10 gtkosxapplication10 gtksource30 gtksource40 gudev10 \
         gupnp10 gupnpdlna20 gupnpdlnagst20 gvc10 gweather30 gxps01 handy1 \
-        ibus10 javascriptcore40 json10 keybinder30 meta9 nm10 notify07 pango10 \
+        ibus10 javascriptcore40 json10 keybinder30 meta8 nm10 notify07 pango10 \
         pangocairo10 pangoft210 pangoxft10 peas10 peasgtk10 polkit10 \
         polkitagent10 poppler018 rest07 restextras07 rsvg20 secret1 shell01 \
         soup24 soupgnome24 st10 telepathyglib012 tracker20 tracker30 \
         trackercontrol20 trackerminer20 upowerglib10 vte00 vte291 webkit240 \
-        webkit2webextension40 wp04 zpj00 \
+        webkit2webextension40 wp03 zpj00 \
         cally3 clutter3 clutterx113 cogl3 coglpango3 meta3 \
         cally4 clutter4 clutterx114 cogl4 coglpango4 meta4 \
         cally5 clutter5 clutterx115 cogl5 coglpango5 meta5 \
         cally6 clutter6 clutterx116 cogl6 coglpango6 meta6 \
-        cally7 clutter7 clutterx117 cogl7 coglpango7 meta7 \
-        cally8 clutter8 clutterx118 cogl8 coglpango8 meta8; \
+        cally7 clutter7 clutterx117 cogl7 coglpango7 meta7; \
       do echo $docset; bundle exec thor docs:generate $docset --force; done
 
 
diff --git a/assets/javascripts/gnome_news.json b/assets/javascripts/gnome_news.json
index febd38fb..70d23dc7 100644
--- a/assets/javascripts/gnome_news.json
+++ b/assets/javascripts/gnome_news.json
@@ -1,8 +1,4 @@
 [
-  [
-    "2021-10-31",
-    "New documentations: <a href='/cally9/'>Cally 9</a> (Mutter version), <a href='/clutter9/'>Clutter 9</a> 
(Mutter version), <a href='/clutterx119/'>ClutterX11 9</a> (Mutter version), <a href='/cogl9/'>Cogl 9</a> 
(Mutter version), <a href='/coglpango9/'>CoglPango 9</a> (Mutter version), <a href='/meta9/'>Mutter 9</a>"
-  ],
   [
     "2021-09-05",
     "New documentations: <a href='/gtksource40/'>GtkSourceView 4</a>"
diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss
index 057d0f91..8d6b9c74 100644
--- a/assets/stylesheets/global/_icons.scss
+++ b/assets/stylesheets/global/_icons.scss
@@ -208,7 +208,6 @@ convert public/icons/docs/{appstream,cairo,champlain,cheese,clutter,evince,evolu
 ._icon-cally6:before,
 ._icon-cally7:before,
 ._icon-cally8:before,
-._icon-cally9:before,
 ._icon-clutter10:before,
 ._icon-clutter3:before,
 ._icon-clutter4:before,
@@ -216,7 +215,6 @@ convert public/icons/docs/{appstream,cairo,champlain,cheese,clutter,evince,evolu
 ._icon-clutter6:before,
 ._icon-clutter7:before,
 ._icon-clutter8:before,
-._icon-clutter9:before,
 ._icon-cluttergdk10:before,
 ._icon-cluttergst20:before,
 ._icon-cluttergst30:before,
@@ -227,7 +225,6 @@ convert public/icons/docs/{appstream,cairo,champlain,cheese,clutter,evince,evolu
 ._icon-clutterx116:before,
 ._icon-clutterx117:before,
 ._icon-clutterx118:before,
-._icon-clutterx119:before,
 ._icon-cogl10:before,
 ._icon-cogl20:before,
 ._icon-cogl3:before,
@@ -236,7 +233,6 @@ convert public/icons/docs/{appstream,cairo,champlain,cheese,clutter,evince,evolu
 ._icon-cogl6:before,
 ._icon-cogl7:before,
 ._icon-cogl8:before,
-._icon-cogl9:before,
 ._icon-coglpango10:before,
 ._icon-coglpango20:before,
 ._icon-coglpango3:before,
@@ -245,7 +241,6 @@ convert public/icons/docs/{appstream,cairo,champlain,cheese,clutter,evince,evolu
 ._icon-coglpango6:before,
 ._icon-coglpango7:before,
 ._icon-coglpango8:before,
-._icon-coglpango9:before,
 ._icon-gtkclutter10:before { @extend %gnome-icons; background-position: -4rem 0; }
 ._icon-evincedocument30:before,
 ._icon-evinceview30:before { @extend %gnome-icons; background-position: -5rem 0; }
@@ -323,7 +318,6 @@ convert public/icons/docs/{appstream,cairo,champlain,cheese,clutter,evince,evolu
 ._icon-meta6:before,
 ._icon-meta7:before,
 ._icon-meta8:before,
-._icon-meta9:before,
 ._icon-notify07:before,
 ._icon-pango10:before,
 ._icon-pangocairo10:before,
diff --git a/lib/docs/scrapers/gnome/girs/Wp-0.3.gir b/lib/docs/scrapers/gnome/girs/Wp-0.3.gir
new file mode 100644
index 00000000..20cb3167
--- /dev/null
+++ b/lib/docs/scrapers/gnome/girs/Wp-0.3.gir
@@ -0,0 +1,14331 @@
+<?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"/>
+  <namespace name="Wp"
+             version="0.3"
+             shared-library="libwireplumber-0.3.so.0"
+             c:identifier-prefixes="Wp"
+             c:symbol-prefixes="wp">
+    <class name="Client"
+           c:symbol-prefix="client"
+           c:type="WpClient"
+           parent="Proxy"
+           glib:type-name="WpClient"
+           glib:get-type="wp_client_get_type"
+           glib:type-struct="ClientClass">
+      <source-position filename="../lib/wp/client.h" line="25"/>
+      <method name="update_permissions"
+              c:identifier="wp_client_update_permissions"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/client.c"
+             line="105">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="28"/>
+        <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="../lib/wp/client.c"
+                 line="107">the client</doc>
+            <type name="Client" c:type="WpClient*"/>
+          </instance-parameter>
+          <parameter name="n_perm" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/client.c"
+                 line="108">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="../lib/wp/client.c"
+                 line="109">@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="../lib/wp/client.c"
+             line="133">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="../lib/wp/client.c"
+                 line="135">the client</doc>
+            <type name="Client" c:type="WpClient*"/>
+          </instance-parameter>
+          <parameter name="n_perm" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/client.c"
+                 line="136">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="../lib/wp/client.c"
+                 line="137">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>
+    </class>
+    <record name="ClientClass"
+            c:type="WpClientClass"
+            glib:is-gtype-struct-for="Client">
+      <source-position filename="../lib/wp/client.h" line="25"/>
+      <field name="parent_class">
+        <type name="ProxyClass" c:type="WpProxyClass"/>
+      </field>
+    </record>
+    <interface name="ConfigParser"
+               c:symbol-prefix="config_parser"
+               c:type="WpConfigParser"
+               glib:type-name="WpConfigParser"
+               glib:get-type="wp_config_parser_get_type"
+               glib:type-struct="ConfigParserInterface">
+      <source-position filename="../lib/wp/configuration.h" line="41"/>
+      <virtual-method name="add_file" invoker="add_file">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="36">Adds the file at @location on the parser and parses all the information
+from it, making it available to the code that needs this configuration</doc>
+        <source-position filename="../lib/wp/configuration.h" line="38"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/configuration.c"
+               line="44">%TRUE on success, %FALSE if an error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="38">the parser</doc>
+            <type name="ConfigParser" c:type="WpConfigParser*"/>
+          </instance-parameter>
+          <parameter name="location" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="39">path to a configuration file</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_matched_data" invoker="get_matched_data">
+        <source-position filename="../lib/wp/configuration.h" line="39"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/configuration.c"
+               line="60">the matched data</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="57">the parser</doc>
+            <type name="ConfigParser" c:type="WpConfigParser*"/>
+          </instance-parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="58">implementation-specific data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="reset" invoker="reset">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="71">Resets the state of the parser</doc>
+        <source-position filename="../lib/wp/configuration.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="../lib/wp/configuration.c"
+                 line="73">the parser</doc>
+            <type name="ConfigParser" c:type="WpConfigParser*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_file" c:identifier="wp_config_parser_add_file">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="36">Adds the file at @location on the parser and parses all the information
+from it, making it available to the code that needs this configuration</doc>
+        <source-position filename="../lib/wp/configuration.h" line="44"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/configuration.c"
+               line="44">%TRUE on success, %FALSE if an error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="38">the parser</doc>
+            <type name="ConfigParser" c:type="WpConfigParser*"/>
+          </instance-parameter>
+          <parameter name="location" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="39">path to a configuration file</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_matched_data"
+              c:identifier="wp_config_parser_get_matched_data">
+        <source-position filename="../lib/wp/configuration.h" line="47"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/configuration.c"
+               line="60">the matched data</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="57">the parser</doc>
+            <type name="ConfigParser" c:type="WpConfigParser*"/>
+          </instance-parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="58">implementation-specific data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset" c:identifier="wp_config_parser_reset">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="71">Resets the state of the parser</doc>
+        <source-position filename="../lib/wp/configuration.h" line="51"/>
+        <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="../lib/wp/configuration.c"
+                 line="73">the parser</doc>
+            <type name="ConfigParser" c:type="WpConfigParser*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="ConfigParserInterface"
+            c:type="WpConfigParserInterface"
+            glib:is-gtype-struct-for="ConfigParser">
+      <source-position filename="../lib/wp/configuration.h" line="41"/>
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="add_file">
+        <callback name="add_file">
+          <source-position filename="../lib/wp/configuration.h" line="38"/>
+          <return-value transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="44">%TRUE on success, %FALSE if an error occurred</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/configuration.c"
+                   line="38">the parser</doc>
+              <type name="ConfigParser" c:type="WpConfigParser*"/>
+            </parameter>
+            <parameter name="location" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/configuration.c"
+                   line="39">path to a configuration file</doc>
+              <type name="utf8" c:type="const gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_matched_data">
+        <callback name="get_matched_data">
+          <source-position filename="../lib/wp/configuration.h" line="39"/>
+          <return-value transfer-ownership="none" nullable="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="60">the matched data</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/configuration.c"
+                   line="57">the parser</doc>
+              <type name="ConfigParser" c:type="WpConfigParser*"/>
+            </parameter>
+            <parameter name="data"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/configuration.c"
+                   line="58">implementation-specific data</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset">
+          <source-position filename="../lib/wp/configuration.h" line="40"/>
+          <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="../lib/wp/configuration.c"
+                   line="73">the parser</doc>
+              <type name="ConfigParser" c:type="WpConfigParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Configuration"
+           c:symbol-prefix="configuration"
+           c:type="WpConfiguration"
+           parent="GObject.Object"
+           glib:type-name="WpConfiguration"
+           glib:get-type="wp_configuration_get_type"
+           glib:type-struct="ConfigurationClass">
+      <source-position filename="../lib/wp/configuration.h" line="62"/>
+      <function name="get_instance"
+                c:identifier="wp_configuration_get_instance">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="115">Retrieves (and creates, the first time) the instance of #WpConfiguration
+that is registered on the specified @core</doc>
+        <source-position filename="../lib/wp/configuration.h" line="66"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/configuration.c"
+               line="122">the @core-specific instance of #WpConfiguration</doc>
+          <type name="Configuration" c:type="WpConfiguration*"/>
+        </return-value>
+        <parameters>
+          <parameter name="core" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="117">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add_extension"
+              c:identifier="wp_configuration_add_extension">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="197">Creates a parser and associates it with the specified filename @extension.
+All configuration files that match this extension will, upon calling
+wp_configuration_reload(), be added to this parser</doc>
+        <source-position filename="../lib/wp/configuration.h" line="75"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/configuration.c"
+               line="207">%TRUE if the extension is new, %FALSE if it was already added
+  or an error occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="199">the configuration</doc>
+            <type name="Configuration" c:type="WpConfiguration*"/>
+          </instance-parameter>
+          <parameter name="extension" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="200">a filename extension</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="parser_type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="201">a type that implements the #WpConfigParser interface</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_path" c:identifier="wp_configuration_add_path">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="142">Adds the specified @path in the list of directories that are being
+searched for configuration files. All files in this directory that
+have a known extension to this #WpConfiguration instance will be parsed
+and made available through their #WpConfigParser</doc>
+        <source-position filename="../lib/wp/configuration.h" line="69"/>
+        <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="../lib/wp/configuration.c"
+                 line="144">the configuration</doc>
+            <type name="Configuration" c:type="WpConfiguration*"/>
+          </instance-parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="145">path to a directory that contains configuration files</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parser" c:identifier="wp_configuration_get_parser">
+        <source-position filename="../lib/wp/configuration.h" line="83"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/configuration.c"
+               line="251">the parser associated with @extension</doc>
+          <type name="ConfigParser" c:type="WpConfigParser*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="247">the configuration</doc>
+            <type name="Configuration" c:type="WpConfiguration*"/>
+          </instance-parameter>
+          <parameter name="extension" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="248">a filename extension that was previously associated with a
+   parser using wp_configuration_add_extension()</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reload" c:identifier="wp_configuration_reload">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="264">Resets the parser associated with @extension and re-adds (and re-parses)
+all the configuration files that have this @extension from all the
+directories that were added with wp_configuration_add_path()</doc>
+        <source-position filename="../lib/wp/configuration.h" line="87"/>
+        <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="../lib/wp/configuration.c"
+                 line="266">the configuration</doc>
+            <type name="Configuration" c:type="WpConfiguration*"/>
+          </instance-parameter>
+          <parameter name="extension" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="267">a filename extension that was previously associated with a
+   parser using wp_configuration_add_extension()</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_extension"
+              c:identifier="wp_configuration_remove_extension">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="225">Removes the association of @extension to a parser and destroys the parser</doc>
+        <source-position filename="../lib/wp/configuration.h" line="79"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/configuration.c"
+               line="233">%TRUE if the extension was indeed removed,
+   %FALSE if it was not added</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="227">the configuration</doc>
+            <type name="Configuration" c:type="WpConfiguration*"/>
+          </instance-parameter>
+          <parameter name="extension" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="228">a filename extension that was previously associated with a
+   parser using wp_configuration_add_extension()</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_path" c:identifier="wp_configuration_remove_path">
+        <doc xml:space="preserve"
+             filename="../lib/wp/configuration.c"
+             line="169">Removes the specified @path from the list of directories that are being
+searched for configuration files</doc>
+        <source-position filename="../lib/wp/configuration.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="../lib/wp/configuration.c"
+                 line="171">the configuration</doc>
+            <type name="Configuration" c:type="WpConfiguration*"/>
+          </instance-parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/configuration.c"
+                 line="172">path to a directory that was previously added with
+   wp_configuration_add_path()</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="ConfigurationClass"
+            c:type="WpConfigurationClass"
+            glib:is-gtype-struct-for="Configuration">
+      <source-position filename="../lib/wp/configuration.h" line="62"/>
+      <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">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="20">invalid constraint type</doc>
+      </member>
+      <member name="pw_global_property"
+              value="1"
+              c:identifier="WP_CONSTRAINT_TYPE_PW_GLOBAL_PROPERTY"
+              glib:nick="pw-global-property">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="21">constraint applies
+  to a PipeWire global property of the object (the ones returned by
+  wp_proxy_get_global_properties())</doc>
+      </member>
+      <member name="pw_property"
+              value="2"
+              c:identifier="WP_CONSTRAINT_TYPE_PW_PROPERTY"
+              glib:nick="pw-property">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="24">constraint applies
+  to a PipeWire property of the object (the ones returned by
+  wp_proxy_get_properties())</doc>
+      </member>
+      <member name="g_property"
+              value="3"
+              c:identifier="WP_CONSTRAINT_TYPE_G_PROPERTY"
+              glib:nick="g-property">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="27">constraint applies to a #GObject
+  property of the object</doc>
+      </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">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="39">`=` the subject's value must equal the
+  constraint's value</doc>
+      </member>
+      <member name="in_list"
+              value="99"
+              c:identifier="WP_CONSTRAINT_VERB_IN_LIST"
+              glib:nick="in-list">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="41">`c` the subject's value must equal at least
+  one of the values in the list given as the constraint's value</doc>
+      </member>
+      <member name="in_range"
+              value="126"
+              c:identifier="WP_CONSTRAINT_VERB_IN_RANGE"
+              glib:nick="in-range">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="43">`~` the subject's value must be a number
+  in the range defined by the constraint's value</doc>
+      </member>
+      <member name="matches"
+              value="35"
+              c:identifier="WP_CONSTRAINT_VERB_MATCHES"
+              glib:nick="matches">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="45">`#` the subject's value must match the
+  pattern specified in the constraint's value</doc>
+      </member>
+      <member name="is_present"
+              value="43"
+              c:identifier="WP_CONSTRAINT_VERB_IS_PRESENT"
+              glib:nick="is-present">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="47">`+` the subject property must exist</doc>
+      </member>
+      <member name="is_absent"
+              value="45"
+              c:identifier="WP_CONSTRAINT_VERB_IS_ABSENT"
+              glib:nick="is-absent">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.h"
+             line="48">`-` the subject property must not exist</doc>
+      </member>
+    </enumeration>
+    <class name="Core"
+           c:symbol-prefix="core"
+           c:type="WpCore"
+           parent="GObject.Object"
+           glib:type-name="WpCore"
+           glib:get-type="wp_core_get_type"
+           glib:type-struct="CoreClass">
+      <source-position filename="../lib/wp/core.h" line="23"/>
+      <constructor name="new" c:identifier="wp_core_new">
+        <source-position filename="../lib/wp/core.h" line="28"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="410">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="../lib/wp/core.c"
+                 line="406">the #GMainContext to use for events</doc>
+            <type name="GLib.MainContext" c:type="GMainContext*"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="full"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/core.c"
+                 line="407">additional properties, which are
+  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="../lib/wp/core.c"
+             line="423">Clones a core with the same context as @self</doc>
+        <source-position filename="../lib/wp/core.h" line="31"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="429">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="../lib/wp/core.c"
+                 line="425">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="../lib/wp/core.c"
+             line="482">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="45"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="489">%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="../lib/wp/core.c"
+                 line="484">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="disconnect" c:identifier="wp_core_disconnect">
+        <doc xml:space="preserve"
+             filename="../lib/wp/core.c"
+             line="520">Disconnects this core from the PipeWire server. This also effectively
+destroys all #WpProxy 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="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="../lib/wp/core.c"
+                 line="522">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">
+        <source-position filename="../lib/wp/core.h" line="34"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="445">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="../lib/wp/core.c"
+                 line="443">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_properties" c:identifier="wp_core_get_properties">
+        <source-position filename="../lib/wp/core.h" line="74"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="651">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="../lib/wp/core.c"
+                 line="649">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">
+        <source-position filename="../lib/wp/core.h" line="37"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="459">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="../lib/wp/core.c"
+                 line="457">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">
+        <source-position filename="../lib/wp/core.h" line="40"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="472">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="../lib/wp/core.c"
+                 line="470">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">
+        <source-position filename="../lib/wp/core.h" line="56"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="556">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="../lib/wp/core.c"
+                 line="554">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">
+        <source-position filename="../lib/wp/core.h" line="65"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="604">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="../lib/wp/core.c"
+                 line="602">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">
+        <source-position filename="../lib/wp/core.h" line="59"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="573">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="../lib/wp/core.c"
+                 line="571">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">
+        <source-position filename="../lib/wp/core.h" line="71"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="635">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="../lib/wp/core.c"
+                 line="633">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">
+        <source-position filename="../lib/wp/core.h" line="62"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="588">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="../lib/wp/core.c"
+                 line="586">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">
+        <source-position filename="../lib/wp/core.h" line="68"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="620">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="../lib/wp/core.c"
+                 line="618">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="idle_add"
+              c:identifier="wp_core_idle_add"
+              shadowed-by="idle_add_closure">
+        <doc xml:space="preserve"
+             filename="../lib/wp/core.c"
+             line="708">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="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="../lib/wp/core.c"
+                 line="710">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="../lib/wp/core.c"
+                 line="711">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="../lib/wp/core.c"
+                 line="712">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="../lib/wp/core.c"
+                 line="713">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="../lib/wp/core.c"
+                 line="714">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"
+              shadows="idle_add">
+        <doc xml:space="preserve"
+             filename="../lib/wp/core.c"
+             line="737">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="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="../lib/wp/core.c"
+                 line="739">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="../lib/wp/core.c"
+                 line="740">the source</doc>
+            <type name="GLib.Source" c:type="GSource**"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/core.c"
+                 line="741">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="../lib/wp/object-manager.c"
+             line="1192">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="108"/>
+        <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="../lib/wp/object-manager.c"
+                 line="1194">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </instance-parameter>
+          <parameter name="om" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="1195">a #WpObjectManager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_connected" c:identifier="wp_core_is_connected">
+        <source-position filename="../lib/wp/core.h" line="51"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="543">%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="../lib/wp/core.c"
+                 line="541">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="sync" c:identifier="wp_core_sync">
+        <doc xml:space="preserve"
+             filename="../lib/wp/core.c"
+             line="828">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="98"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="845">%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="../lib/wp/core.c"
+                 line="830">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="../lib/wp/core.c"
+                 line="831">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="../lib/wp/core.c"
+                 line="832">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="../lib/wp/core.c"
+                 line="833">data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_finish" c:identifier="wp_core_sync_finish" throws="1">
+        <doc xml:space="preserve"
+             filename="../lib/wp/core.c"
+             line="882">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="102"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/core.c"
+               line="891">%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="../lib/wp/core.c"
+                 line="884">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </instance-parameter>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/core.c"
+                 line="885">a #GAsyncResult</doc>
+            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timeout_add"
+              c:identifier="wp_core_timeout_add"
+              shadowed-by="timeout_add_closure">
+        <doc xml:space="preserve"
+             filename="../lib/wp/core.c"
+             line="765">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="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="../lib/wp/core.c"
+                 line="767">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="../lib/wp/core.c"
+                 line="768">the source</doc>
+            <type name="GLib.Source" c:type="GSource**"/>
+          </parameter>
+          <parameter name="timeout_ms" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/core.c"
+                 line="769">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="../lib/wp/core.c"
+                 line="770">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="../lib/wp/core.c"
+                 line="771">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="../lib/wp/core.c"
+                 line="772">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"
+              shadows="timeout_add">
+        <doc xml:space="preserve"
+             filename="../lib/wp/core.c"
+             line="798">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="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="../lib/wp/core.c"
+                 line="800">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="../lib/wp/core.c"
+                 line="801">the source</doc>
+            <type name="GLib.Source" c:type="GSource**"/>
+          </parameter>
+          <parameter name="timeout_ms" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/core.c"
+                 line="802">the timeout in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/core.c"
+                 line="803">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="../lib/wp/core.c"
+             line="677">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="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="../lib/wp/core.c"
+                 line="679">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </instance-parameter>
+          <parameter name="updates" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/core.c"
+                 line="680">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="g-main-context"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="GLib.MainContext"/>
+      </property>
+      <property name="properties"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Properties"/>
+      </property>
+      <property name="pw-context"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gpointer" c:type="gpointer"/>
+      </property>
+      <property name="pw-core" transfer-ownership="none">
+        <type name="gpointer" c:type="gpointer"/>
+      </property>
+      <glib:signal name="connected" when="last">
+        <doc xml:space="preserve"
+             filename="../lib/wp/core.c"
+             line="383">Emitted when the core is successfully connected to the PipeWire server</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="disconnected" when="last">
+        <doc xml:space="preserve"
+             filename="../lib/wp/core.c"
+             line="393">Emitted when the core is disconnected from the PipeWire server</doc>
+        <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="23"/>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <class name="Device"
+           c:symbol-prefix="device"
+           c:type="WpDevice"
+           parent="Proxy"
+           glib:type-name="WpDevice"
+           glib:get-type="wp_device_get_type"
+           glib:type-struct="DeviceClass">
+      <source-position filename="../lib/wp/device.h" line="25"/>
+      <constructor name="new_from_factory"
+                   c:identifier="wp_device_new_from_factory">
+        <doc xml:space="preserve"
+             filename="../lib/wp/device.c"
+             line="170">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_proxy_augment(), 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 augment operation
+will fail.</doc>
+        <source-position filename="../lib/wp/device.h" line="28"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/device.c"
+               line="186">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="../lib/wp/device.c"
+                 line="172">the wireplumber core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+          <parameter name="factory_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/device.c"
+                 line="173">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="../lib/wp/device.c"
+                 line="174">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="25"/>
+      <field name="parent_class">
+        <type name="ProxyClass" c:type="WpProxyClass"/>
+      </field>
+    </record>
+    <enumeration name="Direction"
+                 glib:type-name="WpDirection"
+                 glib:get-type="wp_direction_get_type"
+                 c:type="WpDirection">
+      <doc xml:space="preserve"
+           filename="../lib/wp/port.h"
+           line="16">The different directions the endpoint can have</doc>
+      <member name="input"
+              value="0"
+              c:identifier="WP_DIRECTION_INPUT"
+              glib:nick="input">
+        <doc xml:space="preserve"
+             filename="../lib/wp/port.h"
+             line="18">a sink, consuming input</doc>
+      </member>
+      <member name="output"
+              value="1"
+              c:identifier="WP_DIRECTION_OUTPUT"
+              glib:nick="output">
+        <doc xml:space="preserve"
+             filename="../lib/wp/port.h"
+             line="19">a source, producing output</doc>
+      </member>
+    </enumeration>
+    <constant name="ENDPOINT_FEATURES_STANDARD"
+              value="65544"
+              c:type="WP_ENDPOINT_FEATURES_STANDARD">
+      <doc xml:space="preserve"
+           filename="../lib/wp/endpoint.h"
+           line="33">A constant set of features that contains the standard features that are
+available in the #WpEndpoint class.</doc>
+      <source-position filename="../lib/wp/endpoint.h" line="39"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Endpoint"
+           c:symbol-prefix="endpoint"
+           c:type="WpEndpoint"
+           parent="Proxy"
+           glib:type-name="WpEndpoint"
+           glib:get-type="wp_endpoint_get_type"
+           glib:type-struct="EndpointClass">
+      <source-position filename="../lib/wp/endpoint.h" line="56"/>
+      <method name="create_link" c:identifier="wp_endpoint_create_link">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="540">Creates a #WpEndpointLink between @self and another endpoint, which
+must be specified in @props.
+@props may contain:
+ - `endpoint-link.output.endpoint`: the bound id of the endpoint
+       that is in the %WP_DIRECTION_OUTPUT direction
+ - `endpoint-link.output.stream`: the bound id of the endpoint stream
+       that is in the %WP_DIRECTION_OUTPUT direction
+ - `endpoint-link.input.endpoint`: the bound id of the endpoint
+       that is in the %WP_DIRECTION_INPUT direction
+ - `endpoint-link.input.stream`: the bound id of the endpoint stream
+       that is in the %WP_DIRECTION_INPUT direction
+
+If either stream id are not specified (or set to -1), then the first
+available stream of this endpoint is used for the link.
+
+The id of @self is not necessary to be specified, so only one of
+`endpoint-link.output.endpoint`, `endpoint-link.input.endpoint`
+is actually required.</doc>
+        <source-position filename="../lib/wp/endpoint.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="../lib/wp/endpoint.c"
+                 line="542">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+          <parameter name="props" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="543">the link properties</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction" c:identifier="wp_endpoint_get_direction">
+        <source-position filename="../lib/wp/endpoint.h" line="65"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint.c"
+               line="396">the direction of this endpoint</doc>
+          <type name="Direction" c:type="WpDirection"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="394">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_media_class"
+              c:identifier="wp_endpoint_get_media_class">
+        <source-position filename="../lib/wp/endpoint.h" line="62"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint.c"
+               line="379">the media class of the endpoint (ex. "Audio/Sink")</doc>
+          <type name="utf8" c:type="const gchar*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="377">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_n_streams" c:identifier="wp_endpoint_get_n_streams">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="409">Requires %WP_ENDPOINT_FEATURE_STREAMS</doc>
+        <source-position filename="../lib/wp/endpoint.h" line="68"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint.c"
+               line="415">the number of streams of this endpoint</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="411">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_name" c:identifier="wp_endpoint_get_name">
+        <source-position filename="../lib/wp/endpoint.h" line="59"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint.c"
+               line="362">the name of the endpoint</doc>
+          <type name="utf8" c:type="const gchar*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="360">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate_streams"
+              c:identifier="wp_endpoint_iterate_streams">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="428">Requires %WP_ENDPOINT_FEATURE_STREAMS</doc>
+        <source-position filename="../lib/wp/endpoint.h" line="71"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint.c"
+               line="434">a #WpIterator that iterates over all
+  the endpoint streams that belong to this endpoint</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="430">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate_streams_filtered"
+              c:identifier="wp_endpoint_iterate_streams_filtered"
+              shadowed-by="iterate_streams_filtered_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="448">Requires %WP_ENDPOINT_FEATURE_STREAMS
+
+The constraints specified in the variable arguments must follow the rules
+documented in wp_object_interest_new().</doc>
+        <source-position filename="../lib/wp/endpoint.h" line="74"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint.c"
+               line="458">a #WpIterator that iterates over all
+  the streams that belong to this endpoint and match the constraints</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="450">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="451">a list of constraints, terminated by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_streams_filtered_full"
+              c:identifier="wp_endpoint_iterate_streams_filtered_full"
+              shadows="iterate_streams_filtered">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="472">Requires %WP_ENDPOINT_FEATURE_STREAMS</doc>
+        <source-position filename="../lib/wp/endpoint.h" line="78"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint.c"
+               line="479">a #WpIterator that iterates over all
+  the streams that belong to this endpoint and match the @interest</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="474">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="475">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_stream"
+              c:identifier="wp_endpoint_lookup_stream"
+              shadowed-by="lookup_stream_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="494">Requires %WP_ENDPOINT_FEATURE_STREAMS
+
+The constraints specified in the variable arguments must follow the rules
+documented in wp_object_interest_new().</doc>
+        <source-position filename="../lib/wp/endpoint.h" line="82"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint.c"
+               line="504">the first stream that matches the
+   constraints, or %NULL if there is no such stream</doc>
+          <type name="EndpointStream" c:type="WpEndpointStream*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="496">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="497">a list of constraints, terminated by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_stream_full"
+              c:identifier="wp_endpoint_lookup_stream_full"
+              shadows="lookup_stream">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="518">Requires %WP_ENDPOINT_FEATURE_STREAMS</doc>
+        <source-position filename="../lib/wp/endpoint.h" line="86"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint.c"
+               line="525">the first stream that matches the
+   @interest, or %NULL if there is no such stream</doc>
+          <type name="EndpointStream" c:type="WpEndpointStream*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="520">the endpoint</doc>
+            <type name="Endpoint" c:type="WpEndpoint*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint.c"
+                 line="521">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="direction" transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="348">The direction of the endpoint</doc>
+        <type name="Direction"/>
+      </property>
+      <property name="media-class" transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="339">The media class of the endpoint (ex. "Audio/Sink")</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </property>
+      <property name="name" transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="330">The name of the endpoint</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Proxy" c:type="WpProxy"/>
+      </field>
+      <glib:signal name="streams-changed" when="last">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.c"
+             line="319">Emitted when the endpoints's streams change. This is only emitted
+when %WP_ENDPOINT_FEATURE_STREAMS is enabled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="EndpointClass"
+            c:type="WpEndpointClass"
+            glib:is-gtype-struct-for="Endpoint">
+      <source-position filename="../lib/wp/endpoint.h" line="56"/>
+      <field name="parent_class">
+        <type name="ProxyClass" c:type="WpProxyClass"/>
+      </field>
+    </record>
+    <bitfield name="EndpointFeatures"
+              glib:type-name="WpEndpointFeatures"
+              glib:get-type="wp_endpoint_features_get_type"
+              c:type="WpEndpointFeatures">
+      <doc xml:space="preserve"
+           filename="../lib/wp/endpoint.h"
+           line="21">An extension of #WpProxyFeatures</doc>
+      <member name="streams"
+              value="65536"
+              c:identifier="WP_ENDPOINT_FEATURE_STREAMS"
+              glib:nick="streams">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint.h"
+             line="23">caches information about streams, enabling
+  the use of wp_endpoint_get_n_streams(), wp_endpoint_lookup_stream(),
+  wp_endpoint_iterate_streams() and related methods</doc>
+      </member>
+    </bitfield>
+    <class name="EndpointLink"
+           c:symbol-prefix="endpoint_link"
+           c:type="WpEndpointLink"
+           parent="Proxy"
+           glib:type-name="WpEndpointLink"
+           glib:get-type="wp_endpoint_link_get_type"
+           glib:type-struct="EndpointLinkClass">
+      <source-position filename="../lib/wp/endpoint-link.h" line="43"/>
+      <method name="get_linked_object_ids"
+              c:identifier="wp_endpoint_link_get_linked_object_ids">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint-link.c"
+             line="208">Retrieves the ids of the objects that are linked by this endpoint link
+
+Note: Using this method requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/endpoint-link.h" line="46"/>
+        <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="../lib/wp/endpoint-link.c"
+                 line="210">the endpoint link</doc>
+            <type name="EndpointLink" c:type="WpEndpointLink*"/>
+          </instance-parameter>
+          <parameter name="output_endpoint"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     optional="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="211">the bound id of the output (source)
+   endpoint</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="output_stream"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     optional="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="213">the bound id of the output (source)
+   endpoint's stream</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="input_endpoint"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     optional="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="215">the bound id of the input (sink)
+   endpoint</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="input_stream"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     optional="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="217">the bound id of the input (sink)
+   endpoint's stream</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state" c:identifier="wp_endpoint_link_get_state">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint-link.c"
+             line="244">Retrieves the current state of the link
+
+Note: Using this method requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/endpoint-link.h" line="51"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint-link.c"
+               line="253">the current state of the link</doc>
+          <type name="EndpointLinkState" c:type="WpEndpointLinkState"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="246">the endpoint link</doc>
+            <type name="EndpointLink" c:type="WpEndpointLink*"/>
+          </instance-parameter>
+          <parameter name="error"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     optional="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="247">the error string if the state is
+  %WP_ENDPOINT_LINK_STATE_ERROR</doc>
+            <type name="utf8" c:type="const gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_state"
+              c:identifier="wp_endpoint_link_request_state">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint-link.c"
+             line="268">Requests a state change on the link
+
+Note: Using this method requires %WP_PROXY_FEATURE_PW_PROXY</doc>
+        <source-position filename="../lib/wp/endpoint-link.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="../lib/wp/endpoint-link.c"
+                 line="270">the endpoint link</doc>
+            <type name="EndpointLink" c:type="WpEndpointLink*"/>
+          </instance-parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="271">the desired target state of the link</doc>
+            <type name="EndpointLinkState" c:type="WpEndpointLinkState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="Proxy" c:type="WpProxy"/>
+      </field>
+      <glib:signal name="state-changed" when="last">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint-link.c"
+             line="192">Emitted when an endpoint link changes state</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_state" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="195">the old state of the link</doc>
+            <type name="EndpointLinkState"/>
+          </parameter>
+          <parameter name="new_state" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="196">the new state of the link</doc>
+            <type name="EndpointLinkState"/>
+          </parameter>
+          <parameter name="error"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-link.c"
+                 line="197">the error string if the new state is
+  %WP_ENDPOINT_LINK_STATE_ERROR</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="EndpointLinkClass"
+            c:type="WpEndpointLinkClass"
+            glib:is-gtype-struct-for="EndpointLink">
+      <source-position filename="../lib/wp/endpoint-link.h" line="43"/>
+      <field name="parent_class">
+        <type name="ProxyClass" c:type="WpProxyClass"/>
+      </field>
+    </record>
+    <enumeration name="EndpointLinkState"
+                 glib:type-name="WpEndpointLinkState"
+                 glib:get-type="wp_endpoint_link_state_get_type"
+                 c:type="WpEndpointLinkState">
+      <member name="error"
+              value="-1"
+              c:identifier="WP_ENDPOINT_LINK_STATE_ERROR"
+              glib:nick="error">
+      </member>
+      <member name="preparing"
+              value="0"
+              c:identifier="WP_ENDPOINT_LINK_STATE_PREPARING"
+              glib:nick="preparing">
+      </member>
+      <member name="inactive"
+              value="1"
+              c:identifier="WP_ENDPOINT_LINK_STATE_INACTIVE"
+              glib:nick="inactive">
+      </member>
+      <member name="active"
+              value="2"
+              c:identifier="WP_ENDPOINT_LINK_STATE_ACTIVE"
+              glib:nick="active">
+      </member>
+    </enumeration>
+    <class name="EndpointStream"
+           c:symbol-prefix="endpoint_stream"
+           c:type="WpEndpointStream"
+           parent="Proxy"
+           glib:type-name="WpEndpointStream"
+           glib:get-type="wp_endpoint_stream_get_type"
+           glib:type-struct="EndpointStreamClass">
+      <source-position filename="../lib/wp/endpoint-stream.h" line="30"/>
+      <method name="get_name" c:identifier="wp_endpoint_stream_get_name">
+        <source-position filename="../lib/wp/endpoint-stream.h" line="33"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/endpoint-stream.c"
+               line="221">the name of the endpoint stream</doc>
+          <type name="utf8" c:type="const gchar*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/endpoint-stream.c"
+                 line="219">the endpoint stream</doc>
+            <type name="EndpointStream" c:type="WpEndpointStream*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <property name="name" transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/endpoint-stream.c"
+             line="207">The name of the endpoint stream</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Proxy" c:type="WpProxy"/>
+      </field>
+    </class>
+    <record name="EndpointStreamClass"
+            c:type="WpEndpointStreamClass"
+            glib:is-gtype-struct-for="EndpointStream">
+      <source-position filename="../lib/wp/endpoint-stream.h" line="30"/>
+      <field name="parent_class">
+        <type name="ProxyClass" c:type="WpProxyClass"/>
+      </field>
+    </record>
+    <class name="ImplNode"
+           c:symbol-prefix="impl_node"
+           c:type="WpImplNode"
+           parent="GObject.Object"
+           glib:type-name="WpImplNode"
+           glib:get-type="wp_impl_node_get_type"
+           glib:type-struct="ImplNodeClass">
+      <source-position filename="../lib/wp/node.h" line="132"/>
+      <constructor name="new_from_pw_factory"
+                   c:identifier="wp_impl_node_new_from_pw_factory">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="635">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_proxy_augment() requesting %WP_PROXY_FEATURE_BOUND and
+wait for the operation to complete.</doc>
+        <source-position filename="../lib/wp/node.h" line="138"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="649">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="../lib/wp/node.c"
+                 line="637">the wireplumber core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+          <parameter name="factory_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="638">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="../lib/wp/node.c"
+                 line="639">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">
+        <source-position filename="../lib/wp/node.h" line="135"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="624">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="../lib/wp/node.c"
+                 line="621">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="../lib/wp/node.c"
+                 line="622">an existing pw_impl_node to wrap</doc>
+            <type name="gpointer" c:type="pw_impl_node*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="export" c:identifier="wp_impl_node_export">
+        <source-position filename="../lib/wp/node.h" line="142"/>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="ImplNode" c:type="WpImplNode*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <property name="core"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Core"/>
+      </property>
+      <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="132"/>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <class name="ImplSession"
+           c:symbol-prefix="impl_session"
+           c:type="WpImplSession"
+           parent="Session"
+           glib:type-name="WpImplSession"
+           glib:get-type="wp_impl_session_get_type"
+           glib:type-struct="ImplSessionClass">
+      <source-position filename="../lib/wp/session.h" line="126"/>
+      <constructor name="new" c:identifier="wp_impl_session_new">
+        <source-position filename="../lib/wp/session.h" line="129"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="966">the newly constructed session implementation</doc>
+          <type name="ImplSession" c:type="WpImplSession*"/>
+        </return-value>
+        <parameters>
+          <parameter name="core" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="964">the #WpCore</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_property" c:identifier="wp_impl_session_set_property">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="978">Sets the specified property on the PipeWire properties of the session.
+
+If this property is set before exporting the session, then it is also used
+in the construction process of the session object and appears as a global
+property.</doc>
+        <source-position filename="../lib/wp/session.h" line="132"/>
+        <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="../lib/wp/session.c"
+                 line="980">the session implementation</doc>
+            <type name="ImplSession" c:type="WpImplSession*"/>
+          </instance-parameter>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="981">a property key</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="982">a property value</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_properties"
+              c:identifier="wp_impl_session_update_properties">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="1011">Adds or updates the values of the PipeWire properties of the session
+using the properties in @updates as a source.
+
+If the properties are set before exporting the session, then they are also
+used in the construction process of the session object and appear as
+global properties.</doc>
+        <source-position filename="../lib/wp/session.h" line="136"/>
+        <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="../lib/wp/session.c"
+                 line="1013">the session implementation</doc>
+            <type name="ImplSession" c:type="WpImplSession*"/>
+          </instance-parameter>
+          <parameter name="updates" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="1014">a set of properties to add or update in the session's properties</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="ImplSessionClass"
+            c:type="WpImplSessionClass"
+            glib:is-gtype-struct-for="ImplSession">
+      <source-position filename="../lib/wp/session.h" line="126"/>
+      <field name="parent_class">
+        <type name="SessionClass" c:type="WpSessionClass"/>
+      </field>
+    </record>
+    <bitfield name="InitFlags"
+              glib:type-name="WpInitFlags"
+              glib:get-type="wp_init_flags_get_type"
+              c:type="WpInitFlags">
+      <doc xml:space="preserve"
+           filename="../lib/wp/wp.c"
+           line="18">See wp_init()</doc>
+      <member name="pipewire"
+              value="1"
+              c:identifier="WP_INIT_PIPEWIRE"
+              glib:nick="pipewire">
+        <doc xml:space="preserve"
+             filename="../lib/wp/wp.c"
+             line="20">Initializes libpipewire by calling `pw_init()`</doc>
+      </member>
+      <member name="spa_types"
+              value="2"
+              c:identifier="WP_INIT_SPA_TYPES"
+              glib:nick="spa-types">
+        <doc xml:space="preserve"
+             filename="../lib/wp/wp.c"
+             line="21">Initializes WirePlumber's SPA types integration,
+    required for using #WpSpaPod among other things</doc>
+      </member>
+      <member name="set_pw_log"
+              value="4"
+              c:identifier="WP_INIT_SET_PW_LOG"
+              glib:nick="set-pw-log">
+        <doc xml:space="preserve"
+             filename="../lib/wp/wp.c"
+             line="23">Enables redirecting debug log messages from
+    libpipewire to GLib's logging system, by installing WirePlumber's
+    implementation of `struct spa_log` (see wp_spa_log_get_instance())
+    with `pw_log_set()`</doc>
+      </member>
+      <member name="set_glib_log"
+              value="8"
+              c:identifier="WP_INIT_SET_GLIB_LOG"
+              glib:nick="set-glib-log">
+        <doc xml:space="preserve"
+             filename="../lib/wp/wp.c"
+             line="27">Installs WirePlumber's debug log handler,
+    wp_log_writer_default(), on GLib with g_log_set_writer_func()</doc>
+      </member>
+      <member name="all" value="15" c:identifier="WP_INIT_ALL" glib:nick="all">
+        <doc xml:space="preserve"
+             filename="../lib/wp/wp.c"
+             line="29">Enables all of the above</doc>
+      </member>
+    </bitfield>
+    <record name="Iterator"
+            c:type="WpIterator"
+            glib:type-name="WpIterator"
+            glib:get-type="wp_iterator_get_type"
+            c:symbol-prefix="iterator">
+      <source-position filename="../lib/wp/iterator.h" line="48"/>
+      <constructor name="new_ptr_array"
+                   c:identifier="wp_iterator_new_ptr_array"
+                   introspectable="0">
+        <source-position filename="../lib/wp/iterator.h" line="77"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/iterator.c"
+               line="263">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="../lib/wp/iterator.c"
+                 line="260">the items to iterate over</doc>
+            <array name="GLib.PtrArray" c:type="GPtrArray*">
+              <type name="gpointer" c:type="gpointer"/>
+            </array>
+          </parameter>
+          <parameter name="item_type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/iterator.c"
+                 line="261">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="../lib/wp/iterator.c"
+             line="148">Iterates over all items of the iterator calling a function.</doc>
+        <source-position filename="../lib/wp/iterator.h" line="67"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/iterator.c"
+               line="157">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="../lib/wp/iterator.c"
+                 line="150">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="../lib/wp/iterator.c"
+                 line="151">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="../lib/wp/iterator.c"
+                 line="152">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="../lib/wp/iterator.c"
+                 line="153">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="../lib/wp/iterator.c"
+             line="171">Fold a function over the items of the iterator.</doc>
+        <source-position filename="../lib/wp/iterator.h" line="71"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/iterator.c"
+               line="179">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="../lib/wp/iterator.c"
+                 line="173">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="../lib/wp/iterator.c"
+                 line="174">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="../lib/wp/iterator.c"
+                 line="175">the user data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next" c:identifier="wp_iterator_next">
+        <doc xml:space="preserve"
+             filename="../lib/wp/iterator.c"
+             line="129">Gets the next item of the iterator.</doc>
+        <source-position filename="../lib/wp/iterator.h" line="64"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/iterator.c"
+               line="136">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="../lib/wp/iterator.c"
+                 line="131">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="../lib/wp/iterator.c"
+                 line="132">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">
+        <source-position filename="../lib/wp/iterator.h" line="53"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/iterator.c"
+               line="86">@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="../lib/wp/iterator.c"
+                 line="84">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="../lib/wp/iterator.c"
+             line="114">Resets the iterator so we can iterate again from the beginning.</doc>
+        <source-position filename="../lib/wp/iterator.h" line="61"/>
+        <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="../lib/wp/iterator.c"
+                 line="116">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="../lib/wp/iterator.c"
+             line="101">Decreases the reference count on @self and frees it when the ref count
+reaches zero.</doc>
+        <source-position filename="../lib/wp/iterator.h" line="56"/>
+        <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="../lib/wp/iterator.c"
+                 line="103">an iterator object</doc>
+            <type name="Iterator" c:type="WpIterator*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="IteratorFoldFunc" c:type="WpIteratorFoldFunc">
+      <doc xml:space="preserve"
+           filename="../lib/wp/iterator.h"
+           line="17">A function to be passed to #wp_iterator_fold.</doc>
+      <source-position filename="../lib/wp/iterator.h" line="27"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/iterator.h"
+             line="25">TRUE if the fold should continue, FALSE if it should stop.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="item" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/iterator.h"
+               line="19">the item to fold</doc>
+          <type name="GObject.Value" c:type="const GValue*"/>
+        </parameter>
+        <parameter name="ret" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/iterator.h"
+               line="20">the value collecting the result</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="../lib/wp/iterator.h"
+               line="21">data passed to #wp_iterator_fold</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorForeachFunc" c:type="WpIteratorForeachFunc">
+      <doc xml:space="preserve"
+           filename="../lib/wp/iterator.h"
+           line="30">A function that is called by #wp_iterator_foreach for every element.</doc>
+      <source-position filename="../lib/wp/iterator.h" line="37"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="item" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/iterator.h"
+               line="32">the item</doc>
+          <type name="GObject.Value" c:type="const GValue*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/iterator.h"
+               line="33">the data passed to #wp_iterator_foreach</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="LOG_LEVEL_TRACE" value="1" c:type="WP_LOG_LEVEL_TRACE">
+      <source-position filename="../lib/wp/debug.h" line="17"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="LibraryErrorEnum"
+                 glib:type-name="WpLibraryErrorEnum"
+                 glib:get-type="wp_library_error_enum_get_type"
+                 c:type="WpLibraryErrorEnum">
+      <doc xml:space="preserve"
+           filename="../lib/wp/error.h"
+           line="27">Error codes that can appear in a #GError when the error domain
+is %WP_DOMAIN_LIBRARY</doc>
+      <member name="invariant"
+              value="0"
+              c:identifier="WP_LIBRARY_ERROR_INVARIANT"
+              glib:nick="invariant">
+        <doc xml:space="preserve"
+             filename="../lib/wp/error.h"
+             line="29">an invariant check failed; this most likely
+   indicates a programming error</doc>
+      </member>
+      <member name="invalid_argument"
+              value="1"
+              c:identifier="WP_LIBRARY_ERROR_INVALID_ARGUMENT"
+              glib:nick="invalid-argument">
+        <doc xml:space="preserve"
+             filename="../lib/wp/error.h"
+             line="31">an unexpected/invalid argument was given</doc>
+      </member>
+      <member name="operation_failed"
+              value="2"
+              c:identifier="WP_LIBRARY_ERROR_OPERATION_FAILED"
+              glib:nick="operation-failed">
+        <doc xml:space="preserve"
+             filename="../lib/wp/error.h"
+             line="32">an operation failed</doc>
+      </member>
+    </enumeration>
+    <class name="Link"
+           c:symbol-prefix="link"
+           c:type="WpLink"
+           parent="Proxy"
+           glib:type-name="WpLink"
+           glib:get-type="wp_link_get_type"
+           glib:type-struct="LinkClass">
+      <source-position filename="../lib/wp/link.h" line="23"/>
+      <constructor name="new_from_factory"
+                   c:identifier="wp_link_new_from_factory">
+        <doc xml:space="preserve"
+             filename="../lib/wp/link.c"
+             line="111">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_proxy_augment(), 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 augment operation
+will fail.</doc>
+        <source-position filename="../lib/wp/link.h" line="26"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/link.c"
+               line="127">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="../lib/wp/link.c"
+                 line="113">the wireplumber core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+          <parameter name="factory_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/link.c"
+                 line="114">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="../lib/wp/link.c"
+                 line="115">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="../lib/wp/link.c"
+             line="150">Retrieves the ids of the objects that are linked by this link
+
+Note: Using this method requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/link.h" line="30"/>
+        <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="../lib/wp/link.c"
+                 line="152">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="../lib/wp/link.c"
+                 line="153">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="../lib/wp/link.c"
+                 line="154">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="../lib/wp/link.c"
+                 line="155">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="../lib/wp/link.c"
+                 line="156">the bound id of the input (sink) port</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="LinkClass"
+            c:type="WpLinkClass"
+            glib:is-gtype-struct-for="Link">
+      <source-position filename="../lib/wp/link.h" line="23"/>
+      <field name="parent_class">
+        <type name="ProxyClass" c:type="WpProxyClass"/>
+      </field>
+    </record>
+    <class name="Module"
+           c:symbol-prefix="module"
+           c:type="WpModule"
+           parent="GObject.Object"
+           glib:type-name="WpModule"
+           glib:get-type="wp_module_get_type"
+           glib:type-struct="ModuleClass">
+      <source-position filename="../lib/wp/module.h" line="23"/>
+      <function name="load" c:identifier="wp_module_load" throws="1">
+        <source-position filename="../lib/wp/module.h" line="26"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/module.c"
+               line="157">the loaded module</doc>
+          <type name="Module" c:type="WpModule*"/>
+        </return-value>
+        <parameters>
+          <parameter name="core" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/module.c"
+                 line="150">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+          <parameter name="abi" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/module.c"
+                 line="151">the abi name of the module</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="module_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/module.c"
+                 line="152">the module name</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="../lib/wp/module.c"
+                 line="153">additional properties passed to the
+    module ("a{sv}")</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_core" c:identifier="wp_module_get_core">
+        <source-position filename="../lib/wp/module.h" line="33"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/module.c"
+               line="202">the core on which this module is registered</doc>
+          <type name="Core" c:type="WpCore*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/module.c"
+                 line="200">the module</doc>
+            <type name="Module" c:type="WpModule*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_properties" c:identifier="wp_module_get_properties">
+        <source-position filename="../lib/wp/module.h" line="30"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/module.c"
+               line="189">the properties of the module ("a{sv}")</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/module.c"
+                 line="187">the module</doc>
+            <type name="Module" c:type="WpModule*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="set_destroy_callback"
+              c:identifier="wp_module_set_destroy_callback">
+        <doc xml:space="preserve"
+             filename="../lib/wp/module.c"
+             line="211">Registers a @callback to call when the module object is destroyed</doc>
+        <source-position filename="../lib/wp/module.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="../lib/wp/module.c"
+                 line="213">the module</doc>
+            <type name="Module" c:type="WpModule*"/>
+          </instance-parameter>
+          <parameter name="callback" transfer-ownership="none" scope="async">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/module.c"
+                 line="214">a function to call when the module is destroyed</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/module.c"
+                 line="215">data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="ModuleClass"
+            c:type="WpModuleClass"
+            glib:is-gtype-struct-for="Module">
+      <source-position filename="../lib/wp/module.h" line="23"/>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <constant name="NODE_FEATURES_STANDARD"
+              value="65536"
+              c:type="WP_NODE_FEATURES_STANDARD">
+      <doc xml:space="preserve"
+           filename="../lib/wp/node.h"
+           line="65">A constant set of features that contains the standard features that are
+available in the #WpNode class.</doc>
+      <source-position filename="../lib/wp/node.h" line="71"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Node"
+           c:symbol-prefix="node"
+           c:type="WpNode"
+           parent="Proxy"
+           glib:type-name="WpNode"
+           glib:get-type="wp_node_get_type"
+           glib:type-struct="NodeClass">
+      <source-position filename="../lib/wp/node.h" line="87"/>
+      <constructor name="new_from_factory"
+                   c:identifier="wp_node_new_from_factory">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="278">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_proxy_augment(), 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 augment operation
+will fail.</doc>
+        <source-position filename="../lib/wp/node.h" line="90"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="294">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="../lib/wp/node.c"
+                 line="280">the wireplumber core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+          <parameter name="factory_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="281">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="../lib/wp/node.c"
+                 line="282">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">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="330">Requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/node.h" line="97"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="337">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="../lib/wp/node.c"
+                 line="332">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="../lib/wp/node.c"
+                 line="333">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">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="352">Requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/node.h" line="100"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="359">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="../lib/wp/node.c"
+                 line="354">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="../lib/wp/node.c"
+                 line="355">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="../lib/wp/node.c"
+             line="374">Requires %WP_NODE_FEATURE_PORTS</doc>
+        <source-position filename="../lib/wp/node.h" line="103"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="380">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</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="376">the node</doc>
+            <type name="Node" c:type="WpNode*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_state" c:identifier="wp_node_get_state">
+        <source-position filename="../lib/wp/node.h" line="94"/>
+        <return-value transfer-ownership="none">
+          <type name="NodeState" c:type="WpNodeState"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="Node" c:type="WpNode*"/>
+          </instance-parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="utf8" c:type="const gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_ports" c:identifier="wp_node_iterate_ports">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="397">Requires %WP_NODE_FEATURE_PORTS</doc>
+        <source-position filename="../lib/wp/node.h" line="106"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="403">a #WpIterator that iterates over all
+  the ports that belong to this node</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="399">the node</doc>
+            <type name="Node" c:type="WpNode*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate_ports_filtered"
+              c:identifier="wp_node_iterate_ports_filtered"
+              shadowed-by="iterate_ports_filtered_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="417">Requires %WP_NODE_FEATURE_PORTS
+
+The constraints specified in the variable arguments must follow the rules
+documented in wp_object_interest_new().</doc>
+        <source-position filename="../lib/wp/node.h" line="109"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="427">a #WpIterator that iterates over all
+  the ports that belong to this node and match the constraints</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="419">the node</doc>
+            <type name="Node" c:type="WpNode*"/>
+          </instance-parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="420">a list of constraints, terminated by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_ports_filtered_full"
+              c:identifier="wp_node_iterate_ports_filtered_full"
+              shadows="iterate_ports_filtered">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="441">Requires %WP_NODE_FEATURE_PORTS</doc>
+        <source-position filename="../lib/wp/node.h" line="113"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="448">a #WpIterator that iterates over all
+  the ports that belong to this node and match the @interest</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="443">the node</doc>
+            <type name="Node" c:type="WpNode*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="444">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_port"
+              c:identifier="wp_node_lookup_port"
+              shadowed-by="lookup_port_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="462">Requires %WP_NODE_FEATURE_PORTS
+
+The constraints specified in the variable arguments must follow the rules
+documented in wp_object_interest_new().</doc>
+        <source-position filename="../lib/wp/node.h" line="117"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="472">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="../lib/wp/node.c"
+                 line="464">the node</doc>
+            <type name="Node" c:type="WpNode*"/>
+          </instance-parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="465">a list of constraints, terminated by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_port_full"
+              c:identifier="wp_node_lookup_port_full"
+              shadows="lookup_port">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="486">Requires %WP_NODE_FEATURE_PORTS</doc>
+        <source-position filename="../lib/wp/node.h" line="120"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/node.c"
+               line="493">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="../lib/wp/node.c"
+                 line="488">the node</doc>
+            <type name="Node" c:type="WpNode*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="489">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_command" c:identifier="wp_node_send_command">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="508">Sends a command to a node</doc>
+        <source-position filename="../lib/wp/node.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="../lib/wp/node.c"
+                 line="510">the node</doc>
+            <type name="Node" c:type="WpNode*"/>
+          </instance-parameter>
+          <parameter name="command" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="511">the command</doc>
+            <type name="NodeCommand" c:type="WpNodeCommand"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="Proxy" c:type="WpProxy"/>
+      </field>
+      <glib:signal name="ports-changed" when="last">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="266">Emitted when the node's ports change. This is only emitted
+when %WP_NODE_FEATURE_PORTS is enabled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="state-changed" when="last">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.c"
+             line="252">Emitted when the node changes state. This is only emitted
+when %WP_PROXY_FEATURE_INFO is enabled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_state" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="255">the old state</doc>
+            <type name="NodeState"/>
+          </parameter>
+          <parameter name="new_state" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/node.c"
+                 line="256">the new state</doc>
+            <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="87"/>
+      <field name="parent_class">
+        <type name="ProxyClass" c:type="WpProxyClass"/>
+      </field>
+    </record>
+    <enumeration name="NodeCommand"
+                 glib:type-name="WpNodeCommand"
+                 glib:get-type="wp_node_command_get_type"
+                 c:type="WpNodeCommand">
+      <member name="suspend"
+              value="0"
+              c:identifier="WP_NODE_COMMAND_SUSPEND"
+              glib:nick="suspend">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="39">suspends the node, the device might close</doc>
+      </member>
+      <member name="pause"
+              value="1"
+              c:identifier="WP_NODE_COMMAND_PAUSE"
+              glib:nick="pause">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="40">pauses the node, the device will not close</doc>
+      </member>
+      <member name="start"
+              value="2"
+              c:identifier="WP_NODE_COMMAND_START"
+              glib:nick="start">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="41">starts procesing data</doc>
+      </member>
+      <member name="enable"
+              value="3"
+              c:identifier="WP_NODE_COMMAND_ENABLE"
+              glib:nick="enable">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="42">enables the node</doc>
+      </member>
+      <member name="disable"
+              value="4"
+              c:identifier="WP_NODE_COMMAND_DISABLE"
+              glib:nick="disable">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="43">disables the node</doc>
+      </member>
+    </enumeration>
+    <bitfield name="NodeFeatures"
+              glib:type-name="WpNodeFeatures"
+              glib:get-type="wp_node_features_get_type"
+              c:type="WpNodeFeatures">
+      <doc xml:space="preserve"
+           filename="../lib/wp/node.h"
+           line="53">An extension of #WpProxyFeatures</doc>
+      <member name="ports"
+              value="65536"
+              c:identifier="WP_NODE_FEATURE_PORTS"
+              glib:nick="ports">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="55">caches information about ports, enabling
+  the use of wp_node_get_n_ports(), wp_node_lookup_port(),
+  wp_node_iterate_ports() and related methods</doc>
+      </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">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="23">error state</doc>
+      </member>
+      <member name="creating"
+              value="0"
+              c:identifier="WP_NODE_STATE_CREATING"
+              glib:nick="creating">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="24">the node is being created</doc>
+      </member>
+      <member name="suspended"
+              value="1"
+              c:identifier="WP_NODE_STATE_SUSPENDED"
+              glib:nick="suspended">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="25">the node is suspended, the device might be closed</doc>
+      </member>
+      <member name="idle"
+              value="2"
+              c:identifier="WP_NODE_STATE_IDLE"
+              glib:nick="idle">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="26">the node is running but there is no active port</doc>
+      </member>
+      <member name="running"
+              value="3"
+              c:identifier="WP_NODE_STATE_RUNNING"
+              glib:nick="running">
+        <doc xml:space="preserve"
+             filename="../lib/wp/node.h"
+             line="27">the node is running</doc>
+      </member>
+    </enumeration>
+    <function-macro name="OBJECT_ARGS"
+                    c:identifier="WP_OBJECT_ARGS"
+                    introspectable="0">
+      <source-position filename="../lib/wp/debug.h" line="20"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <constant name="OBJECT_FORMAT"
+              value="&lt;%s:%p&gt;"
+              c:type="WP_OBJECT_FORMAT">
+      <source-position filename="../lib/wp/debug.h" line="19"/>
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <record name="ObjectInterest"
+            c:type="WpObjectInterest"
+            glib:type-name="WpObjectInterest"
+            glib:get-type="wp_object_interest_get_type"
+            c:symbol-prefix="object_interest">
+      <doc xml:space="preserve"
+           filename="../lib/wp/object-interest.c"
+           line="37">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="68"/>
+      <constructor name="new"
+                   c:identifier="wp_object_interest_new"
+                   shadowed-by="new_type"
+                   introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.c"
+             line="50">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
+    - `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 descendands 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):
+|[
+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="71"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-interest.c"
+               line="95">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="../lib/wp/object-interest.c"
+                 line="52">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="../lib/wp/object-interest.c"
+                 line="53">a set of constraints, terminated with %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_type"
+                   c:identifier="wp_object_interest_new_type"
+                   shadows="new">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.c"
+             line="148">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="77"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-interest.c"
+               line="156">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="../lib/wp/object-interest.c"
+                 line="150">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="../lib/wp/object-interest.c"
+             line="108">va_list version of wp_object_interest_new()</doc>
+        <source-position filename="../lib/wp/object-interest.h" line="74"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-interest.c"
+               line="115">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="../lib/wp/object-interest.c"
+                 line="110">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="../lib/wp/object-interest.c"
+                 line="111">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="../lib/wp/object-interest.c"
+             line="168">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:
+|[
+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="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="../lib/wp/object-interest.c"
+                 line="170">the object interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </instance-parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-interest.c"
+                 line="171">the constraint type</doc>
+            <type name="ConstraintType" c:type="WpConstraintType"/>
+          </parameter>
+          <parameter name="subject" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-interest.c"
+                 line="172">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="../lib/wp/object-interest.c"
+                 line="173">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="../lib/wp/object-interest.c"
+                 line="174">the value to check for</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="wp_object_interest_copy">
+        <source-position filename="../lib/wp/object-interest.h" line="85"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-interest.c"
+               line="247">a deep copy of @self</doc>
+          <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-interest.c"
+                 line="245">the object interest to copy</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="wp_object_interest_free">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.c"
+             line="275">Releases @self and all the memory associated with it</doc>
+        <source-position filename="../lib/wp/object-interest.h" line="88"/>
+        <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="../lib/wp/object-interest.c"
+                 line="277">the object interest to free</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="matches" c:identifier="wp_object_interest_matches">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.c"
+             line="658">Checks if the specified @object matches the type and all the constraints
+that are described in @self
+
+Equivalent to `wp_object_interest_matches_full (self,
+G_OBJECT_TYPE (object), object, NULL, NULL)`</doc>
+        <source-position filename="../lib/wp/object-interest.h" line="94"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-interest.c"
+               line="669">%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="../lib/wp/object-interest.c"
+                 line="660">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="../lib/wp/object-interest.c"
+                 line="661">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="../lib/wp/object-interest.c"
+             line="678">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_proxy_get_properties() and
+wp_proxy_get_global_properties() respectively.</doc>
+        <source-position filename="../lib/wp/object-interest.h" line="97"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-interest.c"
+               line="704">%TRUE if the the type matches this interest and the properties
+  match the constraints, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-interest.c"
+                 line="680">the object interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </instance-parameter>
+          <parameter name="object_type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-interest.c"
+                 line="681">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="../lib/wp/object-interest.c"
+                 line="682">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="../lib/wp/object-interest.c"
+                 line="684">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="../lib/wp/object-interest.c"
+                 line="686">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="validate"
+              c:identifier="wp_object_interest_validate"
+              throws="1">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-interest.c"
+             line="296">Validates the interest, ensuring that the interest #GType is a valid
+object and that all the constraints have been expressed properly.</doc>
+        <source-position filename="../lib/wp/object-interest.h" line="91"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-interest.c"
+               line="304">%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="../lib/wp/object-interest.c"
+                 line="298">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">
+      <source-position filename="../lib/wp/object-manager.h" line="26"/>
+      <constructor name="new" c:identifier="wp_object_manager_new">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="197">Constructs a new object manager.</doc>
+        <source-position filename="../lib/wp/object-manager.h" line="29"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-manager.c"
+               line="202">the newly constructed object manager</doc>
+          <type name="ObjectManager" c:type="WpObjectManager*"/>
+        </return-value>
+      </constructor>
+      <method name="add_interest"
+              c:identifier="wp_object_manager_add_interest"
+              shadowed-by="add_interest_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="224">Equivalent to:
+|[
+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="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="../lib/wp/object-manager.c"
+                 line="226">the object manager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </instance-parameter>
+          <parameter name="gtype" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="227">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="../lib/wp/object-manager.c"
+                 line="228">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"
+              shadows="add_interest">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="253">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="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="../lib/wp/object-manager.c"
+                 line="255">the object manager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="256">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_objects"
+              c:identifier="wp_object_manager_get_n_objects">
+        <source-position filename="../lib/wp/object-manager.h" line="55"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-manager.c"
+               line="317">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="../lib/wp/object-manager.c"
+                 line="315">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">
+        <source-position filename="../lib/wp/object-manager.h" line="34"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-manager.c"
+               line="214">%TRUE if the object manager is installed (the
+  WpObjectManager::installed 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="../lib/wp/object-manager.c"
+                 line="212">the object manager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate" c:identifier="wp_object_manager_iterate">
+        <source-position filename="../lib/wp/object-manager.h" line="58"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-manager.c"
+               line="404">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="../lib/wp/object-manager.c"
+                 line="402">the object manager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate_filtered"
+              c:identifier="wp_object_manager_iterate_filtered"
+              shadowed-by="iterate_filtered_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="422">Equivalent to:
+|[
+WpObjectInterest *i = wp_object_interest_new (gtype, ...);
+return wp_object_manager_iterate_filtered_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="61"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-manager.c"
+               line="437">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="../lib/wp/object-manager.c"
+                 line="424">the object manager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </instance-parameter>
+          <parameter name="gtype" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="425">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="../lib/wp/object-manager.c"
+                 line="426">a list of constraints, terminated by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_filtered_full"
+              c:identifier="wp_object_manager_iterate_filtered_full"
+              shadows="iterate_filtered">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="455">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="65"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-manager.c"
+               line="463">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="../lib/wp/object-manager.c"
+                 line="457">the object manager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="458">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup"
+              c:identifier="wp_object_manager_lookup"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="491">Equivalent to:
+|[
+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="69"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-manager.c"
+               line="506">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="../lib/wp/object-manager.c"
+                 line="493">the object manager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </instance-parameter>
+          <parameter name="gtype" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="494">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="../lib/wp/object-manager.c"
+                 line="495">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="../lib/wp/object-manager.c"
+             line="524">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_iterate_filtered() is more suitable.</doc>
+        <source-position filename="../lib/wp/object-manager.h" line="73"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/object-manager.c"
+               line="534">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="../lib/wp/object-manager.c"
+                 line="526">the object manager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="527">the interst</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_proxy_features"
+              c:identifier="wp_object_manager_request_proxy_features">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="280">Requests the object manager to automatically prepare the @wanted_features
+on any managed object that is of the specified @proxy_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="49"/>
+        <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="../lib/wp/object-manager.c"
+                 line="282">the object manager</doc>
+            <type name="ObjectManager" c:type="WpObjectManager*"/>
+          </instance-parameter>
+          <parameter name="proxy_type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="283">the #WpProxy descendant type</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="wanted_features" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="284">the features to enable on this kind of proxy</doc>
+            <type name="ProxyFeatures" c:type="WpProxyFeatures"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="core" transfer-ownership="none">
+        <type name="Core"/>
+      </property>
+      <glib:signal name="installed" when="first">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="183">This is emitted once after the object manager is installed with
+wp_core_install_object_manager(). If there are objects that need
+to be prepared asynchronously internally, emission of this signal is
+delayed until all objects are ready.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="object-added" when="first">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="144">Emitted when an object that matches the interests of this object manager
+is made available.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="147">the managed object that was just added</doc>
+            <type name="GObject.Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-removed" when="first">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="156">Emitted when an object that was previously added on this object manager
+is now being removed (and most likely destroyed). At the time that this
+signal is emitted, the object is still alive.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/object-manager.c"
+                 line="159">the managed object that is being removed</doc>
+            <type name="GObject.Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="objects-changed" when="first">
+        <doc xml:space="preserve"
+             filename="../lib/wp/object-manager.c"
+             line="169">Emitted when one or more objects have been recently added or removed
+from this object manager. This signal is useful to get notified only once
+when multiple changes happen in a short timespan. The receiving callback
+may retrieve the updated list of objects by calling
+wp_object_manager_iterate()</doc>
+        <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="26"/>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <constant name="PROXY_FEATURES_STANDARD"
+              value="7"
+              c:type="WP_PROXY_FEATURES_STANDARD">
+      <doc xml:space="preserve"
+           filename="../lib/wp/proxy.h"
+           line="46">A constant set of features that contains the standard features that are
+available in the #WpProxy class. The standard features are usually all
+enabled at once, even if not requested explicitly. It is a good practice,
+though, to enable only the features that you actually need. This leaves
+room for optimizations in the #WpProxy class.</doc>
+      <source-position filename="../lib/wp/proxy.h" line="55"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Plugin"
+           c:symbol-prefix="plugin"
+           c:type="WpPlugin"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="WpPlugin"
+           glib:get-type="wp_plugin_get_type"
+           glib:type-struct="PluginClass">
+      <doc xml:space="preserve"
+           filename="../lib/wp/plugin.c"
+           line="30">#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 #WpPluginClass.activate() after all modules have been loaded,
+the core is connected and the initial discovery of global objects is
+done.</doc>
+      <source-position filename="../lib/wp/plugin.h" line="36"/>
+      <virtual-method name="activate" invoker="activate">
+        <doc xml:space="preserve"
+             filename="../lib/wp/plugin.c"
+             line="170">Activates the plugin. The plugin is required to start any operations only
+when this method is called and not before.</doc>
+        <source-position filename="../lib/wp/plugin.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="../lib/wp/plugin.c"
+                 line="172">the plugin</doc>
+            <type name="Plugin" c:type="WpPlugin*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="deactivate" invoker="deactivate">
+        <doc xml:space="preserve"
+             filename="../lib/wp/plugin.c"
+             line="186">Deactivates the plugin. The plugin is required to stop all operations and
+release all resources associated with it.</doc>
+        <source-position filename="../lib/wp/plugin.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="../lib/wp/plugin.c"
+                 line="188">the plugin</doc>
+            <type name="Plugin" c:type="WpPlugin*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <method name="activate" c:identifier="wp_plugin_activate">
+        <doc xml:space="preserve"
+             filename="../lib/wp/plugin.c"
+             line="170">Activates the plugin. The plugin is required to start any operations only
+when this method is called and not before.</doc>
+        <source-position filename="../lib/wp/plugin.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="../lib/wp/plugin.c"
+                 line="172">the plugin</doc>
+            <type name="Plugin" c:type="WpPlugin*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="deactivate" c:identifier="wp_plugin_deactivate">
+        <doc xml:space="preserve"
+             filename="../lib/wp/plugin.c"
+             line="186">Deactivates the plugin. The plugin is required to stop all operations and
+release all resources associated with it.</doc>
+        <source-position filename="../lib/wp/plugin.h" line="51"/>
+        <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="../lib/wp/plugin.c"
+                 line="188">the plugin</doc>
+            <type name="Plugin" c:type="WpPlugin*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_core" c:identifier="wp_plugin_get_core">
+        <source-position filename="../lib/wp/plugin.h" line="45"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/plugin.c"
+               line="161">the core associated with this plugin</doc>
+          <type name="Core" c:type="WpCore*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/plugin.c"
+                 line="159">the plugin</doc>
+            <type name="Plugin" c:type="WpPlugin*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_module" c:identifier="wp_plugin_get_module">
+        <source-position filename="../lib/wp/plugin.h" line="42"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/plugin.c"
+               line="146">the module associated with this plugin</doc>
+          <type name="Module" c:type="WpModule*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/plugin.c"
+                 line="144">the plugin</doc>
+            <type name="Plugin" c:type="WpPlugin*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="register" c:identifier="wp_plugin_register">
+        <doc xml:space="preserve"
+             filename="../lib/wp/plugin.c"
+             line="127">Registers the plugin to its associated core, making it available for use</doc>
+        <source-position filename="../lib/wp/plugin.h" line="39"/>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="plugin" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/plugin.c"
+                 line="129">the plugin</doc>
+            <type name="Plugin" c:type="WpPlugin*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <property name="module"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/plugin.c"
+             line="116">The module that created this plugin.
+Implementations should initialize this in the constructor.</doc>
+        <type name="Module"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="PluginClass"
+            c:type="WpPluginClass"
+            glib:is-gtype-struct-for="Plugin">
+      <source-position filename="../lib/wp/plugin.h" line="36"/>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <source-position filename="../lib/wp/plugin.h" line="34"/>
+          <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="../lib/wp/plugin.c"
+                   line="172">the plugin</doc>
+              <type name="Plugin" c:type="WpPlugin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deactivate">
+        <callback name="deactivate">
+          <source-position filename="../lib/wp/plugin.h" line="35"/>
+          <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="../lib/wp/plugin.c"
+                   line="188">the plugin</doc>
+              <type name="Plugin" c:type="WpPlugin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Port"
+           c:symbol-prefix="port"
+           c:type="WpPort"
+           parent="Proxy"
+           glib:type-name="WpPort"
+           glib:get-type="wp_port_get_type"
+           glib:type-struct="PortClass">
+      <source-position filename="../lib/wp/port.h" line="35"/>
+      <method name="get_direction" c:identifier="wp_port_get_direction">
+        <source-position filename="../lib/wp/port.h" line="38"/>
+        <return-value transfer-ownership="none">
+          <type name="Direction" c:type="WpDirection"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <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="35"/>
+      <field name="parent_class">
+        <type name="ProxyClass" c:type="WpProxyClass"/>
+      </field>
+    </record>
+    <record name="Properties"
+            c:type="WpProperties"
+            glib:type-name="WpProperties"
+            glib:get-type="wp_properties_get_type"
+            c:symbol-prefix="properties">
+      <source-position filename="../lib/wp/properties.h" line="30"/>
+      <constructor name="new"
+                   c:identifier="wp_properties_new"
+                   introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/properties.c"
+             line="82">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="../lib/wp/properties.c"
+               line="90">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="../lib/wp/properties.c"
+                 line="84">a property name</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="85">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="../lib/wp/properties.c"
+             line="214">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="51"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="221">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="../lib/wp/properties.c"
+                 line="216">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="../lib/wp/properties.c"
+             line="268">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="57"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="275">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="../lib/wp/properties.c"
+                 line="270">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="../lib/wp/properties.c"
+             line="65">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="../lib/wp/properties.c"
+               line="70">the newly constructed properties set</doc>
+          <type name="Properties" c:type="WpProperties*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_string" c:identifier="wp_properties_new_string">
+        <doc xml:space="preserve"
+             filename="../lib/wp/properties.c"
+             line="130">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="../lib/wp/properties.c"
+               line="138">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="../lib/wp/properties.c"
+                 line="132">a string containing a whitespace separated list of key=value pairs
+   (ex. "key1=value1 key2=value2")</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="../lib/wp/properties.c"
+             line="187">Constructs a new #WpProperties that wraps the given @props structure,
+allowing reading &amp; writing properties on that @props structure through
+the #WpProperties API.
+
+In constrast 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="48"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="198">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="../lib/wp/properties.c"
+                 line="189">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="../lib/wp/properties.c"
+             line="105">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="../lib/wp/properties.c"
+               line="112">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="../lib/wp/properties.c"
+                 line="107">a property name</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="108">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="../lib/wp/properties.c"
+             line="154">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="45"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="171">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="../lib/wp/properties.c"
+                 line="156">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="../lib/wp/properties.c"
+             line="237">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="54"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="252">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="../lib/wp/properties.c"
+                 line="239">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="../lib/wp/properties.c"
+             line="411">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="85"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="421">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="../lib/wp/properties.c"
+                 line="413">a properties object</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="props" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="414">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="../lib/wp/properties.c"
+             line="433">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="88"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="443">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="../lib/wp/properties.c"
+                 line="435">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="../lib/wp/properties.c"
+                 line="436">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="../lib/wp/properties.c"
+             line="547">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="108"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="558">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="../lib/wp/properties.c"
+                 line="549">a properties set</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="props" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="550">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="../lib/wp/properties.c"
+                 line="551">a property to add</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="552">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="../lib/wp/properties.c"
+             line="617">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="116"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="626">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="../lib/wp/properties.c"
+                 line="619">a properties set</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="props" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="620">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="../lib/wp/properties.c"
+                 line="621">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="../lib/wp/properties.c"
+             line="582">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="112"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="593">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="../lib/wp/properties.c"
+                 line="584">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="../lib/wp/properties.c"
+                 line="585">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="../lib/wp/properties.c"
+                 line="586">a property to add</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="587">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="../lib/wp/properties.c"
+             line="291">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="60"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="298">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="../lib/wp/properties.c"
+                 line="293">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="../lib/wp/properties.c"
+             line="341">Ensures that the given properties set is uniquely owned, which means:
+ - 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="71"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="353">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="../lib/wp/properties.c"
+                 line="343">a properties object</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get" c:identifier="wp_properties_get">
+        <source-position filename="../lib/wp/properties.h" line="122"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="645">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="../lib/wp/properties.c"
+                 line="642">a properties object</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="643">a property key</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate" c:identifier="wp_properties_iterate">
+        <source-position filename="../lib/wp/properties.h" line="139"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="799">an iterator that iterates over the properties.
+  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="../lib/wp/properties.c"
+                 line="797">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="../lib/wp/properties.c"
+             line="904">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="162"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="918">%TRUE if all matches were successfull, %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="../lib/wp/properties.c"
+                 line="906">a properties object</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="other" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="907">a set of properties to match</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_dict" c:identifier="wp_properties_peek_dict">
+        <source-position filename="../lib/wp/properties.h" line="150"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="854">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="../lib/wp/properties.c"
+                 line="852">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="65"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="318">@self with an additional reference count on it</doc>
+          <type name="Properties" c:type="WpProperties*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="316">a properties object</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="set" c:identifier="wp_properties_set">
+        <doc xml:space="preserve"
+             filename="../lib/wp/properties.c"
+             line="657">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="125"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="668">%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="../lib/wp/properties.c"
+                 line="659">a properties object</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="660">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="../lib/wp/properties.c"
+                 line="661">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="../lib/wp/properties.c"
+             line="683">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="129"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="694">%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="../lib/wp/properties.c"
+                 line="685">a properties object</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="686">a property key</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="687">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="../lib/wp/properties.c"
+                 line="689">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="../lib/wp/properties.c"
+             line="711">This is the `va_list` version of wp_properties_setf()</doc>
+        <source-position filename="../lib/wp/properties.h" line="133"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="721">%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="../lib/wp/properties.c"
+                 line="713">a properties object</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="714">a property key</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="715">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="../lib/wp/properties.c"
+                 line="717">the variable arguments passed to wp_properties_setf()</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_pw_properties"
+              c:identifier="wp_properties_to_pw_properties">
+        <source-position filename="../lib/wp/properties.h" line="153"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="868">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="../lib/wp/properties.c"
+                 line="866">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="../lib/wp/properties.c"
+             line="327">Decreases the reference count on @self and frees it when the ref count
+reaches zero.</doc>
+        <source-position filename="../lib/wp/properties.h" line="68"/>
+        <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="../lib/wp/properties.c"
+                 line="329">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="../lib/wp/properties.c"
+             line="879">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="156"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="891">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="../lib/wp/properties.c"
+                 line="881">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="../lib/wp/properties.c"
+             line="368">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="76"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="377">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="../lib/wp/properties.c"
+                 line="370">a properties object</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="props" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="371">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="../lib/wp/properties.c"
+             line="389">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="79"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="398">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="../lib/wp/properties.c"
+                 line="391">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="../lib/wp/properties.c"
+                 line="392">a `spa_dict` that contains properties to update</doc>
+            <type name="gpointer" c:type="const spa_dict*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_keys"
+              c:identifier="wp_properties_update_keys"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/properties.c"
+             line="456">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="94"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="468">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="../lib/wp/properties.c"
+                 line="458">a properties set</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="props" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="459">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="../lib/wp/properties.c"
+                 line="460">a property to update</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="461">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="../lib/wp/properties.c"
+             line="524">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="102"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="533">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="../lib/wp/properties.c"
+                 line="526">a properties set</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </instance-parameter>
+          <parameter name="props" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="527">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="../lib/wp/properties.c"
+                 line="528">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="../lib/wp/properties.c"
+             line="490">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="98"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="502">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="../lib/wp/properties.c"
+                 line="492">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="../lib/wp/properties.c"
+                 line="493">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="../lib/wp/properties.c"
+                 line="494">a property to update</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="495">a list of additional properties to update, followed by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <function name="iterator_item_get_key"
+                c:identifier="wp_properties_iterator_item_get_key">
+        <source-position filename="../lib/wp/properties.h" line="142"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="825">the property key of the @item</doc>
+          <type name="utf8" c:type="const gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="822">a #GValue that was returned from the #WpIterator of
+  wp_properties_iterate()</doc>
+            <type name="GObject.Value" c:type="const GValue*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="iterator_item_get_value"
+                c:identifier="wp_properties_iterator_item_get_value">
+        <source-position filename="../lib/wp/properties.h" line="145"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="840">the property value of the @item</doc>
+          <type name="utf8" c:type="const gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/properties.c"
+                 line="837">a #GValue that was returned from the #WpIterator of
+  wp_properties_iterate()</doc>
+            <type name="GObject.Value" c:type="const GValue*"/>
+          </parameter>
+        </parameters>
+      </function>
+    </record>
+    <class name="Props"
+           c:symbol-prefix="props"
+           c:type="WpProps"
+           parent="GObject.Object"
+           glib:type-name="WpProps"
+           glib:get-type="wp_props_get_type"
+           glib:type-struct="PropsClass">
+      <doc xml:space="preserve"
+           filename="../lib/wp/props.c"
+           line="69">#WpProps handles dynamic properties on PipeWire objects, which are
+known in PipeWire as "params" of type `SPA_PARAM_Props`.
+
+#WpProps has two modes of operation:
+ - %WP_PROPS_MODE_CACHE: In this mode, this object caches properties that are
+   actually stored and discovered from the associated proxy object.
+   When setting a property, the property is first set on the proxy and the
+   cache is updated asynchronously (so wp_props_get() will not immediately
+   return the value that was set with wp_props_set()).
+ - %WP_PROPS_MODE_STORE: In this mode, this object is the actual store of
+   properties. This is used by object implementations, such as #WpImplSession.
+   Before storing anything, properties need to be registered with
+   wp_props_register().</doc>
+      <source-position filename="../lib/wp/props.h" line="35"/>
+      <constructor name="new" c:identifier="wp_props_new">
+        <source-position filename="../lib/wp/props.h" line="38"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/props.c"
+               line="199">the newly created #WpProps object</doc>
+          <type name="Props" c:type="WpProps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="195">the mode</doc>
+            <type name="PropsMode" c:type="WpPropsMode"/>
+          </parameter>
+          <parameter name="proxy"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="196">the associated proxy; can be %NULL
+  if @mode is %WP_PROPS_MODE_STORE</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get" c:identifier="wp_props_get">
+        <source-position filename="../lib/wp/props.h" line="54"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/props.c"
+               line="340">a pod with the current value of the
+  property or %NULL if the property is not found</doc>
+          <type name="SpaPod" c:type="WpSpaPod*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="337">the props</doc>
+            <type name="Props" c:type="WpProps*"/>
+          </instance-parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="338">the name (registered spa type nick) of the property to get</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_all" c:identifier="wp_props_get_all">
+        <source-position filename="../lib/wp/props.h" line="51"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/props.c"
+               line="312">a pod object of type `SPA_TYPE_OBJECT_Props`
+  that contains all the properties, as they would appear on the PipeWire
+  object</doc>
+          <type name="SpaPod" c:type="WpSpaPod*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="310">the props</doc>
+            <type name="Props" c:type="WpProps*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate_prop_info"
+              c:identifier="wp_props_iterate_prop_info">
+        <source-position filename="../lib/wp/props.h" line="48"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/props.c"
+               line="283">a #WpIterator that iterates over #WpSpaPod items
+  where each pod is an object of type `SPA_TYPE_OBJECT_PropInfo`, and thus
+  contains the id, the description and the type of each property.</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="281">the props</doc>
+            <type name="Props" c:type="WpProps*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="register" c:identifier="wp_props_register">
+        <doc xml:space="preserve"
+             filename="../lib/wp/props.c"
+             line="207">Registers a new property. This can only be used in %WP_PROPS_MODE_STORE mode.
+
+@name must be a valid spa type nickname, registered in the
+%WP_SPA_TYPE_TABLE_PROPS table.
+
+@pod can be a value (which is taken as the default value) or a choice
+(which defines the allowed values for this property)</doc>
+        <source-position filename="../lib/wp/props.h" line="41"/>
+        <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="../lib/wp/props.c"
+                 line="209">the props</doc>
+            <type name="Props" c:type="WpProps*"/>
+          </instance-parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="210">the name (registered spa type nick) of the property</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="211">the description of the property</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="pod" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="212">a pod that gives the type and the default value</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_from_info"
+              c:identifier="wp_props_register_from_info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/props.c"
+             line="245">Registers a new property using the information of the provided PropInfo @pod</doc>
+        <source-position filename="../lib/wp/props.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="../lib/wp/props.c"
+                 line="247">the props</doc>
+            <type name="Props" c:type="WpProps*"/>
+          </instance-parameter>
+          <parameter name="pod" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="248">a `SPA_TYPE_OBJECT_PropInfo` pod</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set" c:identifier="wp_props_set">
+        <doc xml:space="preserve"
+             filename="../lib/wp/props.c"
+             line="421">Sets the property specified with @name to have the given @value.
+If the mode is %WP_PROPS_MODE_CACHE, this property will be set on the
+associated proxy first and will be updated asynchronously.
+
+If @name is %NULL, then @value must be an object of type
+`SPA_TYPE_OBJECT_Props`, which may contain multiple properties to set.
+
+If any value actually changes, the #WpProps::prop-changed signal will be
+emitted.</doc>
+        <source-position filename="../lib/wp/props.h" line="57"/>
+        <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="../lib/wp/props.c"
+                 line="423">the props</doc>
+            <type name="Props" c:type="WpProps*"/>
+          </instance-parameter>
+          <parameter name="name"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="424">the name (registered spa type nick) of the property to set</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="425">the value to set</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="store" c:identifier="wp_props_store">
+        <doc xml:space="preserve"
+             filename="../lib/wp/props.c"
+             line="458">Stores the given @value for the property specified with @name.
+This method always stores, even if the mode is %WP_PROPS_MODE_CACHE. This is
+useful for caching implementations only.
+
+If @name is %NULL, then @value must be an object of type
+`SPA_TYPE_OBJECT_Props`, which may contain multiple properties to set.
+
+If any value actually changes, the #WpProps::prop-changed signal will be
+emitted.</doc>
+        <source-position filename="../lib/wp/props.h" line="60"/>
+        <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="../lib/wp/props.c"
+                 line="460">the props</doc>
+            <type name="Props" c:type="WpProps*"/>
+          </instance-parameter>
+          <parameter name="name"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="461">the name (registered spa type nick) of the property to set</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="462">the value to set</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="mode"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="PropsMode"/>
+      </property>
+      <property name="proxy"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Proxy"/>
+      </property>
+      <glib:signal name="prop-changed" when="last">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/props.c"
+                 line="164">the name of the property that changed</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="PropsClass"
+            c:type="WpPropsClass"
+            glib:is-gtype-struct-for="Props">
+      <source-position filename="../lib/wp/props.h" line="35"/>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="PropsMode"
+                 glib:type-name="WpPropsMode"
+                 glib:get-type="wp_props_mode_get_type"
+                 c:type="WpPropsMode">
+      <member name="cache"
+              value="0"
+              c:identifier="WP_PROPS_MODE_CACHE"
+              glib:nick="cache">
+        <doc xml:space="preserve"
+             filename="../lib/wp/props.h"
+             line="20">props are stored on the proxy and cached here</doc>
+      </member>
+      <member name="store"
+              value="1"
+              c:identifier="WP_PROPS_MODE_STORE"
+              glib:nick="store">
+        <doc xml:space="preserve"
+             filename="../lib/wp/props.h"
+             line="21">props are stored here directly</doc>
+      </member>
+    </enumeration>
+    <class name="Proxy"
+           c:symbol-prefix="proxy"
+           c:type="WpProxy"
+           parent="GObject.Object"
+           glib:type-name="WpProxy"
+           glib:get-type="wp_proxy_get_type"
+           glib:type-struct="ProxyClass">
+      <source-position filename="../lib/wp/proxy.h" line="99"/>
+      <virtual-method name="augment">
+        <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="features" transfer-ownership="none">
+            <type name="ProxyFeatures" c:type="WpProxyFeatures"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="bound">
+        <source-position filename="../lib/wp/proxy.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="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="enum_params">
+        <source-position filename="../lib/wp/proxy.h" line="87"/>
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </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>
+          <parameter name="start" transfer-ownership="none">
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="num" transfer-ownership="none">
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_info" invoker="get_info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="694">Requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/proxy.h" line="83"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="700">the pipewire info structure of this object
+   (pw_node_info, pw_port_info, etc...)</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="696">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_param_info">
+        <source-position filename="../lib/wp/proxy.h" line="85"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <type name="gpointer" c:type="spa_param_info*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+          <parameter name="n_params" transfer-ownership="none">
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_properties" invoker="get_properties">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="715">Requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/proxy.h" line="84"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="721">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="../lib/wp/proxy.c"
+                 line="717">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="prop_changed">
+        <source-position filename="../lib/wp/proxy.h" line="98"/>
+        <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="prop_name" transfer-ownership="none">
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="pw_proxy_created">
+        <source-position filename="../lib/wp/proxy.h" line="95"/>
+        <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="96"/>
+        <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>
+      <virtual-method name="set_param">
+        <source-position filename="../lib/wp/proxy.h" line="90"/>
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </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>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="param" transfer-ownership="none">
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="subscribe_params">
+        <source-position filename="../lib/wp/proxy.h" line="89"/>
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+          <parameter name="ids" transfer-ownership="none">
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="n_ids" transfer-ownership="none">
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="augment" c:identifier="wp_proxy_augment">
+        <source-position filename="../lib/wp/proxy.h" line="107"/>
+        <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="wanted_features" transfer-ownership="none">
+            <type name="ProxyFeatures" c:type="WpProxyFeatures"/>
+          </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="3">
+            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="augment_finish"
+              c:identifier="wp_proxy_augment_finish"
+              throws="1">
+        <source-position filename="../lib/wp/proxy.h" line="112"/>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+          <parameter name="res" transfer-ownership="none">
+            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enum_params" c:identifier="wp_proxy_enum_params">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="902">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_proxy_enum_params_finish().</doc>
+        <source-position filename="../lib/wp/proxy.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="../lib/wp/proxy.c"
+                 line="904">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+          <parameter name="id"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="905">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="../lib/wp/proxy.c"
+                 line="906">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="../lib/wp/proxy.c"
+                 line="907">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="../lib/wp/proxy.c"
+                 line="908">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="../lib/wp/proxy.c"
+                 line="909">data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enum_params_finish"
+              c:identifier="wp_proxy_enum_params_finish"
+              throws="1">
+        <source-position filename="../lib/wp/proxy.h" line="163"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="965">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="../lib/wp/proxy.c"
+                 line="961">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="962">the async result</doc>
+            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bound_id" c:identifier="wp_proxy_get_bound_id">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="827">Returns the bound id, which 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.</doc>
+        <source-position filename="../lib/wp/proxy.h" line="153"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="835">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="../lib/wp/proxy.c"
+                 line="829">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_core" c:identifier="wp_proxy_get_core">
+        <source-position filename="../lib/wp/proxy.h" line="121"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="641">the core that created this proxy</doc>
+          <type name="Core" c:type="WpCore*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="639">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_features" c:identifier="wp_proxy_get_features">
+        <source-position filename="../lib/wp/proxy.h" line="116"/>
+        <return-value transfer-ownership="none">
+          <type name="ProxyFeatures" c:type="WpProxyFeatures"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_global_permissions"
+              c:identifier="wp_proxy_get_global_permissions">
+        <source-position filename="../lib/wp/proxy.h" line="126"/>
+        <return-value transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_global_properties"
+              c:identifier="wp_proxy_get_global_properties">
+        <source-position filename="../lib/wp/proxy.h" line="129"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="668">the global properties of the proxy</doc>
+          <type name="Properties" c:type="WpProperties*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_info" c:identifier="wp_proxy_get_info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="694">Requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/proxy.h" line="139"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="700">the pipewire info structure of this object
+   (pw_node_info, pw_port_info, etc...)</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="696">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_param_info" c:identifier="wp_proxy_get_param_info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="764">Returns the available parameters of this proxy. The return value is
+a variant 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_proxy_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`)
+  - `s`: the param was updated (`SPA_PARAM_INFO_SERIAL`)
+
+For params that are readable, you can query them with wp_proxy_enum_params()
+
+Params that are writable can be set with wp_proxy_set_param()
+
+Requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/proxy.h" line="148"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="783">a variant of type `a{ss}` or %NULL
+  if the proxy 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="../lib/wp/proxy.c"
+                 line="766">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_prop" c:identifier="wp_proxy_get_prop">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="1034">Requires %WP_PROXY_FEATURE_PROPS</doc>
+        <source-position filename="../lib/wp/proxy.h" line="175"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="1041">the spa pod containing the value
+  of this prop, or %NULL if @prop_name does not exist on this proxy</doc>
+          <type name="SpaPod" c:type="WpSpaPod*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="1036">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+          <parameter name="prop_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="1037">the prop name</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_properties" c:identifier="wp_proxy_get_properties">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="715">Requires %WP_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/proxy.h" line="142"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="721">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="../lib/wp/proxy.c"
+                 line="717">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_property" c:identifier="wp_proxy_get_property">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="736">Returns the value of a single pipewire property. This is the same as getting
+the whole properties structure with wp_proxy_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_PROXY_FEATURE_INFO</doc>
+        <source-position filename="../lib/wp/proxy.h" line="145"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="751">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="../lib/wp/proxy.c"
+                 line="738">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="739">the property name</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pw_proxy" c:identifier="wp_proxy_get_pw_proxy">
+        <source-position filename="../lib/wp/proxy.h" line="134"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <type name="gpointer" c:type="pw_proxy*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate_prop_info"
+              c:identifier="wp_proxy_iterate_prop_info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="1013">Requires %WP_PROXY_FEATURE_PROPS</doc>
+        <source-position filename="../lib/wp/proxy.h" line="172"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/proxy.c"
+               line="1019">an iterator to iterate over the
+  `SPA_PARAM_PropInfo` params, or %NULL if the object has no props;
+  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="../lib/wp/proxy.c"
+                 line="1015">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="request_destroy" c:identifier="wp_proxy_request_destroy">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="472">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::pw-proxy-destroyed signal will be emitted. If the server does
+not allow it, nothing will happen.
+
+This is mostly useful for destroying #WpLink and #WpEndpointLink objects.</doc>
+        <source-position filename="../lib/wp/proxy.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="../lib/wp/proxy.c"
+                 line="474">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="set_param" c:identifier="wp_proxy_set_param">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="983">Sets a parameter on the object.</doc>
+        <source-position filename="../lib/wp/proxy.h" line="167"/>
+        <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="../lib/wp/proxy.c"
+                 line="985">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="986">the parameter id to set</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="987">the parameter to set</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_prop" c:identifier="wp_proxy_set_prop">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.c"
+             line="1055">Sets a single property in the `SPA_PARAM_Props` param of this object.</doc>
+        <source-position filename="../lib/wp/proxy.h" line="178"/>
+        <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="../lib/wp/proxy.c"
+                 line="1057">the proxy</doc>
+            <type name="Proxy" c:type="WpProxy*"/>
+          </instance-parameter>
+          <parameter name="prop_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="1058">the prop name</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="1059">the new value for this prop, as a spa pod</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="bound-id" transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </property>
+      <property name="core"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Core"/>
+      </property>
+      <property name="features" transfer-ownership="none">
+        <type name="ProxyFeatures"/>
+      </property>
+      <property name="global"
+                introspectable="0"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type/>
+      </property>
+      <property name="global-permissions" transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </property>
+      <property name="global-properties" transfer-ownership="none">
+        <type name="Properties"/>
+      </property>
+      <property name="info" transfer-ownership="none">
+        <type name="gpointer" c:type="gpointer"/>
+      </property>
+      <property name="param-info" transfer-ownership="none">
+        <type name="GLib.Variant"/>
+      </property>
+      <property name="properties" transfer-ownership="none">
+        <type name="Properties"/>
+      </property>
+      <property name="pw-proxy"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gpointer" c:type="gpointer"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </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="prop-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="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="99"/>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="pw_iface_type">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.h"
+             line="69">the PipeWire type of the interface that is being proxied by
+   this class (ex. `PW_TYPE_INTERFACE_Node` for #WpNode)</doc>
+        <type name="utf8" c:type="const gchar*"/>
+      </field>
+      <field name="pw_iface_version">
+        <doc xml:space="preserve"
+             filename="../lib/wp/proxy.h"
+             line="71">the PipeWire version of the interface that is being
+   proxied by this class</doc>
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="augment">
+        <callback name="augment">
+          <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="features" transfer-ownership="none">
+              <type name="ProxyFeatures" c:type="WpProxyFeatures"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_info">
+        <callback name="get_info">
+          <source-position filename="../lib/wp/proxy.h" line="83"/>
+          <return-value transfer-ownership="none" nullable="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="700">the pipewire info structure of this object
+   (pw_node_info, pw_port_info, etc...)</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/proxy.c"
+                   line="696">the proxy</doc>
+              <type name="Proxy" c:type="WpProxy*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_properties">
+        <callback name="get_properties">
+          <source-position filename="../lib/wp/proxy.h" line="84"/>
+          <return-value transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/proxy.c"
+                 line="721">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="../lib/wp/proxy.c"
+                   line="717">the proxy</doc>
+              <type name="Proxy" c:type="WpProxy*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_param_info">
+        <callback name="get_param_info">
+          <source-position filename="../lib/wp/proxy.h" line="85"/>
+          <return-value transfer-ownership="none" nullable="1">
+            <type name="gpointer" c:type="spa_param_info*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Proxy" c:type="WpProxy*"/>
+            </parameter>
+            <parameter name="n_params" transfer-ownership="none">
+              <type name="guint" c:type="guint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enum_params">
+        <callback name="enum_params">
+          <source-position filename="../lib/wp/proxy.h" line="87"/>
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </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>
+            <parameter name="start" transfer-ownership="none">
+              <type name="guint32" c:type="guint32"/>
+            </parameter>
+            <parameter name="num" transfer-ownership="none">
+              <type name="guint32" c:type="guint32"/>
+            </parameter>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="SpaPod" c:type="WpSpaPod*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="subscribe_params">
+        <callback name="subscribe_params">
+          <source-position filename="../lib/wp/proxy.h" line="89"/>
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Proxy" c:type="WpProxy*"/>
+            </parameter>
+            <parameter name="ids" transfer-ownership="none">
+              <type name="guint32" c:type="guint32*"/>
+            </parameter>
+            <parameter name="n_ids" transfer-ownership="none">
+              <type name="guint32" c:type="guint32"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_param">
+        <callback name="set_param">
+          <source-position filename="../lib/wp/proxy.h" line="90"/>
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </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>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="guint32" c:type="guint32"/>
+            </parameter>
+            <parameter name="param" transfer-ownership="none">
+              <type name="SpaPod" c:type="WpSpaPod*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pw_proxy_created">
+        <callback name="pw_proxy_created">
+          <source-position filename="../lib/wp/proxy.h" line="95"/>
+          <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="96"/>
+          <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="97"/>
+          <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="prop_changed">
+        <callback name="prop_changed">
+          <source-position filename="../lib/wp/proxy.h" line="98"/>
+          <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="prop_name" transfer-ownership="none">
+              <type name="utf8" c:type="const gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="ProxyFeatures"
+              glib:type-name="WpProxyFeatures"
+              glib:get-type="wp_proxy_features_get_type"
+              c:type="WpProxyFeatures">
+      <doc xml:space="preserve"
+           filename="../lib/wp/proxy.h"
+           line="24">Flags that specify functionality that is available on this class.
+Use wp_proxy_augment() to enable more features and wp_proxy_get_features()
+to find out which features are already enabled.
+
+Subclasses may also specify additional features that can be ORed with these
+ones and they can also be enabled with wp_proxy_augment().</doc>
+      <member name="pw_proxy"
+              value="1"
+              c:identifier="WP_PROXY_FEATURE_PW_PROXY"
+              glib:nick="pw-proxy">
+      </member>
+      <member name="info"
+              value="2"
+              c:identifier="WP_PROXY_FEATURE_INFO"
+              glib:nick="info">
+      </member>
+      <member name="bound"
+              value="4"
+              c:identifier="WP_PROXY_FEATURE_BOUND"
+              glib:nick="bound">
+      </member>
+      <member name="props"
+              value="8"
+              c:identifier="WP_PROXY_FEATURE_PROPS"
+              glib:nick="props">
+      </member>
+    </bitfield>
+    <constant name="SESSION_FEATURES_STANDARD"
+              value="196616"
+              c:type="WP_SESSION_FEATURES_STANDARD">
+      <doc xml:space="preserve"
+           filename="../lib/wp/session.h"
+           line="34">A constant set of features that contains the standard features that are
+available in the #WpSession class.</doc>
+      <source-position filename="../lib/wp/session.h" line="40"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SI_FLAGS_MASK_OPERATION_IN_PROGRESS"
+              value="17"
+              c:type="WP_SI_FLAGS_MASK_OPERATION_IN_PROGRESS">
+      <doc xml:space="preserve"
+           filename="../lib/wp/session-item.h"
+           line="58">A #WpSiFlags mask that can be used to test if an async operation
+(activate or export) is currently in progress.</doc>
+      <source-position filename="../lib/wp/session-item.h" line="64"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Session"
+           c:symbol-prefix="session"
+           c:type="WpSession"
+           parent="Proxy"
+           glib:type-name="WpSession"
+           glib:get-type="wp_session_get_type"
+           glib:type-struct="SessionClass">
+      <source-position filename="../lib/wp/session.h" line="58"/>
+      <method name="get_default_endpoint"
+              c:identifier="wp_session_get_default_endpoint">
+        <source-position filename="../lib/wp/session.h" line="64"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="396">the bound id of the default endpoint of this @direction</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="393">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="394">the endpoint direction</doc>
+            <type name="Direction" c:type="WpDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_endpoints" c:identifier="wp_session_get_n_endpoints">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="457">Requires %WP_SESSION_FEATURE_ENDPOINTS</doc>
+        <source-position filename="../lib/wp/session.h" line="74"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="463">the number of endpoints of this session</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="459">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_n_links" c:identifier="wp_session_get_n_links">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="588">Requires %WP_SESSION_FEATURE_LINKS</doc>
+        <source-position filename="../lib/wp/session.h" line="98"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="594">the number of endpoint links of this session</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="590">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_name" c:identifier="wp_session_get_name">
+        <source-position filename="../lib/wp/session.h" line="61"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="378">the (unique) name of the session</doc>
+          <type name="utf8" c:type="const gchar*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="376">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate_endpoints"
+              c:identifier="wp_session_iterate_endpoints">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="476">Requires %WP_SESSION_FEATURE_ENDPOINTS</doc>
+        <source-position filename="../lib/wp/session.h" line="77"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="482">a #WpIterator that iterates over all
+  the endpoints that belong to this session</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="478">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate_endpoints_filtered"
+              c:identifier="wp_session_iterate_endpoints_filtered"
+              shadowed-by="iterate_endpoints_filtered_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="496">Requires %WP_SESSION_FEATURE_ENDPOINTS
+
+The constraints specified in the variable arguments must follow the rules
+documented in wp_object_interest_new().</doc>
+        <source-position filename="../lib/wp/session.h" line="80"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="506">a #WpIterator that iterates over all
+  the endpoints that belong to this session and match the constraints</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="498">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="499">a list of constraints, terminated by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_endpoints_filtered_full"
+              c:identifier="wp_session_iterate_endpoints_filtered_full"
+              shadows="iterate_endpoints_filtered">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="520">Requires %WP_SESSION_FEATURE_ENDPOINTS</doc>
+        <source-position filename="../lib/wp/session.h" line="84"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="527">a #WpIterator that iterates over all
+  the endpoints that belong to this session and match the @interest</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="522">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="523">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_links" c:identifier="wp_session_iterate_links">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="607">Requires %WP_SESSION_FEATURE_LINKS</doc>
+        <source-position filename="../lib/wp/session.h" line="101"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="613">a #WpIterator that iterates over all
+  the endpoint links that belong to this session</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="609">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate_links_filtered"
+              c:identifier="wp_session_iterate_links_filtered"
+              shadowed-by="iterate_links_filtered_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="627">Requires %WP_SESSION_FEATURE_LINKS
+
+The constraints specified in the variable arguments must follow the rules
+documented in wp_object_interest_new().</doc>
+        <source-position filename="../lib/wp/session.h" line="104"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="637">a #WpIterator that iterates over all
+  the links that belong to this session and match the constraints</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="629">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="630">a list of constraints, terminated by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_links_filtered_full"
+              c:identifier="wp_session_iterate_links_filtered_full"
+              shadows="iterate_links_filtered">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="651">Requires %WP_SESSION_FEATURE_LINKS</doc>
+        <source-position filename="../lib/wp/session.h" line="108"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="658">a #WpIterator that iterates over all
+  the links that belong to this session and match the @interest</doc>
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="653">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="654">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_endpoint"
+              c:identifier="wp_session_lookup_endpoint"
+              shadowed-by="lookup_endpoint_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="542">Requires %WP_SESSION_FEATURE_ENDPOINTS
+
+The constraints specified in the variable arguments must follow the rules
+documented in wp_object_interest_new().</doc>
+        <source-position filename="../lib/wp/session.h" line="88"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="552">the first endpoint that matches the
+   constraints, or %NULL if there is no such endpoint</doc>
+          <type name="Endpoint" c:type="WpEndpoint*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="544">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="545">a list of constraints, terminated by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_endpoint_full"
+              c:identifier="wp_session_lookup_endpoint_full"
+              shadows="lookup_endpoint">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="566">Requires %WP_SESSION_FEATURE_ENDPOINTS</doc>
+        <source-position filename="../lib/wp/session.h" line="92"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="573">the first endpoint that matches the
+   @interest, or %NULL if there is no such endpoint</doc>
+          <type name="Endpoint" c:type="WpEndpoint*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="568">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="569">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_link"
+              c:identifier="wp_session_lookup_link"
+              shadowed-by="lookup_link_full"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="673">Requires %WP_SESSION_FEATURE_LINKS
+
+The constraints specified in the variable arguments must follow the rules
+documented in wp_object_interest_new().</doc>
+        <source-position filename="../lib/wp/session.h" line="112"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="683">the first link that matches the
+   constraints, or %NULL if there is no such link</doc>
+          <type name="EndpointLink" c:type="WpEndpointLink*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="675">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="676">a list of constraints, terminated by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_link_full"
+              c:identifier="wp_session_lookup_link_full"
+              shadows="lookup_link">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="697">Requires %WP_SESSION_FEATURE_LINKS</doc>
+        <source-position filename="../lib/wp/session.h" line="116"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session.c"
+               line="704">the first link that matches the
+   @interest, or %NULL if there is no such link</doc>
+          <type name="EndpointLink" c:type="WpEndpointLink*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="699">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="interest" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="700">the interest</doc>
+            <type name="ObjectInterest" c:type="WpObjectInterest*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_endpoint"
+              c:identifier="wp_session_set_default_endpoint">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="425">Sets the default endpoint for this @direction to be the one identified
+with @id</doc>
+        <source-position filename="../lib/wp/session.h" line="68"/>
+        <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="../lib/wp/session.c"
+                 line="427">the session</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </instance-parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="428">the endpoint direction</doc>
+            <type name="Direction" c:type="WpDirection"/>
+          </parameter>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="429">the bound id of the endpoint to set as the default for this @direction</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="Proxy" c:type="WpProxy"/>
+      </field>
+      <glib:signal name="default-endpoint-changed" when="last">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="336">Emitted when the default endpoint of a specific direction changes.
+The passed @id is the bound id (wp_proxy_get_bound_id()) of the new
+default endpoint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="339">the endpoint direction</doc>
+            <type name="Direction"/>
+          </parameter>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session.c"
+                 line="340">the endpoint's bound id</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="endpoints-changed" when="last">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="351">Emitted when the sessions's endpoints change. This is only emitted
+when %WP_SESSION_FEATURE_ENDPOINTS is enabled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="links-changed" when="last">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.c"
+             line="362">Emitted when the session's links change. This is only emitted
+when %WP_SESSION_FEATURE_LINKS is enabled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <class name="SessionBin"
+           c:symbol-prefix="session_bin"
+           c:type="WpSessionBin"
+           parent="SessionItem"
+           abstract="1"
+           glib:type-name="WpSessionBin"
+           glib:get-type="wp_session_bin_get_type"
+           glib:type-struct="SessionBinClass">
+      <source-position filename="../lib/wp/session-bin.h" line="34"/>
+      <constructor name="new" c:identifier="wp_session_bin_new">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-bin.c"
+             line="70">Creates a new session bin.</doc>
+        <source-position filename="../lib/wp/session-bin.h" line="37"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-bin.c"
+               line="74">TRUE if the item was added into the session bin, FALSE otherwise</doc>
+          <type name="SessionBin" c:type="WpSessionBin*"/>
+        </return-value>
+      </constructor>
+      <method name="add" c:identifier="wp_session_bin_add">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-bin.c"
+             line="82">Adds a session item into a session bin.</doc>
+        <source-position filename="../lib/wp/session-bin.h" line="40"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-bin.c"
+               line="89">TRUE if the item was added into the session bin, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-bin.c"
+                 line="84">the session bin
+@item (transfer full): the session item to be added</doc>
+            <type name="SessionBin" c:type="WpSessionBin*"/>
+          </instance-parameter>
+          <parameter name="item" transfer-ownership="none">
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_children"
+              c:identifier="wp_session_bin_get_n_children">
+        <source-position filename="../lib/wp/session-bin.h" line="46"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-bin.c"
+               line="126">the number of child items in the bin</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-bin.c"
+                 line="124">the session bin</doc>
+            <type name="SessionBin" c:type="WpSessionBin*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate" c:identifier="wp_session_bin_iterate">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-bin.c"
+             line="173">Gets an iterator to iterate throught all session items.
+
+Returns (transfer full): The session bin iterator.</doc>
+        <source-position filename="../lib/wp/session-bin.h" line="49"/>
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="WpIterator*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-bin.c"
+                 line="175">the session bin
+@item (transfer none): the session item to be removed</doc>
+            <type name="SessionBin" c:type="WpSessionBin*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="wp_session_bin_remove">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-bin.c"
+             line="105">Removes a session item from a session bin.</doc>
+        <source-position filename="../lib/wp/session-bin.h" line="43"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-bin.c"
+               line="112">TRUE if the item was removed from the session bin, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-bin.c"
+                 line="107">the session bin
+@item (transfer none): the session item to be removed</doc>
+            <type name="SessionBin" c:type="WpSessionBin*"/>
+          </instance-parameter>
+          <parameter name="item" transfer-ownership="none">
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="SessionItem" c:type="WpSessionItem"/>
+      </field>
+    </class>
+    <record name="SessionBinClass"
+            c:type="WpSessionBinClass"
+            glib:is-gtype-struct-for="SessionBin">
+      <source-position filename="../lib/wp/session-bin.h" line="34"/>
+      <field name="parent_class">
+        <type name="SessionItemClass" c:type="WpSessionItemClass"/>
+      </field>
+    </record>
+    <record name="SessionClass"
+            c:type="WpSessionClass"
+            glib:is-gtype-struct-for="Session">
+      <source-position filename="../lib/wp/session.h" line="58"/>
+      <field name="parent_class">
+        <type name="ProxyClass" c:type="WpProxyClass"/>
+      </field>
+    </record>
+    <bitfield name="SessionFeatures"
+              glib:type-name="WpSessionFeatures"
+              glib:get-type="wp_session_features_get_type"
+              c:type="WpSessionFeatures">
+      <doc xml:space="preserve"
+           filename="../lib/wp/session.h"
+           line="18">An extension of #WpProxyFeatures</doc>
+      <member name="endpoints"
+              value="65536"
+              c:identifier="WP_SESSION_FEATURE_ENDPOINTS"
+              glib:nick="endpoints">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.h"
+             line="20">caches information about endpoints, enabling
+  the use of wp_session_get_n_endpoints(), wp_session_lookup_endpoint(),
+  wp_session_iterate_endpoints() and related methods</doc>
+      </member>
+      <member name="links"
+              value="131072"
+              c:identifier="WP_SESSION_FEATURE_LINKS"
+              glib:nick="links">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session.h"
+             line="23">caches information about endpoint links, enabling
+  the use of wp_session_get_n_links(), wp_session_lookup_link(),
+  wp_session_iterate_links() and related methods</doc>
+      </member>
+    </bitfield>
+    <class name="SessionItem"
+           c:symbol-prefix="session_item"
+           c:type="WpSessionItem"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="WpSessionItem"
+           glib:get-type="wp_session_item_get_type"
+           glib:type-struct="SessionItemClass">
+      <source-position filename="../lib/wp/session-item.h" line="118"/>
+      <function name="make" c:identifier="wp_session_item_make">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-factory.c"
+             line="210">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="54"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-factory.c"
+               line="218">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="../lib/wp/si-factory.c"
+                 line="212">the #WpCore</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+          <parameter name="factory_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-factory.c"
+                 line="213">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="activate_execute_step">
+        <source-position filename="../lib/wp/session-item.h" line="109"/>
+        <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>
+          <parameter name="step" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="activate_get_next_step">
+        <source-position filename="../lib/wp/session-item.h" line="107"/>
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </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>
+          <parameter name="step" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="activate_rollback">
+        <source-position filename="../lib/wp/session-item.h" line="111"/>
+        <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="configure" invoker="configure">
+        <source-position filename="../lib/wp/session-item.h" line="104"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="593">%TRUE on success, %FALSE if the options could not be set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="589">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="590">the configuration options to set
+  (`a{sv}` dictionary, mapping option names to values)</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="export_execute_step">
+        <source-position filename="../lib/wp/session-item.h" line="115"/>
+        <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>
+          <parameter name="step" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="export_get_next_step">
+        <source-position filename="../lib/wp/session-item.h" line="113"/>
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </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>
+          <parameter name="step" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="export_rollback">
+        <source-position filename="../lib/wp/session-item.h" line="117"/>
+        <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="get_associated_proxy"
+                      invoker="get_associated_proxy">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="537">An associated proxy is a #WpProxy subclass instance that is somehow related
+to this item. For example:
+ - An exported #WpSiEndpoint should have at least:
+     - an associated #WpEndpoint
+     - an associated #WpSession
+ - An exported #WpSiStream should have at least:
+     - an associated #WpEndpointStream
+     - an associated #WpEndpoint
+ - In cases where the item wraps a single PipeWire node, it should also
+   have an associated #WpNode</doc>
+        <source-position filename="../lib/wp/session-item.h" line="102"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="553">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="../lib/wp/session-item.c"
+                 line="539">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="proxy_type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="540">a #WpProxy subclass #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_configuration" invoker="get_configuration">
+        <source-position filename="../lib/wp/session-item.h" line="105"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="613">the active configuration, as a `a{sv}` dictionary</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="611">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="reset" invoker="reset">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="414">Resets the state of the item, deactivating it, unexporting it and
+resetting configuration options as well.</doc>
+        <source-position filename="../lib/wp/session-item.h" line="100"/>
+        <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="../lib/wp/session-item.c"
+                 line="416">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <method name="activate" c:identifier="wp_session_item_activate">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="651">Activates the item asynchronously.
+You can use wp_session_item_activate_finish() in the @callback to get
+the result of this operation.
+
+This internally starts a #WpTransition that calls into
+#WpSessionItemClass.activate_get_next_step() and
+#WpSessionItemClass.activate_execute_step() to advance.
+If the transition fails, #WpSessionItemClass.activate_rollback() is called
+to reverse previous actions.
+
+The default implementation of the above virtual functions activates the
+item successfully without doing anything. In order to implement a meaningful
+session item, you should override all 3 of them.
+
+When this method is called, the %WP_SI_FLAG_ACTIVATING flag is set. When
+the operation finishes successfully, that flag is cleared and replaced with
+either %WP_SI_FLAG_ACTIVE or %WP_SI_FLAG_ACTIVATE_ERROR, depending on the
+success outcome of the operation. In order to clear
+%WP_SI_FLAG_ACTIVATE_ERROR, you can either call wp_session_item_deactivate()
+or wp_session_item_activate() to try activating again.
+
+This method cannot be called if another operation (activation or export) is
+in progress (%WP_SI_FLAGS_MASK_OPERATION_IN_PROGRESS) or if the item is
+already activated.</doc>
+        <source-position filename="../lib/wp/session-item.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="../lib/wp/session-item.c"
+                 line="653">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     scope="async"
+                     closure="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="654">a callback to call when activation is finished</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="../lib/wp/session-item.c"
+                 line="655">data passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate_finish"
+              c:identifier="wp_session_item_activate_finish"
+              throws="1">
+        <source-position filename="../lib/wp/session-item.h" line="162"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="728">%TRUE if the item is now activateed, %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="../lib/wp/session-item.c"
+                 line="724">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="725">the async operation result</doc>
+            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_flag" c:identifier="wp_session_item_clear_flag">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="511">Clears the specified @flag from this item.
+
+Note that bits 1-8 cannot be cleared using this function, they can only
+be changed internally.</doc>
+        <source-position filename="../lib/wp/session-item.h" line="135"/>
+        <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="../lib/wp/session-item.c"
+                 line="513">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="flag" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="514">the flag to clear</doc>
+            <type name="SiFlags" c:type="WpSiFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="configure" c:identifier="wp_session_item_configure">
+        <source-position filename="../lib/wp/session-item.h" line="150"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="593">%TRUE on success, %FALSE if the options could not be set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="589">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="590">the configuration options to set
+  (`a{sv}` dictionary, mapping option names to values)</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deactivate" c:identifier="wp_session_item_deactivate">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="740">De-activates the item and/or cancels any ongoing activation operation.
+
+If the item was not activated, this method does nothing.</doc>
+        <source-position filename="../lib/wp/session-item.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="../lib/wp/session-item.c"
+                 line="742">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="export" c:identifier="wp_session_item_export">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="792">Exports this item asynchronously on PipeWire, making it part of the
+specified @session. You can use wp_session_item_export_finish() in the
+@callback to get the result of this operation.
+
+This internally starts a #WpTransition that calls into
+#WpSessionItemClass.export_get_next_step() and
+#WpSessionItemClass.export_execute_step() to advance.
+If the transition fails, #WpSessionItemClass.export_rollback() is called
+to reverse previous actions.
+
+Exporting is internally implemented for endpoints (items that implement
+#WpSiEndpoint) and endpoint links (items that implement #WpSiLink). On other
+items the default implementation will immediately call the @callback,
+reporting error. You can extend this to export custom interfaces by
+overriding the virtual functions mentioned above.
+
+When this method is called, the %WP_SI_FLAG_EXPORTING flag is set. When
+the operation finishes successfully, that flag is cleared and replaced with
+either %WP_SI_FLAG_EXPORTED or %WP_SI_FLAG_EXPORT_ERROR, depending on the
+success outcome of the operation. In order to clear
+%WP_SI_FLAG_EXPORT_ERROR, you can either call wp_session_item_unexport()
+or wp_session_item_export() to try exporting again.
+
+This method cannot be called if another operation (activation or export) is
+in progress (%WP_SI_FLAGS_MASK_OPERATION_IN_PROGRESS) or if the item is
+already exported.</doc>
+        <source-position filename="../lib/wp/session-item.h" line="171"/>
+        <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="../lib/wp/session-item.c"
+                 line="794">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="session" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="795">the session on which to export this item</doc>
+            <type name="Session" c:type="WpSession*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     scope="async"
+                     closure="2">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="796">a callback to call when exporting is finished</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="../lib/wp/session-item.c"
+                 line="797">data passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="export_finish"
+              c:identifier="wp_session_item_export_finish"
+              throws="1">
+        <source-position filename="../lib/wp/session-item.h" line="175"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="875">%TRUE if the item is now exported, %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="../lib/wp/session-item.c"
+                 line="871">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="872">the async operation result</doc>
+            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_associated_proxy"
+              c:identifier="wp_session_item_get_associated_proxy">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="537">An associated proxy is a #WpProxy subclass instance that is somehow related
+to this item. For example:
+ - An exported #WpSiEndpoint should have at least:
+     - an associated #WpEndpoint
+     - an associated #WpSession
+ - An exported #WpSiStream should have at least:
+     - an associated #WpEndpointStream
+     - an associated #WpEndpoint
+ - In cases where the item wraps a single PipeWire node, it should also
+   have an associated #WpNode</doc>
+        <source-position filename="../lib/wp/session-item.h" line="140"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="553">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="../lib/wp/session-item.c"
+                 line="539">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="proxy_type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="540">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">
+        <source-position filename="../lib/wp/session-item.h" line="144"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="573">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="../lib/wp/session-item.c"
+                 line="570">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="proxy_type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="571">a #WpProxy subclass #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_configuration"
+              c:identifier="wp_session_item_get_configuration">
+        <source-position filename="../lib/wp/session-item.h" line="153"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="613">the active configuration, as a `a{sv}` dictionary</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="611">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_flags" c:identifier="wp_session_item_get_flags">
+        <source-position filename="../lib/wp/session-item.h" line="129"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="473">the item's flags</doc>
+          <type name="SiFlags" c:type="WpSiFlags"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="471">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_parent" c:identifier="wp_session_item_get_parent">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="430">Gets the item's parent, which is the #WpSessionBin this item has been added
+to, or NULL if the item does not belong to a session bin.</doc>
+        <source-position filename="../lib/wp/session-item.h" line="124"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/session-item.c"
+               line="437">the item's parent.</doc>
+          <type name="SessionItem" c:type="WpSessionItem*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="432">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="../lib/wp/session-item.c"
+             line="414">Resets the state of the item, deactivating it, unexporting it and
+resetting configuration options as well.</doc>
+        <source-position filename="../lib/wp/session-item.h" line="121"/>
+        <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="../lib/wp/session-item.c"
+                 line="416">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="set_flag" c:identifier="wp_session_item_set_flag">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="485">Sets the specified @flag on this item.
+
+Note that bits 1-8 cannot be set using this function, they can only
+be changed internally.</doc>
+        <source-position filename="../lib/wp/session-item.h" line="132"/>
+        <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="../lib/wp/session-item.c"
+                 line="487">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+          <parameter name="flag" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="488">the flag to set</doc>
+            <type name="SiFlags" c:type="WpSiFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unexport" c:identifier="wp_session_item_unexport">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.c"
+             line="887">Reverses the effects of a previous call to wp_session_item_export().
+This means that after this method is called:
+ - The item is no longer exported on PipeWire
+ - The item is no longer associated with a session
+ - If an export operation was in progress, it is cancelled.
+
+If the item was not exported, this method does nothing.</doc>
+        <source-position filename="../lib/wp/session-item.h" line="179"/>
+        <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="../lib/wp/session-item.c"
+                 line="889">the session item</doc>
+            <type name="SessionItem" c:type="WpSessionItem*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <glib:signal name="flags-changed" when="last">
+        <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="../lib/wp/session-item.c"
+                 line="406">the current flags</doc>
+            <type name="SiFlags"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="SessionItemClass"
+            c:type="WpSessionItemClass"
+            glib:is-gtype-struct-for="SessionItem">
+      <source-position filename="../lib/wp/session-item.h" line="118"/>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="reset">
+        <callback name="reset">
+          <source-position filename="../lib/wp/session-item.h" line="100"/>
+          <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="../lib/wp/session-item.c"
+                   line="416">the session item</doc>
+              <type name="SessionItem" c:type="WpSessionItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_associated_proxy">
+        <callback name="get_associated_proxy">
+          <source-position filename="../lib/wp/session-item.h" line="102"/>
+          <return-value transfer-ownership="full" nullable="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="553">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>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/session-item.c"
+                   line="539">the session item</doc>
+              <type name="SessionItem" c:type="WpSessionItem*"/>
+            </parameter>
+            <parameter name="proxy_type" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/session-item.c"
+                   line="540">a #WpProxy subclass #GType</doc>
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="configure">
+        <callback name="configure">
+          <source-position filename="../lib/wp/session-item.h" line="104"/>
+          <return-value transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="593">%TRUE on success, %FALSE if the options could not be set</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/session-item.c"
+                   line="589">the session item</doc>
+              <type name="SessionItem" c:type="WpSessionItem*"/>
+            </parameter>
+            <parameter name="args" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/session-item.c"
+                   line="590">the configuration options to set
+  (`a{sv}` dictionary, mapping option names to values)</doc>
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_configuration">
+        <callback name="get_configuration">
+          <source-position filename="../lib/wp/session-item.h" line="105"/>
+          <return-value transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/session-item.c"
+                 line="613">the active configuration, as a `a{sv}` dictionary</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/session-item.c"
+                   line="611">the session item</doc>
+              <type name="SessionItem" c:type="WpSessionItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_get_next_step">
+        <callback name="activate_get_next_step">
+          <source-position filename="../lib/wp/session-item.h" line="107"/>
+          <return-value transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </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>
+            <parameter name="step" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_execute_step">
+        <callback name="activate_execute_step">
+          <source-position filename="../lib/wp/session-item.h" line="109"/>
+          <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>
+            <parameter name="step" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_rollback">
+        <callback name="activate_rollback">
+          <source-position filename="../lib/wp/session-item.h" line="111"/>
+          <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="export_get_next_step">
+        <callback name="export_get_next_step">
+          <source-position filename="../lib/wp/session-item.h" line="113"/>
+          <return-value transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </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>
+            <parameter name="step" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="export_execute_step">
+        <callback name="export_execute_step">
+          <source-position filename="../lib/wp/session-item.h" line="115"/>
+          <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>
+            <parameter name="step" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="export_rollback">
+        <callback name="export_rollback">
+          <source-position filename="../lib/wp/session-item.h" line="117"/>
+          <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>
+    </record>
+    <bitfield name="SiConfigOptionFlags"
+              glib:type-name="WpSiConfigOptionFlags"
+              glib:get-type="wp_si_config_option_flags_get_type"
+              c:type="WpSiConfigOptionFlags">
+      <member name="writeable"
+              value="1"
+              c:identifier="WP_SI_CONFIG_OPTION_WRITEABLE"
+              glib:nick="writeable">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.h"
+             line="69">the option can be set externally</doc>
+      </member>
+      <member name="required"
+              value="2"
+              c:identifier="WP_SI_CONFIG_OPTION_REQUIRED"
+              glib:nick="required">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.h"
+             line="70">the option is required to activate the item</doc>
+      </member>
+    </bitfield>
+    <interface name="SiEndpoint"
+               c:symbol-prefix="si_endpoint"
+               c:type="WpSiEndpoint"
+               glib:type-name="WpSiEndpoint"
+               glib:get-type="wp_si_endpoint_get_type"
+               glib:type-struct="SiEndpointInterface">
+      <doc xml:space="preserve"
+           filename="../lib/wp/si-interfaces.c"
+           line="19">An interface for session items that implement a PipeWire endpoint.</doc>
+      <source-position filename="../lib/wp/si-interfaces.h" line="43"/>
+      <prerequisite name="SessionItem"/>
+      <virtual-method name="get_n_streams" invoker="get_n_streams">
+        <source-position filename="../lib/wp/si-interfaces.h" line="39"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="92">the number of streams in the endpoint</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="90">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_properties" invoker="get_properties">
+        <source-position filename="../lib/wp/si-interfaces.h" line="37"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="77">the properties of the endpoint</doc>
+          <type name="Properties" c:type="WpProperties*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="75">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_registration_info"
+                      invoker="get_registration_info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="51">This should return information that is used for registering the endpoint,
+as a GVariant tuple of type (ssya{ss}) that contains, in order:
+ - s: the endpoint's name
+ - s: the media class
+ - y: the direction
+ - a{ss}: additional properties to be added to the list of global properties</doc>
+        <source-position filename="../lib/wp/si-interfaces.h" line="36"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="62">registration info for the endpoint</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="53">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_stream" invoker="get_stream">
+        <source-position filename="../lib/wp/si-interfaces.h" line="40"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="109">the stream at @index</doc>
+          <type name="SiStream" c:type="WpSiStream*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="105">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="106">the stream index, from 0 up to and excluding
+  wp_si_endpoint_get_n_streams()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_stream_acquisition"
+                      invoker="get_stream_acquisition">
+        <source-position filename="../lib/wp/si-interfaces.h" line="42"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="124">the stream acquisition interface
+  associated with this endpoint, or %NULL if this endpoint does not require
+  acquiring streams before linking them</doc>
+          <type name="SiStreamAcquisition" c:type="WpSiStreamAcquisition*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="122">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_n_streams" c:identifier="wp_si_endpoint_get_n_streams">
+        <source-position filename="../lib/wp/si-interfaces.h" line="52"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="92">the number of streams in the endpoint</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="90">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_properties"
+              c:identifier="wp_si_endpoint_get_properties">
+        <source-position filename="../lib/wp/si-interfaces.h" line="49"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="77">the properties of the endpoint</doc>
+          <type name="Properties" c:type="WpProperties*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="75">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_registration_info"
+              c:identifier="wp_si_endpoint_get_registration_info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="51">This should return information that is used for registering the endpoint,
+as a GVariant tuple of type (ssya{ss}) that contains, in order:
+ - s: the endpoint's name
+ - s: the media class
+ - y: the direction
+ - a{ss}: additional properties to be added to the list of global properties</doc>
+        <source-position filename="../lib/wp/si-interfaces.h" line="46"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="62">registration info for the endpoint</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="53">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_stream" c:identifier="wp_si_endpoint_get_stream">
+        <source-position filename="../lib/wp/si-interfaces.h" line="55"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="109">the stream at @index</doc>
+          <type name="SiStream" c:type="WpSiStream*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="105">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="106">the stream index, from 0 up to and excluding
+  wp_si_endpoint_get_n_streams()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stream_acquisition"
+              c:identifier="wp_si_endpoint_get_stream_acquisition">
+        <source-position filename="../lib/wp/si-interfaces.h" line="58"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="124">the stream acquisition interface
+  associated with this endpoint, or %NULL if this endpoint does not require
+  acquiring streams before linking them</doc>
+          <type name="SiStreamAcquisition" c:type="WpSiStreamAcquisition*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="122">the session item</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <glib:signal name="endpoint-properties-changed" when="last">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="endpoint-streams-changed" when="last">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="SiEndpointInterface"
+            c:type="WpSiEndpointInterface"
+            glib:is-gtype-struct-for="SiEndpoint">
+      <source-position filename="../lib/wp/si-interfaces.h" line="43"/>
+      <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="36"/>
+          <return-value transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="62">registration info for the endpoint</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="53">the session item</doc>
+              <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_properties">
+        <callback name="get_properties">
+          <source-position filename="../lib/wp/si-interfaces.h" line="37"/>
+          <return-value transfer-ownership="full" nullable="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="77">the properties of the endpoint</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="75">the session item</doc>
+              <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_streams">
+        <callback name="get_n_streams">
+          <source-position filename="../lib/wp/si-interfaces.h" line="39"/>
+          <return-value transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="92">the number of streams in the endpoint</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="90">the session item</doc>
+              <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_stream">
+        <callback name="get_stream">
+          <source-position filename="../lib/wp/si-interfaces.h" line="40"/>
+          <return-value transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="109">the stream at @index</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="105">the session item</doc>
+              <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+            </parameter>
+            <parameter name="index" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="106">the stream index, from 0 up to and excluding
+  wp_si_endpoint_get_n_streams()</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_stream_acquisition">
+        <callback name="get_stream_acquisition">
+          <source-position filename="../lib/wp/si-interfaces.h" line="42"/>
+          <return-value transfer-ownership="none" nullable="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="124">the stream acquisition interface
+  associated with this endpoint, or %NULL if this endpoint does not require
+  acquiring streams before linking them</doc>
+            <type name="SiStreamAcquisition" c:type="WpSiStreamAcquisition*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="122">the session item</doc>
+              <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <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="../lib/wp/si-factory.c"
+           line="30">A factory for session items.
+
+The most simple way to register a new item implementation would be:
+|[
+GVariantBuilder b = G_VARIANT_BUILDER_INIT ("a(ssymv)");
+g_variant_builder_add (&amp;b, ...);
+wp_si_factory_register (core, wp_si_factory_new_simple (
+   "foobar", FOO_TYPE_BAR, g_variant_builder_end (&amp;b)));
+]|
+
+And the most simple way to construct an item from a registered factory:
+|[
+item = wp_session_item_make (core, "foobar");
+]|</doc>
+      <source-position filename="../lib/wp/si-factory.h" line="32"/>
+      <constructor name="new_simple" c:identifier="wp_si_factory_new_simple">
+        <source-position filename="../lib/wp/si-factory.h" line="35"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-factory.c"
+               line="285">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="../lib/wp/si-factory.c"
+                 line="279">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="../lib/wp/si-factory.c"
+                 line="280">the #WpSessionItem subclass type to instantiate for
+   constructing items</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="config_spec" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-factory.c"
+                 line="282">the config spec that will be returned
+   by wp_si_factory_get_config_spec()</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="find" c:identifier="wp_si_factory_find">
+        <source-position filename="../lib/wp/si-factory.h" line="51"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-factory.c"
+               line="195">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="../lib/wp/si-factory.c"
+                 line="192">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+          <parameter name="factory_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-factory.c"
+                 line="193">the lookup name</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register" c:identifier="wp_si_factory_register">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-factory.c"
+             line="163">Registers the @factory on the @core.</doc>
+        <source-position filename="../lib/wp/si-factory.h" line="48"/>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="core" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-factory.c"
+                 line="165">the core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+          <parameter name="factory" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-factory.c"
+                 line="166">the factory to register</doc>
+            <type name="SiFactory" c:type="WpSiFactory*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="construct" invoker="construct">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-factory.c"
+             line="117">Creates a new instance of the session item that is constructed
+by this factory</doc>
+        <source-position filename="../lib/wp/si-factory.h" line="30"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-factory.c"
+               line="124">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="../lib/wp/si-factory.c"
+                 line="119">the factory</doc>
+            <type name="SiFactory" c:type="WpSiFactory*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_config_spec" invoker="get_config_spec">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-factory.c"
+             line="135">Returns a description of all the configuration options that the constructed
+items of this factory have. Configuration options are a way for items to
+accept input from external sources that affects their behavior, or to
+provide output for other items to consume as their configuration.
+
+The returned GVariant has the a(ssymv) type. This is an array of tuples,
+where each tuple has the following values, in order:
+ * s (string): the name of the option
+ * s (string): a GVariant type string, describing the type of the data
+ * y (byte): a combination of #WpSiConfigOptionFlags
+ * mv (optional variant): optionally, an additional variant
+   This is provided to allow extensions.</doc>
+        <source-position filename="../lib/wp/si-factory.h" line="31"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-factory.c"
+               line="152">the configuration description</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-factory.c"
+                 line="137">the factory</doc>
+            <type name="SiFactory" c:type="WpSiFactory*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <method name="construct" c:identifier="wp_si_factory_construct">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-factory.c"
+             line="117">Creates a new instance of the session item that is constructed
+by this factory</doc>
+        <source-position filename="../lib/wp/si-factory.h" line="42"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-factory.c"
+               line="124">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="../lib/wp/si-factory.c"
+                 line="119">the factory</doc>
+            <type name="SiFactory" c:type="WpSiFactory*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_config_spec"
+              c:identifier="wp_si_factory_get_config_spec">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-factory.c"
+             line="135">Returns a description of all the configuration options that the constructed
+items of this factory have. Configuration options are a way for items to
+accept input from external sources that affects their behavior, or to
+provide output for other items to consume as their configuration.
+
+The returned GVariant has the a(ssymv) type. This is an array of tuples,
+where each tuple has the following values, in order:
+ * s (string): the name of the option
+ * s (string): a GVariant type string, describing the type of the data
+ * y (byte): a combination of #WpSiConfigOptionFlags
+ * mv (optional variant): optionally, an additional variant
+   This is provided to allow extensions.</doc>
+        <source-position filename="../lib/wp/si-factory.h" line="45"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-factory.c"
+               line="152">the configuration description</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-factory.c"
+                 line="137">the factory</doc>
+            <type name="SiFactory" c:type="WpSiFactory*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_name" c:identifier="wp_si_factory_get_name">
+        <source-position filename="../lib/wp/si-factory.h" line="39"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-factory.c"
+               line="106">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="../lib/wp/si-factory.c"
+                 line="104">the factory</doc>
+            <type name="SiFactory" c:type="WpSiFactory*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <property name="name"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <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="32"/>
+      <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="30"/>
+          <return-value transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-factory.c"
+                 line="124">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="../lib/wp/si-factory.c"
+                   line="119">the factory</doc>
+              <type name="SiFactory" c:type="WpSiFactory*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_config_spec">
+        <callback name="get_config_spec">
+          <source-position filename="../lib/wp/si-factory.h" line="31"/>
+          <return-value transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-factory.c"
+                 line="152">the configuration description</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-factory.c"
+                   line="137">the factory</doc>
+              <type name="SiFactory" c:type="WpSiFactory*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="SiFlags"
+              glib:type-name="WpSiFlags"
+              glib:get-type="wp_si_flags_get_type"
+              c:type="WpSiFlags">
+      <member name="activating"
+              value="1"
+              c:identifier="WP_SI_FLAG_ACTIVATING"
+              glib:nick="activating">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.h"
+             line="29">set when an activation transition is in progress</doc>
+      </member>
+      <member name="active"
+              value="2"
+              c:identifier="WP_SI_FLAG_ACTIVE"
+              glib:nick="active">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.h"
+             line="30">set when an activation transition completes successfully</doc>
+      </member>
+      <member name="activate_error"
+              value="4"
+              c:identifier="WP_SI_FLAG_ACTIVATE_ERROR"
+              glib:nick="activate-error">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.h"
+             line="31">set when there was an error in the activation
+  process; to clear, call wp_session_item_deactivate()</doc>
+      </member>
+      <member name="exporting"
+              value="16"
+              c:identifier="WP_SI_FLAG_EXPORTING"
+              glib:nick="exporting">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.h"
+             line="33">set when an export operation is in progress</doc>
+      </member>
+      <member name="exported"
+              value="32"
+              c:identifier="WP_SI_FLAG_EXPORTED"
+              glib:nick="exported">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.h"
+             line="34">set when the item has exported all necessary objects
+  to PipeWire</doc>
+      </member>
+      <member name="export_error"
+              value="64"
+              c:identifier="WP_SI_FLAG_EXPORT_ERROR"
+              glib:nick="export-error">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.h"
+             line="36">set when there was an error in the export
+  process; to clear, call wp_session_item_unexport()</doc>
+      </member>
+      <member name="configured"
+              value="256"
+              c:identifier="WP_SI_FLAG_CONFIGURED"
+              glib:nick="configured">
+        <doc xml:space="preserve"
+             filename="../lib/wp/session-item.h"
+             line="38">must be set by subclasses when all the required
+  (%WP_SI_CONFIG_OPTION_REQUIRED) configuration options have been set</doc>
+      </member>
+      <member name="custom_start"
+              value="65536"
+              c:identifier="WP_SI_FLAG_CUSTOM_START"
+              glib:nick="custom-start">
+      </member>
+    </bitfield>
+    <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="../lib/wp/si-interfaces.c"
+           line="210">An interface for session items that provide a PipeWire endpoint link.</doc>
+      <source-position filename="../lib/wp/si-interfaces.h" line="108"/>
+      <prerequisite name="SessionItem"/>
+      <virtual-method name="get_in_stream" invoker="get_in_stream">
+        <source-position filename="../lib/wp/si-interfaces.h" line="107"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="285">the input stream that is linked by this link</doc>
+          <type name="SiStream" c:type="WpSiStream*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="283">the session item</doc>
+            <type name="SiLink" c:type="WpSiLink*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_out_stream" invoker="get_out_stream">
+        <source-position filename="../lib/wp/si-interfaces.h" line="106"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="270">the output stream that is linked by this link</doc>
+          <type name="SiStream" c:type="WpSiStream*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="268">the session item</doc>
+            <type name="SiLink" c:type="WpSiLink*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_properties" invoker="get_properties">
+        <source-position filename="../lib/wp/si-interfaces.h" line="104"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="255">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="../lib/wp/si-interfaces.c"
+                 line="253">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="../lib/wp/si-interfaces.c"
+             line="232">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="103"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="240">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="../lib/wp/si-interfaces.c"
+                 line="234">the session item</doc>
+            <type name="SiLink" c:type="WpSiLink*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_in_stream" c:identifier="wp_si_link_get_in_stream">
+        <source-position filename="../lib/wp/si-interfaces.h" line="120"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="285">the input stream that is linked by this link</doc>
+          <type name="SiStream" c:type="WpSiStream*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="283">the session item</doc>
+            <type name="SiLink" c:type="WpSiLink*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_out_stream" c:identifier="wp_si_link_get_out_stream">
+        <source-position filename="../lib/wp/si-interfaces.h" line="117"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="270">the output stream that is linked by this link</doc>
+          <type name="SiStream" c:type="WpSiStream*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="268">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">
+        <source-position filename="../lib/wp/si-interfaces.h" line="114"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="255">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="../lib/wp/si-interfaces.c"
+                 line="253">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="../lib/wp/si-interfaces.c"
+             line="232">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="111"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="240">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="../lib/wp/si-interfaces.c"
+                 line="234">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="108"/>
+      <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="103"/>
+          <return-value transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="240">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="../lib/wp/si-interfaces.c"
+                   line="234">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="104"/>
+          <return-value transfer-ownership="full" nullable="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="255">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="../lib/wp/si-interfaces.c"
+                   line="253">the session item</doc>
+              <type name="SiLink" c:type="WpSiLink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_out_stream">
+        <callback name="get_out_stream">
+          <source-position filename="../lib/wp/si-interfaces.h" line="106"/>
+          <return-value transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="270">the output stream that is linked by this link</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="268">the session item</doc>
+              <type name="SiLink" c:type="WpSiLink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_in_stream">
+        <callback name="get_in_stream">
+          <source-position filename="../lib/wp/si-interfaces.h" line="107"/>
+          <return-value transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="285">the input stream that is linked by this link</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="283">the session item</doc>
+              <type name="SiLink" c:type="WpSiLink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="SiPortInfo"
+               c:symbol-prefix="si_port_info"
+               c:type="WpSiPortInfo"
+               glib:type-name="WpSiPortInfo"
+               glib:get-type="wp_si_port_info_get_type"
+               glib:type-struct="SiPortInfoInterface">
+      <doc xml:space="preserve"
+           filename="../lib/wp/si-interfaces.c"
+           line="296">An interface for retrieving PipeWire port information from a session item.
+This information is used to create links in the nodes graph.
+
+This is normally implemented by the same session items that implement
+#WpSiStream. The standard link implementation expects to be able to cast
+a #WpSiStream into a #WpSiPortInfo.</doc>
+      <source-position filename="../lib/wp/si-interfaces.h" line="137"/>
+      <prerequisite name="SessionItem"/>
+      <virtual-method name="get_ports" invoker="get_ports">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="313">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 endpoint relationships. For example, a
+#WpSessionItem that is in control of an input (sink) adapter node may
+implement #WpSiStream and #WpSiPortInfo where the %NULL context will return
+the standard input ports and the "monitor" context will return the adapter's
+monitor ports. When linking this stream to another stream, the %NULL context
+will always be used, but the item may internally spawn a secondary
+#WpSessionItem that implements the "monitor" endpoint &amp; stream. That
+secondary stream may implement #WpSiPortInfo, chaining calls to the
+#WpSiPortInfo 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="136"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="351">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="../lib/wp/si-interfaces.c"
+                 line="315">the session item</doc>
+            <type name="SiPortInfo" c:type="WpSiPortInfo*"/>
+          </instance-parameter>
+          <parameter name="context"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="316">an optional context for the ports</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_ports" c:identifier="wp_si_port_info_get_ports">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="313">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 endpoint relationships. For example, a
+#WpSessionItem that is in control of an input (sink) adapter node may
+implement #WpSiStream and #WpSiPortInfo where the %NULL context will return
+the standard input ports and the "monitor" context will return the adapter's
+monitor ports. When linking this stream to another stream, the %NULL context
+will always be used, but the item may internally spawn a secondary
+#WpSessionItem that implements the "monitor" endpoint &amp; stream. That
+secondary stream may implement #WpSiPortInfo, chaining calls to the
+#WpSiPortInfo 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="140"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="351">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="../lib/wp/si-interfaces.c"
+                 line="315">the session item</doc>
+            <type name="SiPortInfo" c:type="WpSiPortInfo*"/>
+          </instance-parameter>
+          <parameter name="context"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="316">an optional context for the ports</doc>
+            <type name="utf8" c:type="const gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="SiPortInfoInterface"
+            c:type="WpSiPortInfoInterface"
+            glib:is-gtype-struct-for="SiPortInfo">
+      <source-position filename="../lib/wp/si-interfaces.h" line="137"/>
+      <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="136"/>
+          <return-value transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="351">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="../lib/wp/si-interfaces.c"
+                   line="315">the session item</doc>
+              <type name="SiPortInfo" c:type="WpSiPortInfo*"/>
+            </parameter>
+            <parameter name="context"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="316">an optional context for the ports</doc>
+              <type name="utf8" c:type="const gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="SiStream"
+               c:symbol-prefix="si_stream"
+               c:type="WpSiStream"
+               glib:type-name="WpSiStream"
+               glib:get-type="wp_si_stream_get_type"
+               glib:type-struct="SiStreamInterface">
+      <doc xml:space="preserve"
+           filename="../lib/wp/si-interfaces.c"
+           line="138">An interface for session items that provide a PipeWire endpoint stream.</doc>
+      <source-position filename="../lib/wp/si-interfaces.h" line="78"/>
+      <prerequisite name="SessionItem"/>
+      <virtual-method name="get_parent_endpoint" invoker="get_parent_endpoint">
+        <source-position filename="../lib/wp/si-interfaces.h" line="77"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="199">the endpoint that this stream belongs to</doc>
+          <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="197">the session item</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_properties" invoker="get_properties">
+        <source-position filename="../lib/wp/si-interfaces.h" line="75"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="184">the properties of the stream</doc>
+          <type name="Properties" c:type="WpProperties*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="182">the session item</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_registration_info"
+                      invoker="get_registration_info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="160">This should return information that is used for registering the stream,
+as a GVariant tuple of type (sa{ss}) that contains, in order:
+ - s: the stream's name
+ - a{ss}: additional properties to be added to the list of global properties</doc>
+        <source-position filename="../lib/wp/si-interfaces.h" line="74"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="169">registration info for the stream</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="162">the session item</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </instance-parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_parent_endpoint"
+              c:identifier="wp_si_stream_get_parent_endpoint">
+        <source-position filename="../lib/wp/si-interfaces.h" line="87"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="199">the endpoint that this stream belongs to</doc>
+          <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="197">the session item</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_properties" c:identifier="wp_si_stream_get_properties">
+        <source-position filename="../lib/wp/si-interfaces.h" line="84"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="184">the properties of the stream</doc>
+          <type name="Properties" c:type="WpProperties*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="182">the session item</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_registration_info"
+              c:identifier="wp_si_stream_get_registration_info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="160">This should return information that is used for registering the stream,
+as a GVariant tuple of type (sa{ss}) that contains, in order:
+ - s: the stream's name
+ - a{ss}: additional properties to be added to the list of global properties</doc>
+        <source-position filename="../lib/wp/si-interfaces.h" line="81"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="169">registration info for the stream</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="162">the session item</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <glib:signal name="stream-properties-changed" when="last">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <interface name="SiStreamAcquisition"
+               c:symbol-prefix="si_stream_acquisition"
+               c:type="WpSiStreamAcquisition"
+               glib:type-name="WpSiStreamAcquisition"
+               glib:get-type="wp_si_stream_acquisition_get_type"
+               glib:type-struct="SiStreamAcquisitionInterface">
+      <doc xml:space="preserve"
+           filename="../lib/wp/si-interfaces.c"
+           line="363">This interface provides a way to request a stream for linking before doing
+so. This allows endpoint implementations to apply internal policy rules
+(such as, streams that can only be linked once or mutually exclusive streams).
+
+A #WpSiStreamAcquisition is associated directly with a #WpSiEndpoint via
+wp_si_endpoint_get_stream_acquisition(). In order to allow switching policies,
+it is recommended that endpoint implementations use a separate session item
+to implement this interface and allow replacing it.</doc>
+      <source-position filename="../lib/wp/si-interfaces.h" line="164"/>
+      <prerequisite name="SessionItem"/>
+      <virtual-method name="acquire" invoker="acquire">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="383">Acquires the @stream 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 stream), this operation should finish with a
+delay. It is safe to assume that after this operation completes,
+the stream will be linked immediately.</doc>
+        <source-position filename="../lib/wp/si-interfaces.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="../lib/wp/si-interfaces.c"
+                 line="385">the session item</doc>
+            <type name="SiStreamAcquisition" c:type="WpSiStreamAcquisition*"/>
+          </instance-parameter>
+          <parameter name="acquisitor" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="386">the link that is trying to acquire a stream</doc>
+            <type name="SiLink" c:type="WpSiLink*"/>
+          </parameter>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="387">the stream that is being acquired</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     scope="async"
+                     closure="3">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="388">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="../lib/wp/si-interfaces.c"
+                 line="389">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="../lib/wp/si-interfaces.c"
+             line="413">Finishes the operation started by wp_si_stream_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="159"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="422">%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="../lib/wp/si-interfaces.c"
+                 line="415">the session item</doc>
+            <type name="SiStreamAcquisition" c:type="WpSiStreamAcquisition*"/>
+          </instance-parameter>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="416">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="../lib/wp/si-interfaces.c"
+             line="436">Releases the @stream, which means that it is being unlinked.</doc>
+        <source-position filename="../lib/wp/si-interfaces.h" line="162"/>
+        <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="../lib/wp/si-interfaces.c"
+                 line="438">the session item</doc>
+            <type name="SiStreamAcquisition" c:type="WpSiStreamAcquisition*"/>
+          </instance-parameter>
+          <parameter name="acquisitor" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="439">the link that had previously acquired the stream</doc>
+            <type name="SiLink" c:type="WpSiLink*"/>
+          </parameter>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="440">the stream that is being released</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="acquire" c:identifier="wp_si_stream_acquisition_acquire">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="383">Acquires the @stream 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 stream), this operation should finish with a
+delay. It is safe to assume that after this operation completes,
+the stream will be linked immediately.</doc>
+        <source-position filename="../lib/wp/si-interfaces.h" line="167"/>
+        <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="../lib/wp/si-interfaces.c"
+                 line="385">the session item</doc>
+            <type name="SiStreamAcquisition" c:type="WpSiStreamAcquisition*"/>
+          </instance-parameter>
+          <parameter name="acquisitor" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="386">the link that is trying to acquire a stream</doc>
+            <type name="SiLink" c:type="WpSiLink*"/>
+          </parameter>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="387">the stream that is being acquired</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     scope="async"
+                     closure="3">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="388">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="../lib/wp/si-interfaces.c"
+                 line="389">user data for @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="acquire_finish"
+              c:identifier="wp_si_stream_acquisition_acquire_finish"
+              throws="1">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="413">Finishes the operation started by wp_si_stream_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="172"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/si-interfaces.c"
+               line="422">%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="../lib/wp/si-interfaces.c"
+                 line="415">the session item</doc>
+            <type name="SiStreamAcquisition" c:type="WpSiStreamAcquisition*"/>
+          </instance-parameter>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="416">the async result</doc>
+            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release" c:identifier="wp_si_stream_acquisition_release">
+        <doc xml:space="preserve"
+             filename="../lib/wp/si-interfaces.c"
+             line="436">Releases the @stream, which means that it is being unlinked.</doc>
+        <source-position filename="../lib/wp/si-interfaces.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="../lib/wp/si-interfaces.c"
+                 line="438">the session item</doc>
+            <type name="SiStreamAcquisition" c:type="WpSiStreamAcquisition*"/>
+          </instance-parameter>
+          <parameter name="acquisitor" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="439">the link that had previously acquired the stream</doc>
+            <type name="SiLink" c:type="WpSiLink*"/>
+          </parameter>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="440">the stream that is being released</doc>
+            <type name="SiStream" c:type="WpSiStream*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="SiStreamAcquisitionInterface"
+            c:type="WpSiStreamAcquisitionInterface"
+            glib:is-gtype-struct-for="SiStreamAcquisition">
+      <source-position filename="../lib/wp/si-interfaces.h" line="164"/>
+      <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="157"/>
+          <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="../lib/wp/si-interfaces.c"
+                   line="385">the session item</doc>
+              <type name="SiStreamAcquisition"
+                    c:type="WpSiStreamAcquisition*"/>
+            </parameter>
+            <parameter name="acquisitor" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="386">the link that is trying to acquire a stream</doc>
+              <type name="SiLink" c:type="WpSiLink*"/>
+            </parameter>
+            <parameter name="stream" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="387">the stream that is being acquired</doc>
+              <type name="SiStream" c:type="WpSiStream*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1"
+                       scope="async"
+                       closure="4">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="388">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="../lib/wp/si-interfaces.c"
+                   line="389">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="159"/>
+          <return-value transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="422">%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="../lib/wp/si-interfaces.c"
+                   line="415">the session item</doc>
+              <type name="SiStreamAcquisition"
+                    c:type="WpSiStreamAcquisition*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="416">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="162"/>
+          <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="../lib/wp/si-interfaces.c"
+                   line="438">the session item</doc>
+              <type name="SiStreamAcquisition"
+                    c:type="WpSiStreamAcquisition*"/>
+            </parameter>
+            <parameter name="acquisitor" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="439">the link that had previously acquired the stream</doc>
+              <type name="SiLink" c:type="WpSiLink*"/>
+            </parameter>
+            <parameter name="stream" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="440">the stream that is being released</doc>
+              <type name="SiStream" c:type="WpSiStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="SiStreamInterface"
+            c:type="WpSiStreamInterface"
+            glib:is-gtype-struct-for="SiStream">
+      <source-position filename="../lib/wp/si-interfaces.h" line="78"/>
+      <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="74"/>
+          <return-value transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="169">registration info for the stream</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="162">the session item</doc>
+              <type name="SiStream" c:type="WpSiStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_properties">
+        <callback name="get_properties">
+          <source-position filename="../lib/wp/si-interfaces.h" line="75"/>
+          <return-value transfer-ownership="full" nullable="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="184">the properties of the stream</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="182">the session item</doc>
+              <type name="SiStream" c:type="WpSiStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_parent_endpoint">
+        <callback name="get_parent_endpoint">
+          <source-position filename="../lib/wp/si-interfaces.h" line="77"/>
+          <return-value transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/si-interfaces.c"
+                 line="199">the endpoint that this stream belongs to</doc>
+            <type name="SiEndpoint" c:type="WpSiEndpoint*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:space="preserve"
+                   filename="../lib/wp/si-interfaces.c"
+                   line="197">the session item</doc>
+              <type name="SiStream" c:type="WpSiStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="SpaDevice"
+           c:symbol-prefix="spa_device"
+           c:type="WpSpaDevice"
+           parent="GObject.Object"
+           glib:type-name="WpSpaDevice"
+           glib:get-type="wp_spa_device_get_type"
+           glib:type-struct="SpaDeviceClass">
+      <source-position filename="../lib/wp/device.h" line="40"/>
+      <constructor name="new_from_spa_factory"
+                   c:identifier="wp_spa_device_new_from_spa_factory">
+        <doc xml:space="preserve"
+             filename="../lib/wp/device.c"
+             line="446">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_proxy_augment() requesting %WP_PROXY_FEATURE_BOUND and
+wait for the operation to complete.</doc>
+        <source-position filename="../lib/wp/device.h" line="47"/>
+        <return-value transfer-ownership="full" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/device.c"
+               line="460">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="../lib/wp/device.c"
+                 line="448">the wireplumber core</doc>
+            <type name="Core" c:type="WpCore*"/>
+          </parameter>
+          <parameter name="factory_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/device.c"
+                 line="449">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="../lib/wp/device.c"
+                 line="450">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">
+        <source-position filename="../lib/wp/device.h" line="43"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/device.c"
+               line="432">A new #WpSpaDevice</doc>
+          <type name="SpaDevice" c:type="WpSpaDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="core" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/device.c"
+                 line="428">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="../lib/wp/device.c"
+                 line="429">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="../lib/wp/device.c"
+                 line="430">additional properties of the device</doc>
+            <type name="Properties" c:type="WpProperties*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="activate" c:identifier="wp_spa_device_activate">
+        <source-position filename="../lib/wp/device.h" line="62"/>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="SpaDevice" c:type="WpSpaDevice*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="export" c:identifier="wp_spa_device_export">
+        <source-position filename="../lib/wp/device.h" line="54"/>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="SpaDevice" c:type="WpSpaDevice*"/>
+          </instance-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="2">
+            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="export_finish"
+              c:identifier="wp_spa_device_export_finish"
+              throws="1">
+        <source-position filename="../lib/wp/device.h" line="58"/>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="SpaDevice" c:type="WpSpaDevice*"/>
+          </instance-parameter>
+          <parameter name="res" transfer-ownership="none">
+            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bound_id" c:identifier="wp_spa_device_get_bound_id">
+        <source-position filename="../lib/wp/device.h" line="51"/>
+        <return-value transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="SpaDevice" c:type="WpSpaDevice*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <property name="core"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Core"/>
+      </property>
+      <property name="properties"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <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="object-info" when="first">
+        <doc xml:space="preserve"
+             filename="../lib/wp/device.c"
+             line="395">This signal is emitted when the device is creating or destroying a managed
+object. The handler is expected to actually construct or destroy the
+object using the requested SPA @factory and with the given @properties.
+
+The handler may also use @parent_props to enrich the properties set
+that will be assigned on the object. @parent_props contains all the
+properties that this device object has.
+
+When the object is being created, @type can either be %WP_TYPE_DEVICE
+or %WP_TYPE_NODE. The handler is free to create a substitute of those,
+like %WP_TYPE_SPA_DEVICE instead of %WP_TYPE_DEVICE, depending on the
+use case.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/device.c"
+                 line="398">the id of the managed object</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/device.c"
+                 line="399">the #WpProxy subclass type that the managed object should have,
+  or %G_TYPE_NONE if the object is being destroyed</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="factory"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/device.c"
+                 line="401">the name of the SPA factory to use to construct
+   the managed object, or %NULL if the object is being destroyed</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="properties"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/device.c"
+                 line="403">additional properties that the managed object
+   should have, or %NULL if the object is being destroyed</doc>
+            <type name="Properties"/>
+          </parameter>
+          <parameter name="parent_props" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/device.c"
+                 line="405">the properties of the device itself</doc>
+            <type name="Properties"/>
+          </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="40"/>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <record name="SpaPod"
+            c:type="WpSpaPod"
+            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="28"/>
+      <constructor name="new_boolean" c:identifier="wp_spa_pod_new_boolean">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="411">Creates a spa pod of type boolean</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="58"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="417">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="../lib/wp/spa-pod.c"
+                 line="413">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="../lib/wp/spa-pod.c"
+             line="553">Creates a spa pod of type bytes</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="79"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="560">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="../lib/wp/spa-pod.c"
+                 line="555">the bytes value</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="556">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="../lib/wp/spa-pod.c"
+             line="665">Creates a spa pod of type choice</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="94"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="672">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="../lib/wp/spa-pod.c"
+                 line="667">the type name of the choice type</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="668">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="../lib/wp/spa-pod.c"
+             line="687">This is the `va_list` version of wp_spa_pod_new_choice()</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="98"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="694">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="../lib/wp/spa-pod.c"
+                 line="689">the type name of the choice type</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="690">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="../lib/wp/spa-pod.c"
+             line="506">Creates a spa pod of type double</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="73"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="512">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="../lib/wp/spa-pod.c"
+                 line="508">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="../lib/wp/spa-pod.c"
+             line="604">Creates a spa pod of type Fd</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="85"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="610">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="../lib/wp/spa-pod.c"
+                 line="606">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="../lib/wp/spa-pod.c"
+             line="487">Creates a spa pod of type float</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="70"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="493">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="../lib/wp/spa-pod.c"
+                 line="489">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="../lib/wp/spa-pod.c"
+             line="644">Creates a spa pod of type fraction</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="91"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="651">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="../lib/wp/spa-pod.c"
+                 line="646">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="../lib/wp/spa-pod.c"
+                 line="647">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="../lib/wp/spa-pod.c"
+             line="430">Creates a spa pod of type Id</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="61"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="436">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="../lib/wp/spa-pod.c"
+                 line="432">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="../lib/wp/spa-pod.c"
+             line="449">Creates a spa pod of type int</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="64"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="455">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="../lib/wp/spa-pod.c"
+                 line="451">the int value</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_long" c:identifier="wp_spa_pod_new_long">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="468">Creates a spa pod of type long</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="67"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="474">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="../lib/wp/spa-pod.c"
+                 line="470">the long value</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_none" c:identifier="wp_spa_pod_new_none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="393">Creates a spa pod of type None</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="55"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="398">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="../lib/wp/spa-pod.c"
+             line="704">Creates a spa pod of type object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="101"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="712">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="../lib/wp/spa-pod.c"
+                 line="706">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="../lib/wp/spa-pod.c"
+                 line="707">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="../lib/wp/spa-pod.c"
+                 line="708">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="../lib/wp/spa-pod.c"
+             line="727">This is the `va_list` version of wp_spa_pod_new_object()</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="105"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="735">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="../lib/wp/spa-pod.c"
+                 line="729">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="../lib/wp/spa-pod.c"
+                 line="730">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="../lib/wp/spa-pod.c"
+                 line="731">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="../lib/wp/spa-pod.c"
+             line="580">Creates a spa pod of type pointer</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="82"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="587">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="../lib/wp/spa-pod.c"
+                 line="582">the type name 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="../lib/wp/spa-pod.c"
+                 line="583">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="../lib/wp/spa-pod.c"
+             line="623">Creates a spa pod of type rectangle</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="88"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="630">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="../lib/wp/spa-pod.c"
+                 line="625">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="../lib/wp/spa-pod.c"
+                 line="626">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="../lib/wp/spa-pod.c"
+             line="747">Creates a spa pod of type sequence</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="109"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="754">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="../lib/wp/spa-pod.c"
+                 line="749">the unit of the sequence</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="750">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="../lib/wp/spa-pod.c"
+             line="769">This is the `va_list` version of wp_spa_pod_new_sequence()</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="112"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="776">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="../lib/wp/spa-pod.c"
+                 line="771">the unit of the sequence</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="772">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="../lib/wp/spa-pod.c"
+             line="525">Creates a spa pod of type string</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="76"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="531">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="../lib/wp/spa-pod.c"
+                 line="527">the string value</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="wp_spa_pod_copy">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="325">Copies a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="46"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="331">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="../lib/wp/spa-pod.c"
+                 line="327">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="../lib/wp/spa-pod.c"
+             line="369">@self (transfer full): a spa pod 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/spa-pod.h" line="52"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="377">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="none">
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="equal" c:identifier="wp_spa_pod_equal">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1577">Checks whether two spa pod objects have the same value or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="249"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1584">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="../lib/wp/spa-pod.c"
+                 line="1579">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="pod" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1580">the pod with the value to be compared with</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array_child" c:identifier="wp_spa_pod_get_array_child">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1826">Gets the child of a spa pod array object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="277"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1832">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="../lib/wp/spa-pod.c"
+                 line="1828">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="../lib/wp/spa-pod.c"
+             line="1067">Gets the boolean value of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="175"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1074">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="../lib/wp/spa-pod.c"
+                 line="1069">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="../lib/wp/spa-pod.c"
+                 line="1070">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="../lib/wp/spa-pod.c"
+             line="1192">Gets the bytes value and its len of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="196"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1200">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="../lib/wp/spa-pod.c"
+                 line="1194">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="../lib/wp/spa-pod.c"
+                 line="1195">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="../lib/wp/spa-pod.c"
+                 line="1196">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="../lib/wp/spa-pod.c"
+             line="1811">Gets the child of a spa pod choice object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="274"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1817">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="../lib/wp/spa-pod.c"
+                 line="1813">a spa pod choice object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_choice_type_name"
+              c:identifier="wp_spa_pod_get_choice_type_name">
+        <source-position filename="../lib/wp/spa-pod.h" line="40"/>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <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="../lib/wp/spa-pod.c"
+             line="1782">Gets the offset, type name and spa pod value of a spa pod control</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="270"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1791">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="../lib/wp/spa-pod.c"
+                 line="1784">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="../lib/wp/spa-pod.c"
+                 line="1785">the offset of the control</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="type_name"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     optional="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1786">the type name of the control</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="../lib/wp/spa-pod.c"
+                 line="1787">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="../lib/wp/spa-pod.c"
+             line="1158">Gets the double value of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="190"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1165">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="../lib/wp/spa-pod.c"
+                 line="1160">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="../lib/wp/spa-pod.c"
+                 line="1161">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="../lib/wp/spa-pod.c"
+             line="1239">Gets the Fd value 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="../lib/wp/spa-pod.c"
+               line="1246">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="../lib/wp/spa-pod.c"
+                 line="1241">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="../lib/wp/spa-pod.c"
+                 line="1242">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="../lib/wp/spa-pod.c"
+             line="1141">Gets the float value of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="187"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1148">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="../lib/wp/spa-pod.c"
+                 line="1143">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="../lib/wp/spa-pod.c"
+                 line="1144">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="../lib/wp/spa-pod.c"
+             line="1279">Gets the fractions's numerator and denominator 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="../lib/wp/spa-pod.c"
+               line="1287">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="../lib/wp/spa-pod.c"
+                 line="1281">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="../lib/wp/spa-pod.c"
+                 line="1282">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="../lib/wp/spa-pod.c"
+                 line="1283">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="../lib/wp/spa-pod.c"
+             line="1087">Gets the Id value of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="178"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1094">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="../lib/wp/spa-pod.c"
+                 line="1089">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="../lib/wp/spa-pod.c"
+                 line="1090">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="../lib/wp/spa-pod.c"
+             line="1107">Gets the int value of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="181"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1114">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="../lib/wp/spa-pod.c"
+                 line="1109">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="../lib/wp/spa-pod.c"
+                 line="1110">the int value</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long" c:identifier="wp_spa_pod_get_long">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1124">Gets the long value of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="184"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1131">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="../lib/wp/spa-pod.c"
+                 line="1126">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="../lib/wp/spa-pod.c"
+                 line="1127">the long value</doc>
+            <type name="glong" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="wp_spa_pod_get_object"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1669">Gets the object properties values of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="252"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1678">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="../lib/wp/spa-pod.c"
+                 line="1671">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="../lib/wp/spa-pod.c"
+                 line="1672">the type name of the object type</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+          <parameter name="id_name"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1673">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="../lib/wp/spa-pod.c"
+                 line="1674">the list of the object properties values, followed by %NULL</doc>
+            <varargs/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object_type_name"
+              c:identifier="wp_spa_pod_get_object_type_name">
+        <source-position filename="../lib/wp/spa-pod.h" line="43"/>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_object_valist"
+              c:identifier="wp_spa_pod_get_object_valist"
+              introspectable="0">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1692">This is the `va_list` version of wp_spa_pod_get_object()</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="256"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1701">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="../lib/wp/spa-pod.c"
+                 line="1694">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="../lib/wp/spa-pod.c"
+                 line="1695">the type name of the object type</doc>
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+          <parameter name="id_name"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1696">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="../lib/wp/spa-pod.c"
+                 line="1697">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="../lib/wp/spa-pod.c"
+             line="1211">Gets the pointer value and its type name of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="200"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1219">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="../lib/wp/spa-pod.c"
+                 line="1213">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="type_name"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1214">the type name of the pointer value</doc>
+            <type name="utf8" c:type="const char**"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     nullable="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1215">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="../lib/wp/spa-pod.c"
+             line="1756">Gets the name, flags and spa pod value of a spa pod property</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="266"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1764">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="../lib/wp/spa-pod.c"
+                 line="1758">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="../lib/wp/spa-pod.c"
+                 line="1759">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="../lib/wp/spa-pod.c"
+                 line="1760">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="../lib/wp/spa-pod.c"
+             line="1256">Gets the rectangle's width and height value of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="207"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1264">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="../lib/wp/spa-pod.c"
+                 line="1258">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="../lib/wp/spa-pod.c"
+                 line="1259">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="../lib/wp/spa-pod.c"
+                 line="1260">the rectangle's height value</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string" c:identifier="wp_spa_pod_get_string">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1175">Gets the string value of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="193"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1182">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="../lib/wp/spa-pod.c"
+                 line="1177">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="../lib/wp/spa-pod.c"
+                 line="1178">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="../lib/wp/spa-pod.c"
+             line="1716">Gets the struct's values of a spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="260"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1723">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="../lib/wp/spa-pod.c"
+                 line="1718">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="../lib/wp/spa-pod.c"
+                 line="1719">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="../lib/wp/spa-pod.c"
+             line="1736">This is the `va_list` version of wp_spa_pod_get_struct()</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="263"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1743">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="../lib/wp/spa-pod.c"
+                 line="1738">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="../lib/wp/spa-pod.c"
+                 line="1739">the variable arguments passed to wp_spa_pod_get_struct()</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_type_name" c:identifier="wp_spa_pod_get_type_name">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="283">Gets the type name of the spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="37"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="289">the type name of the spa pod object</doc>
+          <type name="utf8" c:type="const char*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="285">a spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="is_array" c:identifier="wp_spa_pod_is_array">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="969">Checks wether the spa pod is of type array or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="154"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="975">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="../lib/wp/spa-pod.c"
+                 line="971">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="../lib/wp/spa-pod.c"
+             line="800">Checks wether the spa pod is of type boolean or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="118"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="806">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="../lib/wp/spa-pod.c"
+                 line="802">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="../lib/wp/spa-pod.c"
+             line="899">Checks wether the spa pod is of type bytes or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="139"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="905">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="../lib/wp/spa-pod.c"
+                 line="901">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="../lib/wp/spa-pod.c"
+             line="983">Checks wether the spa pod is of type choice or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="157"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="989">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="../lib/wp/spa-pod.c"
+                 line="985">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="../lib/wp/spa-pod.c"
+             line="1053">Checks wether the spa pod is of type control or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="172"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1059">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="../lib/wp/spa-pod.c"
+                 line="1055">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="../lib/wp/spa-pod.c"
+             line="871">Checks wether the spa pod is of type double or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="133"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="877">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="../lib/wp/spa-pod.c"
+                 line="873">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="../lib/wp/spa-pod.c"
+             line="927">Checks wether the spa pod is of type Fd or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="145"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="933">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="../lib/wp/spa-pod.c"
+                 line="929">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="../lib/wp/spa-pod.c"
+             line="857">Checks wether the spa pod is of type float or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="130"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="863">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="../lib/wp/spa-pod.c"
+                 line="859">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="../lib/wp/spa-pod.c"
+             line="955">Checks wether the spa pod is of type fraction or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="151"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="961">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="../lib/wp/spa-pod.c"
+                 line="957">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="../lib/wp/spa-pod.c"
+             line="815">Checks wether the spa pod is of type Id or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="121"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="821">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="../lib/wp/spa-pod.c"
+                 line="817">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="../lib/wp/spa-pod.c"
+             line="829">Checks wether the spa pod is of type int or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="124"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="835">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="../lib/wp/spa-pod.c"
+                 line="831">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="../lib/wp/spa-pod.c"
+             line="843">Checks wether the spa pod is of type long or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="127"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="849">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="../lib/wp/spa-pod.c"
+                 line="845">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="../lib/wp/spa-pod.c"
+             line="786">Checks wether the spa pod is of type none or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="115"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="792">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="../lib/wp/spa-pod.c"
+                 line="788">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="../lib/wp/spa-pod.c"
+             line="997">Checks wether the spa pod is of type object or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="160"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1003">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="../lib/wp/spa-pod.c"
+                 line="999">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="../lib/wp/spa-pod.c"
+             line="913">Checks wether the spa pod is of type pointer or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="142"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="919">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="../lib/wp/spa-pod.c"
+                 line="915">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="../lib/wp/spa-pod.c"
+             line="1039">Checks wether the spa pod is of type property or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="169"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1045">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="../lib/wp/spa-pod.c"
+                 line="1041">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="../lib/wp/spa-pod.c"
+             line="941">Checks wether the spa pod is of type rectangle or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="148"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="947">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="../lib/wp/spa-pod.c"
+                 line="943">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="../lib/wp/spa-pod.c"
+             line="1025">Checks wether the spa pod is of type sequence or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="166"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1031">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="../lib/wp/spa-pod.c"
+                 line="1027">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="../lib/wp/spa-pod.c"
+             line="885">Checks wether the spa pod is of type string or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="136"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="891">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="../lib/wp/spa-pod.c"
+                 line="887">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="../lib/wp/spa-pod.c"
+             line="1011">Checks wether the spa pod is of type struct or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="163"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1017">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="../lib/wp/spa-pod.c"
+                 line="1013">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="../lib/wp/spa-pod.c"
+             line="354">Checks if the pod is the unique owner of its data or not</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="49"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="360">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="../lib/wp/spa-pod.c"
+                 line="356">a spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="iterate" c:identifier="wp_spa_pod_iterate">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="3059">Creates a new iterator for a spa pod object.</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="280"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="3065">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="../lib/wp/spa-pod.c"
+                 line="3061">a spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="wp_spa_pod_ref">
+        <source-position filename="../lib/wp/spa-pod.h" line="31"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="133">@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="../lib/wp/spa-pod.c"
+                 line="131">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="../lib/wp/spa-pod.c"
+             line="1302">Sets a boolean value in the spa pod object.</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="214"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1309">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="../lib/wp/spa-pod.c"
+                 line="1304">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1305">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="../lib/wp/spa-pod.c"
+             line="1392">Sets a double value in the spa pod object.</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="229"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1399">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="../lib/wp/spa-pod.c"
+                 line="1394">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1395">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="../lib/wp/spa-pod.c"
+             line="1438">Sets a Fd 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="../lib/wp/spa-pod.c"
+               line="1445">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="../lib/wp/spa-pod.c"
+                 line="1440">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1441">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="../lib/wp/spa-pod.c"
+             line="1374">Sets a float value in the spa pod object.</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="226"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1381">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="../lib/wp/spa-pod.c"
+                 line="1376">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1377">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="../lib/wp/spa-pod.c"
+             line="1476">Sets the numerator and denominator values of a fraction 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="../lib/wp/spa-pod.c"
+               line="1484">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="../lib/wp/spa-pod.c"
+                 line="1478">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="num" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1479">the numerator value of the farction</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="denom" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1480">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="../lib/wp/spa-pod.c"
+             line="1320">Sets an Id value in the spa pod object.</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="217"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1327">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="../lib/wp/spa-pod.c"
+                 line="1322">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1323">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="../lib/wp/spa-pod.c"
+             line="1338">Sets an int value in the spa pod object.</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="220"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1345">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="../lib/wp/spa-pod.c"
+                 line="1340">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1341">the int value</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_long" c:identifier="wp_spa_pod_set_long">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1356">Sets a long value in the spa pod object.</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="223"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1363">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="../lib/wp/spa-pod.c"
+                 line="1358">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1359">the long value</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pod" c:identifier="wp_spa_pod_set_pod">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1496">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="246"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1504">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="../lib/wp/spa-pod.c"
+                 line="1498">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="pod" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1499">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="../lib/wp/spa-pod.c"
+             line="1410">Sets a pointer value with its type name in the spa pod object.</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="232"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1418">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="../lib/wp/spa-pod.c"
+                 line="1412">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="../lib/wp/spa-pod.c"
+                 line="1413">the type name 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="../lib/wp/spa-pod.c"
+                 line="1414">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="../lib/wp/spa-pod.c"
+             line="1456">Sets the width and height values of a rectangle 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="../lib/wp/spa-pod.c"
+               line="1464">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="../lib/wp/spa-pod.c"
+                 line="1458">the spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="1459">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="../lib/wp/spa-pod.c"
+                 line="1460">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="../lib/wp/spa-pod.c"
+             line="150">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="34"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="152">a spa pod object</doc>
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="SpaPodBuilder"
+            c:type="WpSpaPodBuilder"
+            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="294"/>
+      <constructor name="new_array"
+                   c:identifier="wp_spa_pod_builder_new_array">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1872">Creates a spa pod builder of type array</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="303"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1877">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="../lib/wp/spa-pod.c"
+             line="1888">Creates a spa pod builder of type choice</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="306"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1894">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="../lib/wp/spa-pod.c"
+                 line="1890">the type name of the choice type</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="../lib/wp/spa-pod.c"
+             line="1918">Creates a spa pod builder of type object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="309"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1925">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="../lib/wp/spa-pod.c"
+                 line="1920">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="../lib/wp/spa-pod.c"
+                 line="1921">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="../lib/wp/spa-pod.c"
+             line="1971">Creates a spa pod builder of type sequence</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="316"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1976">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="../lib/wp/spa-pod.c"
+             line="1954">Creates a spa pod builder of type struct</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="313"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1959">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="../lib/wp/spa-pod.c"
+             line="2229">Adds a list of values into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="375"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2231">the spa pod builder object</doc>
+            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
+          </instance-parameter>
+          <parameter name="..." transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="2232">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="../lib/wp/spa-pod.c"
+             line="2000">Adds a boolean value into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="322"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2002">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="../lib/wp/spa-pod.c"
+                 line="2003">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="../lib/wp/spa-pod.c"
+             line="2091">Adds a bytes value with its length 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="../lib/wp/spa-pod.c"
+                 line="2093">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="../lib/wp/spa-pod.c"
+                 line="2094">the bytes value</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="2095">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="../lib/wp/spa-pod.c"
+             line="2210">Adds a control into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="371"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2212">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="../lib/wp/spa-pod.c"
+                 line="2213">the offset of the control</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="type_name" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="2214">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="../lib/wp/spa-pod.c"
+             line="2065">Adds a double 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="../lib/wp/spa-pod.c"
+                 line="2067">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="../lib/wp/spa-pod.c"
+                 line="2068">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="../lib/wp/spa-pod.c"
+             line="2125">Adds a Fd value into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="351"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2127">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="../lib/wp/spa-pod.c"
+                 line="2128">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="../lib/wp/spa-pod.c"
+             line="2052">Adds a float 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="../lib/wp/spa-pod.c"
+                 line="2054">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="../lib/wp/spa-pod.c"
+                 line="2055">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="../lib/wp/spa-pod.c"
+             line="2153">Adds the numerator and denominator values of a fraction into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="358"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2155">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="../lib/wp/spa-pod.c"
+                 line="2156">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="../lib/wp/spa-pod.c"
+                 line="2157">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="../lib/wp/spa-pod.c"
+             line="2013">Adds a Id value into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="325"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2015">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="../lib/wp/spa-pod.c"
+                 line="2016">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="../lib/wp/spa-pod.c"
+             line="2026">Adds a int value into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="328"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2028">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="../lib/wp/spa-pod.c"
+                 line="2029">the int value</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_long" c:identifier="wp_spa_pod_builder_add_long">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="2039">Adds a long 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="../lib/wp/spa-pod.c"
+                 line="2041">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="../lib/wp/spa-pod.c"
+                 line="2042">the long value</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_none" c:identifier="wp_spa_pod_builder_add_none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="1988">Adds a none value into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="319"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="1990">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="../lib/wp/spa-pod.c"
+             line="2168">Adds a pod value into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="362"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2170">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="../lib/wp/spa-pod.c"
+                 line="2171">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="../lib/wp/spa-pod.c"
+             line="2106">Adds a pointer value with its type name into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="347"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2108">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="../lib/wp/spa-pod.c"
+                 line="2109">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="../lib/wp/spa-pod.c"
+                 line="2110">the pointer vaue</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="../lib/wp/spa-pod.c"
+             line="2181">Adds a property into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="365"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2183">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="../lib/wp/spa-pod.c"
+                 line="2184">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="../lib/wp/spa-pod.c"
+             line="2197">Adds a property into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="368"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2199">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="../lib/wp/spa-pod.c"
+                 line="2200">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="../lib/wp/spa-pod.c"
+             line="2138">Adds the width and height values of a rectangle into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="354"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2140">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="../lib/wp/spa-pod.c"
+                 line="2141">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="../lib/wp/spa-pod.c"
+                 line="2142">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="../lib/wp/spa-pod.c"
+             line="2078">Adds a string 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="../lib/wp/spa-pod.c"
+                 line="2080">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="../lib/wp/spa-pod.c"
+                 line="2081">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="../lib/wp/spa-pod.c"
+             line="2245">Adds a list of values into the builder</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="378"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2247">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="../lib/wp/spa-pod.c"
+                 line="2248">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="../lib/wp/spa-pod.c"
+             line="2329">Ends the builder process and returns the constructed spa pod object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="381"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2335">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="../lib/wp/spa-pod.c"
+                 line="2331">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">
+        <source-position filename="../lib/wp/spa-pod.h" line="297"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="1845">@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="../lib/wp/spa-pod.c"
+                 line="1843">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="../lib/wp/spa-pod.c"
+             line="1859">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="300"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="1861">a spa pod builder object</doc>
+            <type name="SpaPodBuilder" c:type="WpSpaPodBuilder*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="SpaPodParser"
+            c:type="WpSpaPodParser"
+            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="395"/>
+      <constructor name="new_object"
+                   c:identifier="wp_spa_pod_parser_new_object">
+        <source-position filename="../lib/wp/spa-pod.h" line="404"/>
+        <return-value transfer-ownership="full">
+          <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pod" transfer-ownership="none">
+            <type name="SpaPod" c:type="WpSpaPod*"/>
+          </parameter>
+          <parameter name="type_name" transfer-ownership="none">
+            <type name="utf8" c:type="const char*"/>
+          </parameter>
+          <parameter name="id_name" transfer-ownership="none">
+            <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="../lib/wp/spa-pod.c"
+             line="2428">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="408"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2435">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="../lib/wp/spa-pod.c"
+                 line="2430">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="../lib/wp/spa-pod.c"
+             line="2785">Ends the parser process</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="462"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2787">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="../lib/wp/spa-pod.c"
+             line="2691">Gets a list of values 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="../lib/wp/spa-pod.c"
+               line="2698">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="../lib/wp/spa-pod.c"
+                 line="2693">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="../lib/wp/spa-pod.c"
+                 line="2694">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="../lib/wp/spa-pod.c"
+             line="2449">Gets the boolean value from a spa pod parser</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="411"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2456">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="../lib/wp/spa-pod.c"
+                 line="2451">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="../lib/wp/spa-pod.c"
+                 line="2452">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="../lib/wp/spa-pod.c"
+             line="2564">Gets the bytes value and its length from a spa pod parser object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="433"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2572">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="../lib/wp/spa-pod.c"
+                 line="2566">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="../lib/wp/spa-pod.c"
+                 line="2567">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="../lib/wp/spa-pod.c"
+                 line="2568">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="../lib/wp/spa-pod.c"
+             line="2532">Gets the double value from a spa pod parser object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="426"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2539">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="../lib/wp/spa-pod.c"
+                 line="2534">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="../lib/wp/spa-pod.c"
+                 line="2535">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="../lib/wp/spa-pod.c"
+             line="2608">Gets the Fd value from a spa pod parser object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="441"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2615">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="../lib/wp/spa-pod.c"
+                 line="2610">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="../lib/wp/spa-pod.c"
+                 line="2611">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="../lib/wp/spa-pod.c"
+             line="2516">Gets the float value from a spa pod parser object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="423"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2523">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="../lib/wp/spa-pod.c"
+                 line="2518">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="../lib/wp/spa-pod.c"
+                 line="2519">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="../lib/wp/spa-pod.c"
+             line="2647">Gets the fractions's numerator and denominator value 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="../lib/wp/spa-pod.c"
+               line="2656">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="../lib/wp/spa-pod.c"
+                 line="2649">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="../lib/wp/spa-pod.c"
+                 line="2650">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="../lib/wp/spa-pod.c"
+                 line="2651">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="../lib/wp/spa-pod.c"
+             line="2468">Gets the Id value from a spa pod parser object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="414"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2475">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="../lib/wp/spa-pod.c"
+                 line="2470">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="../lib/wp/spa-pod.c"
+                 line="2471">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="../lib/wp/spa-pod.c"
+             line="2484">Gets the int value from a spa pod parser object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="417"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2491">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="../lib/wp/spa-pod.c"
+                 line="2486">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="../lib/wp/spa-pod.c"
+                 line="2487">the int value</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long" c:identifier="wp_spa_pod_parser_get_long">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="2500">Gets the long value from a spa pod parser object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="420"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2507">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="../lib/wp/spa-pod.c"
+                 line="2502">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="../lib/wp/spa-pod.c"
+                 line="2503">the long value</doc>
+            <type name="glong" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pod" c:identifier="wp_spa_pod_parser_get_pod">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-pod.c"
+             line="2671">Gets the spa pod value from a spa pod parser object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="452"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2677">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="../lib/wp/spa-pod.c"
+                 line="2673">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="../lib/wp/spa-pod.c"
+             line="2581">Gets the pointer value and its type name 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="../lib/wp/spa-pod.c"
+               line="2589">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="../lib/wp/spa-pod.c"
+                 line="2583">the spa pod parser object</doc>
+            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
+          </instance-parameter>
+          <parameter name="type_name"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="2584">the type name of the pointer value</doc>
+            <type name="utf8" c:type="const char**"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     nullable="1">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/spa-pod.c"
+                 line="2585">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="../lib/wp/spa-pod.c"
+             line="2624">Gets the rectangle's width and height value 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="../lib/wp/spa-pod.c"
+               line="2632">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="../lib/wp/spa-pod.c"
+                 line="2626">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="../lib/wp/spa-pod.c"
+                 line="2627">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="../lib/wp/spa-pod.c"
+                 line="2628">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="../lib/wp/spa-pod.c"
+             line="2548">Gets the string value from a spa pod parser object</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="429"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2555">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="../lib/wp/spa-pod.c"
+                 line="2550">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="../lib/wp/spa-pod.c"
+                 line="2551">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="../lib/wp/spa-pod.c"
+             line="2713">This is the `va_list` version of wp_spa_pod_parser_get()</doc>
+        <source-position filename="../lib/wp/spa-pod.h" line="458"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2720">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="../lib/wp/spa-pod.c"
+                 line="2715">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="../lib/wp/spa-pod.c"
+                 line="2716">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">
+        <source-position filename="../lib/wp/spa-pod.h" line="398"/>
+        <return-value transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-pod.c"
+               line="2360">@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="../lib/wp/spa-pod.c"
+                 line="2358">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="../lib/wp/spa-pod.c"
+             line="2374">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="401"/>
+        <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="../lib/wp/spa-pod.c"
+                 line="2376">a spa pod parser object</doc>
+            <type name="SpaPodParser" c:type="WpSpaPodParser*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="SpaTypeTable"
+                 glib:type-name="WpSpaTypeTable"
+                 glib:get-type="wp_spa_type_table_get_type"
+                 c:type="WpSpaTypeTable">
+      <doc xml:space="preserve"
+           filename="../lib/wp/spa-type.h"
+           line="17">The diferent tables (namespaces) the registry has.</doc>
+      <member name="basic"
+              value="0"
+              c:identifier="WP_SPA_TYPE_TABLE_BASIC"
+              glib:nick="basic">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="19">The basic type table</doc>
+      </member>
+      <member name="param"
+              value="1"
+              c:identifier="WP_SPA_TYPE_TABLE_PARAM"
+              glib:nick="param">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="20">The param type table (used as object id)</doc>
+      </member>
+      <member name="props"
+              value="2"
+              c:identifier="WP_SPA_TYPE_TABLE_PROPS"
+              glib:nick="props">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="21">The object properties type table</doc>
+      </member>
+      <member name="prop_info"
+              value="3"
+              c:identifier="WP_SPA_TYPE_TABLE_PROP_INFO"
+              glib:nick="prop-info">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="22">The object property info type table</doc>
+      </member>
+      <member name="control"
+              value="4"
+              c:identifier="WP_SPA_TYPE_TABLE_CONTROL"
+              glib:nick="control">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="23">The sequence control type table</doc>
+      </member>
+      <member name="choice"
+              value="5"
+              c:identifier="WP_SPA_TYPE_TABLE_CHOICE"
+              glib:nick="choice">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="24">The choice type table</doc>
+      </member>
+      <member name="format"
+              value="6"
+              c:identifier="WP_SPA_TYPE_TABLE_FORMAT"
+              glib:nick="format">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="25">The object format type table</doc>
+      </member>
+      <member name="param_port_config"
+              value="7"
+              c:identifier="WP_SPA_TYPE_TABLE_PARAM_PORT_CONFIG"
+              glib:nick="param-port-config">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="26">The object param port config type table</doc>
+      </member>
+      <member name="param_profile"
+              value="8"
+              c:identifier="WP_SPA_TYPE_TABLE_PARAM_PROFILE"
+              glib:nick="param-profile">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="27">The sequence control type table</doc>
+      </member>
+      <member name="audio_channel"
+              value="9"
+              c:identifier="WP_SPA_TYPE_TABLE_AUDIO_CHANNEL"
+              glib:nick="audio-channel">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.h"
+             line="28">The audio channel type table</doc>
+      </member>
+      <member name="last"
+              value="10"
+              c:identifier="WP_SPA_TYPE_TABLE_LAST"
+              glib:nick="last">
+      </member>
+    </enumeration>
+    <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">
+      <source-position filename="../lib/wp/transition.h" line="51"/>
+      <implements name="Gio.AsyncResult"/>
+      <constructor name="new" c:identifier="wp_transition_new">
+        <doc xml:space="preserve"
+             filename="../lib/wp/transition.c"
+             line="152">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.
+
+Note that 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="54"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/transition.c"
+               line="171">the new transition</doc>
+          <type name="Transition" c:type="WpTransition*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/transition.c"
+                 line="154">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="../lib/wp/transition.c"
+                 line="155">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="../lib/wp/transition.c"
+                 line="157">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="../lib/wp/transition.c"
+                 line="158">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="../lib/wp/transition.c"
+                 line="159">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="../lib/wp/transition.c"
+             line="182">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="59"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/transition.c"
+               line="200">the new transition</doc>
+          <type name="Transition" c:type="WpTransition*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/transition.c"
+                 line="184">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="../lib/wp/transition.c"
+                 line="185">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="../lib/wp/transition.c"
+                 line="187">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="../lib/wp/transition.c"
+                 line="188">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="../lib/wp/transition.c"
+             line="490">This is meant to be called from within the #GAsyncReadyCallback that was
+specified in wp_transition_new(). It returns the final return status
+of the transition and its error, if there was one.</doc>
+        <source-position filename="../lib/wp/transition.h" line="104"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/transition.c"
+               line="499">%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="../lib/wp/transition.c"
+                 line="492">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="50"/>
+        <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="49"/>
+        <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="../lib/wp/transition.c"
+             line="390">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="96"/>
+        <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="../lib/wp/transition.c"
+                 line="392">the transition</doc>
+            <type name="Transition" c:type="WpTransition*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="get_completed" c:identifier="wp_transition_get_completed">
+        <source-position filename="../lib/wp/transition.h" line="90"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/transition.c"
+               line="342">%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="../lib/wp/transition.c"
+                 line="340">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="../lib/wp/transition.c"
+             line="299">Gets @self 's data. See wp_transition_set_data().</doc>
+        <source-position filename="../lib/wp/transition.h" line="81"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/transition.c"
+               line="305">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="../lib/wp/transition.c"
+                 line="301">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="../lib/wp/transition.c"
+             line="225">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="65"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/transition.c"
+               line="232">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="../lib/wp/transition.c"
+                 line="227">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="../lib/wp/transition.c"
+             line="262">Gets @self 's source tag. See wp_transition_set_source_tag().</doc>
+        <source-position filename="../lib/wp/transition.h" line="73"/>
+        <return-value transfer-ownership="none" nullable="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/transition.c"
+               line="268">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="../lib/wp/transition.c"
+                 line="264">the transition</doc>
+            <type name="Transition" c:type="WpTransition*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+      <method name="had_error" c:identifier="wp_transition_had_error">
+        <source-position filename="../lib/wp/transition.h" line="93"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/transition.c"
+               line="359">%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="../lib/wp/transition.c"
+                 line="357">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="../lib/wp/transition.c"
+             line="243">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="70"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/transition.c"
+               line="251">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="../lib/wp/transition.c"
+                 line="245">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="../lib/wp/transition.c"
+                 line="246">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="../lib/wp/transition.c"
+             line="456">Completes the transition with an error. This can be called anytime
+from within any virtual function or an async job handler.
+
+Note that 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="99"/>
+        <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="../lib/wp/transition.c"
+                 line="458">the transition</doc>
+            <type name="Transition" c:type="WpTransition*"/>
+          </instance-parameter>
+          <parameter name="error" transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../lib/wp/transition.c"
+                 line="459">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="../lib/wp/transition.c"
+             line="316">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="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="../lib/wp/transition.c"
+                 line="318">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="../lib/wp/transition.c"
+                 line="319">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="../lib/wp/transition.c"
+                 line="320">#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="../lib/wp/transition.c"
+             line="279">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="76"/>
+        <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="../lib/wp/transition.c"
+                 line="281">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="../lib/wp/transition.c"
+                 line="282">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">
+        <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="51"/>
+      <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="49"/>
+          <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="50"/>
+          <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>
+    </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">
+        <doc xml:space="preserve"
+             filename="../lib/wp/transition.h"
+             line="28">the initial and final step of the transition</doc>
+      </member>
+      <member name="error"
+              value="1"
+              c:identifier="WP_TRANSITION_STEP_ERROR"
+              glib:nick="error">
+        <doc xml:space="preserve"
+             filename="../lib/wp/transition.h"
+             line="29">returned by #WpTransitionClass.get_next_step() in
+  case of an error</doc>
+      </member>
+      <member name="custom_start"
+              value="16"
+              c:identifier="WP_TRANSITION_STEP_CUSTOM_START"
+              glib:nick="custom-start">
+        <doc xml:space="preserve"
+             filename="../lib/wp/transition.h"
+             line="31">starting value for steps defined in
+  subclasses</doc>
+      </member>
+    </enumeration>
+    <function name="domain_library_quark"
+              c:identifier="wp_domain_library_quark">
+      <source-position filename="../lib/wp/error.h" line="25"/>
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="init" c:identifier="wp_init">
+      <doc xml:space="preserve"
+           filename="../lib/wp/wp.c"
+           line="34">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="54"/>
+      <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="../lib/wp/wp.c"
+               line="36">initialization flags</doc>
+          <type name="InitFlags" c:type="WpInitFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_level_is_enabled"
+              c:identifier="wp_log_level_is_enabled">
+      <doc xml:space="preserve"
+           filename="../lib/wp/debug.c"
+           line="267">Use this to figure out if a debug message is going to be printed or not,
+so that you can avoid allocating resources just for debug logging purposes</doc>
+      <source-position filename="../lib/wp/debug.h" line="24"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/debug.c"
+             line="274">whether the log level is currently enabled</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_level" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/debug.c"
+               line="269">a log level</doc>
+          <type name="GLib.LogLevelFlags" c:type="GLogLevelFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_structured_standard"
+              c:identifier="wp_log_structured_standard"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../lib/wp/debug.c"
+           line="353">Used internally by the debug logging macros. Avoid using it directly.</doc>
+      <source-position filename="../lib/wp/debug.h" line="31"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" 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_writer_default" c:identifier="wp_log_writer_default">
+      <doc xml:space="preserve"
+           filename="../lib/wp/debug.c"
+           line="283">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/debug.h" line="27"/>
+      <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="properties_iterator_item_get_key"
+              c:identifier="wp_properties_iterator_item_get_key"
+              moved-to="Properties.iterator_item_get_key">
+      <source-position filename="../lib/wp/properties.h" line="142"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/properties.c"
+             line="825">the property key of the @item</doc>
+        <type name="utf8" c:type="const gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="item" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="822">a #GValue that was returned from the #WpIterator of
+  wp_properties_iterate()</doc>
+          <type name="GObject.Value" c:type="const GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="properties_iterator_item_get_value"
+              c:identifier="wp_properties_iterator_item_get_value"
+              moved-to="Properties.iterator_item_get_value">
+      <source-position filename="../lib/wp/properties.h" line="145"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/properties.c"
+             line="840">the property value of the @item</doc>
+        <type name="utf8" c:type="const gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="item" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/properties.c"
+               line="837">a #GValue that was returned from the #WpIterator of
+  wp_properties_iterate()</doc>
+          <type name="GObject.Value" c:type="const GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spa_log_get_instance"
+              c:identifier="wp_spa_log_get_instance">
+      <source-position filename="../lib/wp/debug.h" line="85"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <doc xml:space="preserve"
+             filename="../lib/wp/debug.c"
+             line="467">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 name="spa_type_deinit" c:identifier="wp_spa_type_deinit">
+      <doc xml:space="preserve"
+           filename="../lib/wp/spa-type.c"
+           line="145">Deinitializes the spa type registry</doc>
+      <source-position filename="../lib/wp/spa-type.h" line="50"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="spa_type_get_by_id" c:identifier="wp_spa_type_get_by_id">
+      <doc xml:space="preserve"
+           filename="../lib/wp/spa-type.c"
+           line="305">Gets the name and nick name of the registered type given its id</doc>
+      <source-position filename="../lib/wp/spa-type.h" line="67"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.c"
+             line="315">TRUE if the type was found, FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="table" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="307">the table</doc>
+          <type name="SpaTypeTable" c:type="WpSpaTypeTable"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="308">the id of the type</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="name"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="309">the name of the type</doc>
+          <type name="utf8" c:type="const char**"/>
+        </parameter>
+        <parameter name="nick"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="310">the nick name of the type</doc>
+          <type name="utf8" c:type="const char**"/>
+        </parameter>
+        <parameter name="values_table"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="311">the values table of the type</doc>
+          <type name="SpaTypeTable" c:type="WpSpaTypeTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spa_type_get_by_nick"
+              c:identifier="wp_spa_type_get_by_nick">
+      <doc xml:space="preserve"
+           filename="../lib/wp/spa-type.c"
+           line="263">Gets the id and name of the registered type given its nick name</doc>
+      <source-position filename="../lib/wp/spa-type.h" line="63"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.c"
+             line="273">TRUE if the type was found, FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="table" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="265">the table</doc>
+          <type name="SpaTypeTable" c:type="WpSpaTypeTable"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="266">the nick name of the type</doc>
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+        <parameter name="id"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="267">the id of the type</doc>
+          <type name="guint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="name"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="268">the name of the type</doc>
+          <type name="utf8" c:type="const char**"/>
+        </parameter>
+        <parameter name="values_table"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="269">the values table of the type</doc>
+          <type name="SpaTypeTable" c:type="WpSpaTypeTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spa_type_get_table_size"
+              c:identifier="wp_spa_type_get_table_size">
+      <doc xml:space="preserve"
+           filename="../lib/wp/spa-type.c"
+           line="161">Gets the number of registered types in a given table</doc>
+      <source-position filename="../lib/wp/spa-type.h" line="53"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.c"
+             line="167">The number of registered types</doc>
+        <type name="gsize" c:type="size_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="table" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="163">the table</doc>
+          <type name="SpaTypeTable" c:type="WpSpaTypeTable"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spa_type_init" c:identifier="wp_spa_type_init">
+      <doc xml:space="preserve"
+           filename="../lib/wp/spa-type.c"
+           line="108">Initializes the spa type registry</doc>
+      <source-position filename="../lib/wp/spa-type.h" line="47"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="register_spa" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="110">whether spa types will be registered or not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spa_type_register" c:identifier="wp_spa_type_register">
+      <doc xml:space="preserve"
+           filename="../lib/wp/spa-type.c"
+           line="182">Registers a type name with a nickname in the registry</doc>
+      <source-position filename="../lib/wp/spa-type.h" line="56"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../lib/wp/spa-type.c"
+             line="190">TRUE if the type could be registered, FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="table" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="184">the table</doc>
+          <type name="SpaTypeTable" c:type="WpSpaTypeTable"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="185">the name of the type</doc>
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="186">the nick name of the type</doc>
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spa_type_unregister" c:identifier="wp_spa_type_unregister">
+      <doc xml:space="preserve"
+           filename="../lib/wp/spa-type.c"
+           line="227">Unregisters a type given its nick name</doc>
+      <source-position filename="../lib/wp/spa-type.h" line="60"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="table" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="229">the table</doc>
+          <type name="SpaTypeTable" c:type="WpSpaTypeTable"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../lib/wp/spa-type.c"
+               line="230">the nick name of the type</doc>
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]