Blame doc/problems-service/tools/spec-to-docbook.xsl

Packit 8ea169
Packit 8ea169
Packit 8ea169
Packit 8ea169
  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
Packit 8ea169
  xmlns:html="http://www.w3.org/1999/xhtml"
Packit 8ea169
  xmlns:xlink="http://www.w3.org/1999/xlink"
Packit 8ea169
  xmlns:docbook="http://docbook.org/ns/docbook"
Packit 8ea169
  exclude-result-prefixes="tp html">
Packit 8ea169
Packit 8ea169
Packit 8ea169
    Telepathy D-Bus Introspection to Docbook XML translator.
Packit 8ea169
    Based on Telepathy's doc-generator.xsl.
Packit 8ea169
Packit 8ea169
    Copyright (C) 2006-2008 Collabora Limited
Packit 8ea169
    Copyright (C) 2009 Michael Leupold <lemma@confuego.org>
Packit 8ea169
Packit 8ea169
    This library is free software; you can redistribute it and/or
Packit 8ea169
    modify it under the terms of the GNU Lesser General Public
Packit 8ea169
    License as published by the Free Software Foundation; either
Packit 8ea169
    version 2.1 of the License, or (at your option) any later version.
Packit 8ea169
Packit 8ea169
    This library is distributed in the hope that it will be useful,
Packit 8ea169
    but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 8ea169
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 8ea169
    Lesser General Public License for more details.
Packit 8ea169
Packit 8ea169
    You should have received a copy of the GNU Lesser General Public
Packit 8ea169
    License along with this library; if not, write to the Free Software
Packit 8ea169
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Packit 8ea169
-->
Packit 8ea169
Packit 8ea169
  
Packit 8ea169
    omit-xml-declaration="no"/>
Packit 8ea169
Packit 8ea169
  <xsl:include href="resolve-type.xsl"/>
Packit 8ea169
Packit 8ea169
  <xsl:param name="allow-undefined-interfaces" select="false()"/>
Packit 8ea169
Packit 8ea169
  <xsl:template match="docbook:* | html:* | @*">
Packit 8ea169
    <xsl:copy>
Packit 8ea169
      <xsl:apply-templates/>
Packit 8ea169
    </xsl:copy>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template name="direction">
Packit 8ea169
    <xsl:param name="indirection"/>
Packit 8ea169
    <xsl:choose>
Packit 8ea169
      <xsl:when test="$indirection = 'in'">IN</xsl:when>
Packit 8ea169
      <xsl:otherwise>OUT</xsl:otherwise>
Packit 8ea169
    </xsl:choose>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:type">
Packit 8ea169
    <xsl:call-template name="tp-type">
Packit 8ea169
      <xsl:with-param name="tp-type" select="string(.)"/>
Packit 8ea169
    </xsl:call-template>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  
Packit 8ea169
  <xsl:template match="tp:dbus-ref">
Packit 8ea169
    <xsl:variable name="name">
Packit 8ea169
      <xsl:choose>
Packit 8ea169
        <xsl:when test="@namespace">
Packit 8ea169
          <xsl:value-of select="@namespace"/>
Packit 8ea169
          <xsl:text>.</xsl:text>
Packit 8ea169
        </xsl:when>
Packit 8ea169
      </xsl:choose>
Packit 8ea169
      <xsl:value-of select="string(.)"/>
Packit 8ea169
    </xsl:variable>
Packit 8ea169
Packit 8ea169
    <xsl:choose>
Packit 8ea169
      
Packit 8ea169
        or //interface/method[concat(../@name, '.', @name)=$name]
Packit 8ea169
        or //interface/signal[concat(../@name, '.', @name)=$name]
Packit 8ea169
        or //interface/property[concat(../@name, '.', @name)=$name]
Packit 8ea169
        or //interface[@name=concat($name, '.DRAFT')]
Packit 8ea169
        or //interface/method[
Packit 8ea169
          concat(../@name, '.', @name)=concat($name, '.DRAFT')]
Packit 8ea169
        or //interface/signal[
Packit 8ea169
          concat(../@name, '.', @name)=concat($name, '.DRAFT')]
Packit 8ea169
        or //interface/property[
Packit 8ea169
          concat(../@name, '.', @name)=concat($name, '.DRAFT')]
Packit 8ea169
        ">
Packit 8ea169
        <link linkend="{$name}">
Packit 8ea169
          <literal><xsl:value-of select="$name"/></literal>
Packit 8ea169
        </link>
Packit 8ea169
      </xsl:when>
Packit 8ea169
Packit 8ea169
      <xsl:when test="$allow-undefined-interfaces">
Packit 8ea169
        
Packit 8ea169
        
Packit 8ea169
          <xsl:value-of select="string(.)"/>
Packit 8ea169
        
Packit 8ea169
      </xsl:when>
Packit 8ea169
Packit 8ea169
      <xsl:otherwise>
Packit 8ea169
        <xsl:message terminate="yes">
Packit 8ea169
          <xsl:text>ERR: cannot find D-Bus interface, method, </xsl:text>
Packit 8ea169
          <xsl:text>signal or property called '</xsl:text>
Packit 8ea169
          <xsl:value-of select="$name"/>
Packit 8ea169
          <xsl:text>'
</xsl:text>
Packit 8ea169
        </xsl:message>
Packit 8ea169
      </xsl:otherwise>
Packit 8ea169
    </xsl:choose>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  
Packit 8ea169
  <xsl:template match="tp:member-ref">
Packit 8ea169
    
Packit 8ea169
      '.')"/>
Packit 8ea169
    <xsl:variable name="name" select="string(.)"/>
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(ancestor::interface)">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: Cannot use tp:member-ref when not in an</xsl:text>
Packit 8ea169
        <xsl:text> <interface>
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:choose>
Packit 8ea169
      <xsl:when test="ancestor::interface/signal[@name=$name]"/>
Packit 8ea169
      <xsl:when test="ancestor::interface/method[@name=$name]"/>
Packit 8ea169
      <xsl:when test="ancestor::interface/property[@name=$name]"/>
Packit 8ea169
      <xsl:otherwise>
Packit 8ea169
        <xsl:message terminate="yes">
Packit 8ea169
          <xsl:text>ERR: interface </xsl:text>
Packit 8ea169
          <xsl:value-of select="ancestor::interface/@name"/>
Packit 8ea169
          <xsl:text> has no signal/method/property called </xsl:text>
Packit 8ea169
          <xsl:value-of select="$name"/>
Packit 8ea169
          <xsl:text>
</xsl:text>
Packit 8ea169
        </xsl:message>
Packit 8ea169
      </xsl:otherwise>
Packit 8ea169
    </xsl:choose>
Packit 8ea169
Packit 8ea169
    <link linkend="{$prefix}{$name}">
Packit 8ea169
      <literal><xsl:value-of select="concat($prefix, $name)"/></literal>
Packit 8ea169
    </link>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="*" mode="identity">
Packit 8ea169
    <xsl:copy>
Packit 8ea169
      <xsl:apply-templates mode="identity"/>
Packit 8ea169
    </xsl:copy>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:docstring">
Packit 8ea169
    <para>
Packit 8ea169
      <xsl:copy-of select="child::node()"/>
Packit 8ea169
    </para>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:docstring" mode="nopara">
Packit 8ea169
    <xsl:copy-of select="child::node()"/>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:added">
Packit 8ea169
    <para>
Packit 8ea169
      Added in version <xsl:value-of select="@version"/>.
Packit 8ea169
      <xsl:apply-templates select="node()"/>
Packit 8ea169
    </para>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:changed">
Packit 8ea169
    <xsl:choose>
Packit 8ea169
      <xsl:when test="node()">
Packit 8ea169
        <para>
Packit 8ea169
          Changed in version <xsl:value-of select="@version"/>:
Packit 8ea169
          <xsl:apply-templates select="node()"/></para>
Packit 8ea169
      </xsl:when>
Packit 8ea169
      <xsl:otherwise>
Packit 8ea169
        <para>Changed in version
Packit 8ea169
          <xsl:value-of select="@version"/></para>
Packit 8ea169
      </xsl:otherwise>
Packit 8ea169
    </xsl:choose>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:deprecated">
Packit 8ea169
    <para>
Packit 8ea169
      Deprecated since version <xsl:value-of select="@version"/>.
Packit 8ea169
      <xsl:apply-templates select="node()"/>
Packit 8ea169
    </para>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:rationale">
Packit 8ea169
    
Packit 8ea169
    <para>
Packit 8ea169
      <xsl:apply-templates select="node()"/>
Packit 8ea169
    </para>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:errors">
Packit 8ea169
    <title>Errors</title>
Packit 8ea169
    <xsl:apply-templates/>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template name="generic-types">
Packit 8ea169
    <chapter>
Packit 8ea169
      <xsl:attribute name="xml:id">types</xsl:attribute>
Packit 8ea169
        <title>Types</title>
Packit 8ea169
        <xsl:call-template name="do-types"/>
Packit 8ea169
    </chapter>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template name="do-types">
Packit 8ea169
    <xsl:if test="tp:simple-type">
Packit 8ea169
      <section>
Packit 8ea169
        <title>Simple types</title>
Packit 8ea169
        <xsl:apply-templates select="tp:simple-type"/>
Packit 8ea169
      </section>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="tp:enum">
Packit 8ea169
      <section>
Packit 8ea169
        <title>Enumerated types</title>
Packit 8ea169
        <xsl:apply-templates select="tp:enum"/>
Packit 8ea169
      </section>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="tp:flags">
Packit 8ea169
      <section>
Packit 8ea169
        <title>Sets of flags</title>
Packit 8ea169
        <xsl:apply-templates select="tp:flags"/>
Packit 8ea169
      </section>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="tp:struct">
Packit 8ea169
      <section>
Packit 8ea169
        <title>Struct types</title>
Packit 8ea169
        <xsl:apply-templates select="tp:struct"/>
Packit 8ea169
      </section>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="tp:mapping">
Packit 8ea169
      <section>
Packit 8ea169
        <title>Map types</title>
Packit 8ea169
        <xsl:apply-templates select="tp:mapping"/>
Packit 8ea169
      </section>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="tp:external-type">
Packit 8ea169
      <section>
Packit 8ea169
        <title>Types defined elsewhere</title>
Packit 8ea169
        <glosslist>
Packit 8ea169
          <xsl:apply-templates select="tp:external-type"/>
Packit 8ea169
        </glosslist>
Packit 8ea169
      </section>
Packit 8ea169
    </xsl:if>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:error">
Packit 8ea169
    <simplesect>
Packit 8ea169
      <title>
Packit 8ea169
        <xsl:attribute name="xml:id">
Packit 8ea169
          <xsl:value-of select="concat(../@namespace, '.', translate(@name, ' ', ''))"/>
Packit 8ea169
        </xsl:attribute>
Packit 8ea169
        <literal><xsl:value-of select="concat(../@namespace, '.', translate(@name, ' ', ''))"/></literal>
Packit 8ea169
      </title>
Packit 8ea169
      <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
      <xsl:apply-templates select="tp:added"/>
Packit 8ea169
      <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
      <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
    </simplesect>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="/tp:spec/tp:copyright">
Packit 8ea169
    
Packit 8ea169
    <legalnotice>
Packit 8ea169
      <para><xsl:apply-templates mode="text"/></para>
Packit 8ea169
    </legalnotice>
Packit 8ea169
  </xsl:template>
Packit 8ea169
  <xsl:template match="/tp:spec/tp:license">
Packit 8ea169
    
Packit 8ea169
    <legalnotice>
Packit 8ea169
      <para>
Packit 8ea169
        <xsl:apply-templates/>
Packit 8ea169
      </para>
Packit 8ea169
    </legalnotice>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:copyright"/>
Packit 8ea169
  <xsl:template match="tp:license"/>
Packit 8ea169
Packit 8ea169
  <xsl:template match="interface">
Packit 8ea169
Packit 8ea169
    <refentry>
Packit 8ea169
      <xsl:attribute name="xml:id">
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
      </xsl:attribute>
Packit 8ea169
      <refmeta>
Packit 8ea169
        <refentrytitle><literal><xsl:value-of select="@name"/></literal></refentrytitle>
Packit 8ea169
      </refmeta>
Packit 8ea169
Packit 8ea169
      <refnamediv>
Packit 8ea169
        <refdescriptor><xsl:value-of select="@name"/></refdescriptor>
Packit 8ea169
        <refname><xsl:value-of select="@name"/></refname>
Packit 8ea169
        <refpurpose><xsl:apply-templates select="tp:docstring" mode="nopara"/></refpurpose>
Packit 8ea169
      </refnamediv>
Packit 8ea169
Packit 8ea169
      <xsl:if test="tp:added">
Packit 8ea169
        <refsection>
Packit 8ea169
          <xsl:apply-templates select="tp:added"/>
Packit 8ea169
        </refsection>
Packit 8ea169
      </xsl:if>
Packit 8ea169
      <xsl:if test="tp:changed">
Packit 8ea169
        <refsection>
Packit 8ea169
          <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
        </refsection>
Packit 8ea169
      </xsl:if>
Packit 8ea169
      <xsl:if test="tp:deprecated">
Packit 8ea169
        <refsection>
Packit 8ea169
          <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
        </refsection>
Packit 8ea169
      </xsl:if>
Packit 8ea169
Packit 8ea169
      <xsl:if test="@tp:causes-havoc">
Packit 8ea169
        <refsection>
Packit 8ea169
          <warning>
Packit 8ea169
            <para>
Packit 8ea169
              This interface is <xsl:value-of select="@tp:causes-havoc"/>
Packit 8ea169
              and is likely to cause havoc to your API/ABI if bindings are generated.
Packit 8ea169
              Don't include it in libraries that care about compatibility.
Packit 8ea169
            </para>
Packit 8ea169
          </warning>
Packit 8ea169
        </refsection>
Packit 8ea169
      </xsl:if>
Packit 8ea169
Packit 8ea169
      <xsl:if test="tp:requires">
Packit 8ea169
        <refsection>
Packit 8ea169
          <tip>
Packit 8ea169
            <para>Implementations of this interface must also implement:</para>
Packit 8ea169
            <itemizedlist>
Packit 8ea169
              <xsl:for-each select="tp:requires">
Packit 8ea169
                <listitem>
Packit 8ea169
                  <para>
Packit 8ea169
                    <link linkend="{@interface}">
Packit 8ea169
                      <literal><xsl:value-of select="@interface"/></literal>
Packit 8ea169
                    </link>
Packit 8ea169
                  </para>
Packit 8ea169
                </listitem>
Packit 8ea169
              </xsl:for-each>
Packit 8ea169
            </itemizedlist>
Packit 8ea169
          </tip>
Packit 8ea169
        </refsection>
Packit 8ea169
      </xsl:if>
Packit 8ea169
Packit 8ea169
      <refsynopsisdiv>
Packit 8ea169
        <xsl:if test="method">
Packit 8ea169
          <refsect2 id="methods">
Packit 8ea169
            <title>Methods</title>
Packit 8ea169
            <funcsynopsis>
Packit 8ea169
              <xsl:apply-templates select="method" mode="funcsynopsislinked"/>
Packit 8ea169
            </funcsynopsis>
Packit 8ea169
          </refsect2>
Packit 8ea169
        </xsl:if>
Packit 8ea169
        <xsl:if test="signal">
Packit 8ea169
          <refsect2 id="signals">
Packit 8ea169
            <title>Signals</title>
Packit 8ea169
            <funcsynopsis>
Packit 8ea169
              <xsl:apply-templates select="signal" mode="funcsynopsislinked"/>
Packit 8ea169
            </funcsynopsis>
Packit 8ea169
          </refsect2>
Packit 8ea169
        </xsl:if>
Packit 8ea169
        <xsl:if test="property">
Packit 8ea169
          <refsect2 id="properties">
Packit 8ea169
            <title>Properties</title>
Packit 8ea169
            <refsynopsisdiv>
Packit 8ea169
              <title> </title>
Packit 8ea169
              <xsl:apply-templates select="property" mode="fieldsynopsislinked"/>
Packit 8ea169
            </refsynopsisdiv>
Packit 8ea169
          </refsect2>
Packit 8ea169
        </xsl:if>
Packit 8ea169
      </refsynopsisdiv>
Packit 8ea169
Packit 8ea169
      <xsl:if test="method">
Packit 8ea169
        <refsection id="methods">
Packit 8ea169
          <title>Methods</title>
Packit 8ea169
          <xsl:apply-templates select="method" mode="detail"/>
Packit 8ea169
        </refsection>
Packit 8ea169
      </xsl:if>
Packit 8ea169
Packit 8ea169
      <xsl:if test="signal">
Packit 8ea169
        <refsection id="signals">
Packit 8ea169
          <title>Signals</title>
Packit 8ea169
          <xsl:apply-templates select="signal" mode="detail"/>
Packit 8ea169
        </refsection>
Packit 8ea169
      </xsl:if>
Packit 8ea169
Packit 8ea169
      <xsl:if test="tp:property">
Packit 8ea169
        <refsection id="tp_properties">
Packit 8ea169
          <title>Telepathy Properties</title>
Packit 8ea169
          <para>
Packit 8ea169
            Accessed using the
Packit 8ea169
            <link linkend="org.freedesktop.Telepathy.Properties">
Packit 8ea169
              <literal>org.freedesktop.Telepathy.Properties</literal>
Packit 8ea169
            </link>
Packit 8ea169
          </para>
Packit 8ea169
          <glosslist>
Packit 8ea169
            <xsl:apply-templates select="tp:property" mode="detail"/>
Packit 8ea169
          </glosslist>
Packit 8ea169
        </refsection>
Packit 8ea169
      </xsl:if>
Packit 8ea169
Packit 8ea169
      <xsl:if test="property">
Packit 8ea169
        <refsection id="dbus_properties">
Packit 8ea169
          <title>D-Bus Properties</title>
Packit 8ea169
          <para>
Packit 8ea169
            Accessed using the org.freedesktop.DBus.Properties interface.
Packit 8ea169
          </para>
Packit 8ea169
          <xsl:apply-templates select="property" mode="detail"/>
Packit 8ea169
        </refsection>
Packit 8ea169
      </xsl:if>
Packit 8ea169
Packit 8ea169
      <xsl:call-template name="do-types"/>
Packit 8ea169
Packit 8ea169
    </refentry>
Packit 8ea169
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:flags">
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @name on a tp:flags type
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@type) or @type = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @type on tp:flags type</xsl:text>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
        <xsl:text>
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <section>
Packit 8ea169
      <xsl:attribute name="xml:id">
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
      </xsl:attribute>
Packit 8ea169
      <title><literal><xsl:value-of select="@name"/></literal></title>
Packit 8ea169
      <xsl:apply-templates select="tp:docstring" />
Packit 8ea169
      <xsl:apply-templates select="tp:added"/>
Packit 8ea169
      <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
      <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
      <glosslist>
Packit 8ea169
        <xsl:variable name="value-prefix">
Packit 8ea169
          <xsl:choose>
Packit 8ea169
            <xsl:when test="@value-prefix">
Packit 8ea169
              <xsl:value-of select="@value-prefix"/>
Packit 8ea169
            </xsl:when>
Packit 8ea169
            <xsl:otherwise>
Packit 8ea169
              <xsl:value-of select="@name"/>
Packit 8ea169
            </xsl:otherwise>
Packit 8ea169
          </xsl:choose>
Packit 8ea169
        </xsl:variable>
Packit 8ea169
        <xsl:for-each select="tp:flag">
Packit 8ea169
          <glossentry>
Packit 8ea169
            <glossterm>
Packit 8ea169
              <xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/>
Packit 8ea169
            </glossterm>
Packit 8ea169
            <glossdef>
Packit 8ea169
              <xsl:choose>
Packit 8ea169
                <xsl:when test="tp:docstring">
Packit 8ea169
                  <xsl:apply-templates select="tp:docstring" />
Packit 8ea169
                  <xsl:apply-templates select="tp:added"/>
Packit 8ea169
                  <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
                  <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
                </xsl:when>
Packit 8ea169
                <xsl:otherwise>
Packit 8ea169
                  (Undocumented)
Packit 8ea169
                </xsl:otherwise>
Packit 8ea169
              </xsl:choose>
Packit 8ea169
            </glossdef>
Packit 8ea169
          </glossentry>
Packit 8ea169
        </xsl:for-each>
Packit 8ea169
      </glosslist>
Packit 8ea169
    </section>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:enum">
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @name on a tp:enum type
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@type) or @type = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @type on tp:enum type</xsl:text>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
        <xsl:text>
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <section>
Packit 8ea169
      <xsl:attribute name="xml:id">
Packit 8ea169
        <xsl:value-of select="concat('type-', @name)"/>
Packit 8ea169
      </xsl:attribute>
Packit 8ea169
      <title><literal><xsl:value-of select="@name"/></literal></title>
Packit 8ea169
      <xsl:apply-templates select="tp:docstring" />
Packit 8ea169
      <xsl:apply-templates select="tp:added"/>
Packit 8ea169
      <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
      <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
      <glosslist>
Packit 8ea169
        <xsl:variable name="value-prefix">
Packit 8ea169
          <xsl:choose>
Packit 8ea169
            <xsl:when test="@value-prefix">
Packit 8ea169
              <xsl:value-of select="@value-prefix"/>
Packit 8ea169
            </xsl:when>
Packit 8ea169
            <xsl:otherwise>
Packit 8ea169
              <xsl:value-of select="@name"/>
Packit 8ea169
            </xsl:otherwise>
Packit 8ea169
          </xsl:choose>
Packit 8ea169
        </xsl:variable>
Packit 8ea169
        <xsl:for-each select="tp:enumvalue">
Packit 8ea169
          <glossentry>
Packit 8ea169
            <glossterm>
Packit 8ea169
              <xsl:value-of select="concat($value-prefix, '_', @suffix)"/> = <xsl:value-of select="@value"/>
Packit 8ea169
            </glossterm>
Packit 8ea169
            <glossdef>
Packit 8ea169
              <xsl:choose>
Packit 8ea169
                <xsl:when test="tp:docstring">
Packit 8ea169
                  <xsl:apply-templates select="tp:docstring" />
Packit 8ea169
                  <xsl:apply-templates select="tp:added"/>
Packit 8ea169
                  <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
                  <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
                </xsl:when>
Packit 8ea169
                <xsl:otherwise>
Packit 8ea169
                  (Undocumented)
Packit 8ea169
                </xsl:otherwise>
Packit 8ea169
              </xsl:choose>
Packit 8ea169
            </glossdef>
Packit 8ea169
          </glossentry>
Packit 8ea169
        </xsl:for-each>
Packit 8ea169
      </glosslist>
Packit 8ea169
    </section>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="property" mode="fieldsynopsis">
Packit 8ea169
Packit 8ea169
    <fieldsynopsis>
Packit 8ea169
      <xsl:attribute name="xml:id">
Packit 8ea169
        <xsl:value-of select="concat(../@name, '.', @name)"/>
Packit 8ea169
      </xsl:attribute>
Packit 8ea169
      <modifier>
Packit 8ea169
        <xsl:choose>
Packit 8ea169
          <xsl:when test="@access = 'read'">
Packit 8ea169
            <xsl:text>READ</xsl:text>
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:when test="@access = 'write'">
Packit 8ea169
            <xsl:text>WRITE</xsl:text>
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:when test="@access = 'readwrite'">
Packit 8ea169
            <xsl:text>READWRITE</xsl:text>
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:otherwise>
Packit 8ea169
            <xsl:message terminate="yes">
Packit 8ea169
              <xsl:text>ERR: unknown or missing value for </xsl:text>
Packit 8ea169
              <xsl:text>@access on property </xsl:text>
Packit 8ea169
              <xsl:value-of select="concat(../@name, '.', @name)"/>
Packit 8ea169
              <xsl:text>: '</xsl:text>
Packit 8ea169
              <xsl:value-of select="@access"/>
Packit 8ea169
              <xsl:text>'
</xsl:text>
Packit 8ea169
            </xsl:message>
Packit 8ea169
          </xsl:otherwise>
Packit 8ea169
        </xsl:choose>
Packit 8ea169
      </modifier>
Packit 8ea169
      <type>
Packit 8ea169
        <xsl:call-template name="ResolveType">
Packit 8ea169
          <xsl:with-param name="node" select="."/>
Packit 8ea169
        </xsl:call-template>
Packit 8ea169
      </type>
Packit 8ea169
      <varname>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
      </varname>
Packit 8ea169
    </fieldsynopsis>
Packit 8ea169
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="property" mode="fieldsynopsislinked">
Packit 8ea169
Packit 8ea169
    <fieldsynopsis>
Packit 8ea169
      <modifier>
Packit 8ea169
        <xsl:choose>
Packit 8ea169
          <xsl:when test="@access = 'read'">
Packit 8ea169
            <xsl:text>READ</xsl:text>
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:when test="@access = 'write'">
Packit 8ea169
            <xsl:text>WRITE</xsl:text>
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:when test="@access = 'readwrite'">
Packit 8ea169
            <xsl:text>READWRITE</xsl:text>
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:otherwise>
Packit 8ea169
            <xsl:message terminate="yes">
Packit 8ea169
              <xsl:text>ERR: unknown or missing value for </xsl:text>
Packit 8ea169
              <xsl:text>@access on property </xsl:text>
Packit 8ea169
              <xsl:value-of select="concat(../@name, '.', @name)"/>
Packit 8ea169
              <xsl:text>: '</xsl:text>
Packit 8ea169
              <xsl:value-of select="@access"/>
Packit 8ea169
              <xsl:text>'
</xsl:text>
Packit 8ea169
            </xsl:message>
Packit 8ea169
          </xsl:otherwise>
Packit 8ea169
        </xsl:choose>
Packit 8ea169
      </modifier>
Packit 8ea169
      <type>
Packit 8ea169
        <xsl:call-template name="ResolveType">
Packit 8ea169
          <xsl:with-param name="node" select="."/>
Packit 8ea169
        </xsl:call-template>
Packit 8ea169
      </type>
Packit 8ea169
      <varname>
Packit 8ea169
        <xsl:attribute name="xlink:href">
Packit 8ea169
          <xsl:value-of select="concat('#', ../@name, '.', @name)"/>
Packit 8ea169
        </xsl:attribute>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
      </varname>
Packit 8ea169
    </fieldsynopsis>
Packit 8ea169
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="property" mode="detail">
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(parent::interface)">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: property </xsl:text>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
        <xsl:text> does not have an interface as parent
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @name on a property of </xsl:text>
Packit 8ea169
        <xsl:value-of select="../@name"/>
Packit 8ea169
        <xsl:text>
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@type) or @type = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @type on property </xsl:text>
Packit 8ea169
        <xsl:value-of select="concat(../@name, '.', @name)"/>
Packit 8ea169
        <xsl:text>: '</xsl:text>
Packit 8ea169
        <xsl:value-of select="@access"/>
Packit 8ea169
        <xsl:text>'
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:apply-templates select="." mode="fieldsynopsis"/>
Packit 8ea169
Packit 8ea169
    <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
    <xsl:apply-templates select="tp:added"/>
Packit 8ea169
    <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
    <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:property" mode="detail">
Packit 8ea169
    <glossentry>
Packit 8ea169
      <glossterm>
Packit 8ea169
        <xsl:if test="@name">
Packit 8ea169
          <xsl:value-of select="@name"/> −
Packit 8ea169
        </xsl:if>
Packit 8ea169
        <xsl:value-of select="@type"/>
Packit 8ea169
      </glossterm>
Packit 8ea169
      <glossdef>
Packit 8ea169
        <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
        <xsl:apply-templates select="tp:added"/>
Packit 8ea169
        <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
        <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
      </glossdef>
Packit 8ea169
    </glossentry>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:mapping">
Packit 8ea169
    <section>
Packit 8ea169
      <xsl:attribute name="xml:id">
Packit 8ea169
        <xsl:value-of select="concat('type-', @name)"/>
Packit 8ea169
      </xsl:attribute>
Packit 8ea169
      <title>
Packit 8ea169
        <literal><xsl:value-of select="@name"/></literal>
Packit 8ea169
      </title>
Packit 8ea169
      <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
      <xsl:if test="string(@array-name) != ''">
Packit 8ea169
        <para>
Packit 8ea169
          In bindings that need a separate name, arrays of
Packit 8ea169
          <xsl:value-of select="@name"/> should be called
Packit 8ea169
          <xsl:value-of select="@array-name"/>.
Packit 8ea169
        </para>
Packit 8ea169
      </xsl:if>
Packit 8ea169
      <section>
Packit 8ea169
        <title>Members</title>
Packit 8ea169
        <glosslist>
Packit 8ea169
          <xsl:apply-templates select="tp:member" mode="description"/>
Packit 8ea169
        </glosslist>
Packit 8ea169
      </section>
Packit 8ea169
    </section>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:docstring" mode="in-index"/>
Packit 8ea169
Packit 8ea169
  
Packit 8ea169
    mode="in-index">
Packit 8ea169
    − <xsl:value-of select="@type"/>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:simple-type">
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @name on a tp:simple-type
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@type) or @type = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @type on tp:simple-type</xsl:text>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
        <xsl:text>
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <section>
Packit 8ea169
      <xsl:attribute name="xml:id">
Packit 8ea169
        <xsl:value-of select="concat('type-', @name)"/>
Packit 8ea169
      </xsl:attribute>
Packit 8ea169
      <title>
Packit 8ea169
        <literal><xsl:value-of select="@name"/> − <xsl:value-of select="@type"/></literal>
Packit 8ea169
      </title>
Packit 8ea169
      <para>
Packit 8ea169
        <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
        <xsl:apply-templates select="tp:added"/>
Packit 8ea169
        <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
        <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
      </para>
Packit 8ea169
    </section>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:external-type">
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @name on a tp:external-type
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@type) or @type = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @type on tp:external-type</xsl:text>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
        <xsl:text>
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <glossentry>
Packit 8ea169
      <glossterm>
Packit 8ea169
        <xsl:attribute name="xml:id">
Packit 8ea169
          <xsl:value-of select="concat('type-', @name)"/>
Packit 8ea169
        </xsl:attribute>
Packit 8ea169
        <xsl:value-of select="@name"/> − <xsl:value-of select="@type"/>
Packit 8ea169
      </glossterm>
Packit 8ea169
      <glossdef>Defined by: <xsl:value-of select="@from"/></glossdef>
Packit 8ea169
    </glossentry>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:struct" mode="in-index">
Packit 8ea169
    − ( <xsl:for-each select="tp:member">
Packit 8ea169
          <xsl:value-of select="@type"/>
Packit 8ea169
          <xsl:if test="position() != last()">, </xsl:if>
Packit 8ea169
        </xsl:for-each> )
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:mapping" mode="in-index">
Packit 8ea169
    − a{ <xsl:for-each select="tp:member">
Packit 8ea169
          <xsl:value-of select="@type"/>
Packit 8ea169
          <xsl:if test="position() != last()"> → </xsl:if>
Packit 8ea169
        </xsl:for-each> }
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:struct">
Packit 8ea169
    <section>
Packit 8ea169
      <xsl:attribute name="xml:id">
Packit 8ea169
        <xsl:value-of select="concat('type-', @name)"/>
Packit 8ea169
      </xsl:attribute>
Packit 8ea169
      <title>
Packit 8ea169
        <literal>
Packit 8ea169
          <xsl:value-of select="@name"/>
Packit 8ea169
        </literal>
Packit 8ea169
      </title>
Packit 8ea169
      <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
      <xsl:apply-templates select="tp:added"/>
Packit 8ea169
      <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
      <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
      <xsl:choose>
Packit 8ea169
        <xsl:when test="string(@array-name) != ''">
Packit 8ea169
          <para>In bindings that need a separate name, arrays of
Packit 8ea169
            <xsl:value-of select="@name"/> should be called
Packit 8ea169
            <xsl:value-of select="@array-name"/>.</para>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:otherwise>
Packit 8ea169
          <para>Arrays of <xsl:value-of select="@name"/> don't generally
Packit 8ea169
            make sense.</para>
Packit 8ea169
        </xsl:otherwise>
Packit 8ea169
      </xsl:choose>
Packit 8ea169
      <classsynopsis>
Packit 8ea169
        <ooclass>
Packit 8ea169
          <modifier>struct</modifier>
Packit 8ea169
          <classname><xsl:value-of select="@name"/></classname>
Packit 8ea169
        </ooclass>
Packit 8ea169
        <xsl:apply-templates select="tp:member" mode="fieldsynopsis"/>
Packit 8ea169
      </classsynopsis>
Packit 8ea169
      <glosslist>
Packit 8ea169
        <xsl:apply-templates select="tp:member" mode="description"/>
Packit 8ea169
      </glosslist>
Packit 8ea169
    </section>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="arg" mode="paramdef">
Packit 8ea169
    <paramdef>
Packit 8ea169
      <xsl:call-template name="direction">
Packit 8ea169
        <xsl:with-param name="indirection" select="@direction"/>
Packit 8ea169
      </xsl:call-template>
Packit 8ea169
      <xsl:text> </xsl:text>
Packit 8ea169
      <type>
Packit 8ea169
        <xsl:call-template name="ResolveType">
Packit 8ea169
          <xsl:with-param name="node" select="."/>
Packit 8ea169
        </xsl:call-template>
Packit 8ea169
      </type>
Packit 8ea169
      <xsl:text> </xsl:text>
Packit 8ea169
      <parameter><xsl:value-of select="@name"/></parameter>
Packit 8ea169
    </paramdef>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="arg" mode="paramtable">
Packit 8ea169
    <glossentry>
Packit 8ea169
      <glossterm><literal><xsl:value-of select="@name"/></literal></glossterm>
Packit 8ea169
      <glossdef>
Packit 8ea169
        <para><xsl:apply-templates select="tp:docstring" mode="nopara"/></para>
Packit 8ea169
      </glossdef>
Packit 8ea169
    </glossentry>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="method|signal" mode="funcsynopsis">
Packit 8ea169
    <funcsynopsis>
Packit 8ea169
      <funcprototype>
Packit 8ea169
        <funcdef>
Packit 8ea169
          <function>
Packit 8ea169
            <xsl:value-of select="@name"/>
Packit 8ea169
          </function>
Packit 8ea169
        </funcdef>
Packit 8ea169
        <xsl:choose>
Packit 8ea169
          <xsl:when test="arg">
Packit 8ea169
            <xsl:apply-templates select="arg" mode="paramdef"/>
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:otherwise>
Packit 8ea169
            <void/>
Packit 8ea169
          </xsl:otherwise>
Packit 8ea169
        </xsl:choose>
Packit 8ea169
      </funcprototype>
Packit 8ea169
    </funcsynopsis>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="method|signal" mode="funcsynopsislinked">
Packit 8ea169
    <funcprototype>
Packit 8ea169
      <funcdef>
Packit 8ea169
        <function linkend="{concat(parent::interface//@name, '.', @name)}">
Packit 8ea169
          <xsl:value-of select="@name"/>
Packit 8ea169
        </function>
Packit 8ea169
      </funcdef>
Packit 8ea169
      <xsl:choose>
Packit 8ea169
        <xsl:when test="arg">
Packit 8ea169
          <xsl:apply-templates select="arg" mode="paramdef"/>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:otherwise>
Packit 8ea169
          <void/>
Packit 8ea169
        </xsl:otherwise>
Packit 8ea169
      </xsl:choose>
Packit 8ea169
    </funcprototype>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="method" mode="detail">
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(parent::interface)">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: method </xsl:text>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
        <xsl:text> does not have an interface as parent
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @name on a method of </xsl:text>
Packit 8ea169
        <xsl:value-of select="../@name"/>
Packit 8ea169
        <xsl:text>
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:for-each select="arg">
Packit 8ea169
      <xsl:if test="not(@type) or @type = ''">
Packit 8ea169
        <xsl:message terminate="yes">
Packit 8ea169
          <xsl:text>ERR: an arg of method </xsl:text>
Packit 8ea169
          <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
Packit 8ea169
          <xsl:text> has no type</xsl:text>
Packit 8ea169
        </xsl:message>
Packit 8ea169
      </xsl:if>
Packit 8ea169
      <xsl:choose>
Packit 8ea169
        <xsl:when test="@direction='in'">
Packit 8ea169
          <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
            <xsl:message terminate="yes">
Packit 8ea169
              <xsl:text>ERR: an 'in' arg of method </xsl:text>
Packit 8ea169
              <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
Packit 8ea169
              <xsl:text> has no name</xsl:text>
Packit 8ea169
            </xsl:message>
Packit 8ea169
          </xsl:if>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:when test="@direction='out'">
Packit 8ea169
          <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
            <xsl:message terminate="no">
Packit 8ea169
              <xsl:text>INFO: an 'out' arg of method </xsl:text>
Packit 8ea169
              <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
Packit 8ea169
              <xsl:text> has no name</xsl:text>
Packit 8ea169
            </xsl:message>
Packit 8ea169
          </xsl:if>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:otherwise>
Packit 8ea169
          <xsl:message terminate="yes">
Packit 8ea169
            <xsl:text>ERR: an arg of method </xsl:text>
Packit 8ea169
            <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
Packit 8ea169
            <xsl:text> has direction neither 'in' nor 'out'</xsl:text>
Packit 8ea169
          </xsl:message>
Packit 8ea169
        </xsl:otherwise>
Packit 8ea169
      </xsl:choose>
Packit 8ea169
    </xsl:for-each>
Packit 8ea169
Packit 8ea169
    <refsection>
Packit 8ea169
      <xsl:attribute name="xml:id">
Packit 8ea169
        <xsl:value-of select="concat(../@name, concat('.', @name))"/>
Packit 8ea169
      </xsl:attribute>
Packit 8ea169
      <title>
Packit 8ea169
        <literal><xsl:value-of select="concat(../@name, concat('.', @name))"/></literal>
Packit 8ea169
      </title>
Packit 8ea169
      <xsl:apply-templates select="." mode="funcsynopsis"/>
Packit 8ea169
      <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
      <xsl:apply-templates select="tp:added"/>
Packit 8ea169
      <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
      <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
Packit 8ea169
        <xsl:if test="arg">
Packit 8ea169
          <glosslist>
Packit 8ea169
            <xsl:apply-templates select="arg" mode="paramtable"/>
Packit 8ea169
          </glosslist>
Packit 8ea169
        </xsl:if>
Packit 8ea169
Packit 8ea169
        <xsl:if test="tp:possible-errors">
Packit 8ea169
          <formalpara>
Packit 8ea169
            <title>Possible errors</title>
Packit 8ea169
            <para>
Packit 8ea169
              <glosslist>
Packit 8ea169
                <xsl:apply-templates select="tp:possible-errors/tp:error"/>
Packit 8ea169
              </glosslist>
Packit 8ea169
            </para>
Packit 8ea169
          </formalpara>
Packit 8ea169
        </xsl:if>
Packit 8ea169
    </refsection>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template name="tp-type">
Packit 8ea169
    <xsl:param name="tp-type"/>
Packit 8ea169
    <xsl:param name="type"/>
Packit 8ea169
Packit 8ea169
    <xsl:variable name="single-type">
Packit 8ea169
      <xsl:choose>
Packit 8ea169
        <xsl:when test="contains($tp-type, '[]')">
Packit 8ea169
          <xsl:value-of select="substring-before($tp-type, '[]')"/>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:otherwise>
Packit 8ea169
          <xsl:value-of select="$tp-type"/>
Packit 8ea169
        </xsl:otherwise>
Packit 8ea169
      </xsl:choose>
Packit 8ea169
    </xsl:variable>
Packit 8ea169
Packit 8ea169
    <xsl:variable name="type-of-tp-type">
Packit 8ea169
      <xsl:if test="contains($tp-type, '[]')">
Packit 8ea169
        
Packit 8ea169
        
Packit 8ea169
          translate(substring-after($tp-type, '[]'), '[]', 'a'))"/>
Packit 8ea169
      </xsl:if>
Packit 8ea169
Packit 8ea169
      <xsl:choose>
Packit 8ea169
        <xsl:when test="//tp:simple-type[@name=$single-type]">
Packit 8ea169
          <xsl:value-of select="string(//tp:simple-type[@name=$single-type]/@type)"/>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:when test="//tp:struct[@name=$single-type]">
Packit 8ea169
          <xsl:text>(</xsl:text>
Packit 8ea169
          <xsl:for-each select="//tp:struct[@name=$single-type]/tp:member">
Packit 8ea169
            <xsl:value-of select="@type"/>
Packit 8ea169
          </xsl:for-each>
Packit 8ea169
          <xsl:text>)</xsl:text>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:when test="//tp:enum[@name=$single-type]">
Packit 8ea169
          <xsl:value-of select="string(//tp:enum[@name=$single-type]/@type)"/>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:when test="//tp:flags[@name=$single-type]">
Packit 8ea169
          <xsl:value-of select="string(//tp:flags[@name=$single-type]/@type)"/>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:when test="//tp:mapping[@name=$single-type]">
Packit 8ea169
          <xsl:text>a{</xsl:text>
Packit 8ea169
          <xsl:for-each select="//tp:mapping[@name=$single-type]/tp:member">
Packit 8ea169
            <xsl:value-of select="@type"/>
Packit 8ea169
          </xsl:for-each>
Packit 8ea169
          <xsl:text>}</xsl:text>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:when test="//tp:external-type[@name=$single-type]">
Packit 8ea169
          <xsl:value-of select="string(//tp:external-type[@name=$single-type]/@type)"/>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        <xsl:otherwise>
Packit 8ea169
          <xsl:message terminate="yes">
Packit 8ea169
            <xsl:text>ERR: Unable to find type '</xsl:text>
Packit 8ea169
            <xsl:value-of select="$tp-type"/>
Packit 8ea169
            <xsl:text>'
</xsl:text>
Packit 8ea169
          </xsl:message>
Packit 8ea169
        </xsl:otherwise>
Packit 8ea169
      </xsl:choose>
Packit 8ea169
    </xsl:variable>
Packit 8ea169
Packit 8ea169
    
Packit 8ea169
      string($type-of-tp-type) != string($type)">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: tp:type '</xsl:text>
Packit 8ea169
        <xsl:value-of select="$tp-type"/>
Packit 8ea169
        <xsl:text>' has D-Bus type '</xsl:text>
Packit 8ea169
        <xsl:value-of select="$type-of-tp-type"/>
Packit 8ea169
        <xsl:text>' but has been used with type='</xsl:text>
Packit 8ea169
        <xsl:value-of select="$type"/>
Packit 8ea169
        <xsl:text>'
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <link linkend="type-{$single-type}">
Packit 8ea169
      <literal><xsl:value-of select="concat('type-', $single-type)"/></literal>
Packit 8ea169
    </link>
Packit 8ea169
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template name="parenthesized-tp-type">
Packit 8ea169
    <xsl:if test="@tp:type">
Packit 8ea169
      <xsl:text> (</xsl:text>
Packit 8ea169
      <xsl:call-template name="tp-type">
Packit 8ea169
        <xsl:with-param name="tp-type" select="@tp:type"/>
Packit 8ea169
        <xsl:with-param name="type" select="@type"/>
Packit 8ea169
      </xsl:call-template>
Packit 8ea169
      <xsl:text>)</xsl:text>
Packit 8ea169
    </xsl:if>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:member" mode="fieldsynopsis">
Packit 8ea169
    <xsl:variable name="type">
Packit 8ea169
      <xsl:call-template name="ResolveType">
Packit 8ea169
        <xsl:with-param name="node" select="."/>
Packit 8ea169
      </xsl:call-template>
Packit 8ea169
    </xsl:variable>
Packit 8ea169
    <fieldsynopsis>
Packit 8ea169
      <type><xsl:value-of select="normalize-space($type)"/></type>
Packit 8ea169
      <varname><xsl:value-of select="@name"/></varname>
Packit 8ea169
    </fieldsynopsis>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:member" mode="description">
Packit 8ea169
    <glossentry>
Packit 8ea169
      <glossterm>
Packit 8ea169
        <varname><xsl:value-of select="@name"/></varname>
Packit 8ea169
      </glossterm>
Packit 8ea169
      <glossdef>
Packit 8ea169
        <xsl:choose>
Packit 8ea169
          <xsl:when test="tp:docstring">
Packit 8ea169
            <xsl:apply-templates select="tp:docstring" />
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:otherwise>
Packit 8ea169
            
Packit 8ea169
            (undocumented)
Packit 8ea169
          </xsl:otherwise>
Packit 8ea169
        </xsl:choose>
Packit 8ea169
      </glossdef>
Packit 8ea169
    </glossentry>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="tp:possible-errors/tp:error">
Packit 8ea169
    <glossentry>
Packit 8ea169
      <glossterm>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
      </glossterm>
Packit 8ea169
      <glossdef>
Packit 8ea169
        <xsl:variable name="name" select="@name"/>
Packit 8ea169
        <xsl:choose>
Packit 8ea169
          <xsl:when test="tp:docstring">
Packit 8ea169
            <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:when test="//tp:errors/tp:error[concat(../@namespace, '.', translate(@name, ' ', ''))=$name]/tp:docstring">
Packit 8ea169
            <xsl:apply-templates select="//tp:errors/tp:error[concat(../@namespace, '.', translate(@name, ' ', ''))=$name]/tp:docstring"/> (generic description)
Packit 8ea169
          </xsl:when>
Packit 8ea169
          <xsl:otherwise>
Packit 8ea169
            (Undocumented.)
Packit 8ea169
          </xsl:otherwise>
Packit 8ea169
        </xsl:choose>
Packit 8ea169
      </glossdef>
Packit 8ea169
    </glossentry>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="signal" mode="detail">
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(parent::interface)">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: signal </xsl:text>
Packit 8ea169
        <xsl:value-of select="@name"/>
Packit 8ea169
        <xsl:text> does not have an interface as parent
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>ERR: missing @name on a signal of </xsl:text>
Packit 8ea169
        <xsl:value-of select="../@name"/>
Packit 8ea169
        <xsl:text>
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
Packit 8ea169
    <xsl:for-each select="arg">
Packit 8ea169
      <xsl:if test="not(@type) or @type = ''">
Packit 8ea169
        <xsl:message terminate="yes">
Packit 8ea169
          <xsl:text>ERR: an arg of signal </xsl:text>
Packit 8ea169
          <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
Packit 8ea169
          <xsl:text> has no type</xsl:text>
Packit 8ea169
        </xsl:message>
Packit 8ea169
      </xsl:if>
Packit 8ea169
      <xsl:if test="not(@name) or @name = ''">
Packit 8ea169
        <xsl:message terminate="yes">
Packit 8ea169
          <xsl:text>ERR: an arg of signal </xsl:text>
Packit 8ea169
          <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
Packit 8ea169
          <xsl:text> has no name</xsl:text>
Packit 8ea169
        </xsl:message>
Packit 8ea169
      </xsl:if>
Packit 8ea169
      <xsl:choose>
Packit 8ea169
        <xsl:when test="not(@direction)"/>
Packit 8ea169
        <xsl:when test="@direction='out'"/>
Packit 8ea169
        
Packit 8ea169
        <xsl:when test="@direction='out'">
Packit 8ea169
          <xsl:message terminate="no">
Packit 8ea169
            <xsl:text>INFO: an arg of signal </xsl:text>
Packit 8ea169
            <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
Packit 8ea169
            <xsl:text> has unnecessary direction 'in'</xsl:text>
Packit 8ea169
          </xsl:message>
Packit 8ea169
        </xsl:when>
Packit 8ea169
        -->
Packit 8ea169
        <xsl:otherwise>
Packit 8ea169
          <xsl:message terminate="yes">
Packit 8ea169
            <xsl:text>ERR: an arg of signal </xsl:text>
Packit 8ea169
            <xsl:value-of select="concat(../../@name, '.', ../@name)"/>
Packit 8ea169
            <xsl:text> has direction other than 'out'</xsl:text>
Packit 8ea169
          </xsl:message>
Packit 8ea169
        </xsl:otherwise>
Packit 8ea169
      </xsl:choose>
Packit 8ea169
    </xsl:for-each>
Packit 8ea169
Packit 8ea169
    <refsection>
Packit 8ea169
      <xsl:attribute name="xml:id">
Packit 8ea169
        <xsl:value-of select="concat(../@name, concat('.', @name))"/>
Packit 8ea169
      </xsl:attribute>
Packit 8ea169
      <title>
Packit 8ea169
        <literal><xsl:value-of select="concat(../@name, concat('.', @name))"/></literal>
Packit 8ea169
      </title>
Packit 8ea169
      <xsl:apply-templates select="." mode="funcsynopsis"/>
Packit 8ea169
      <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
      <xsl:apply-templates select="tp:added"/>
Packit 8ea169
      <xsl:apply-templates select="tp:changed"/>
Packit 8ea169
      <xsl:apply-templates select="tp:deprecated"/>
Packit 8ea169
Packit 8ea169
      <xsl:if test="arg">
Packit 8ea169
        <glosslist>
Packit 8ea169
          <xsl:apply-templates select="arg" mode="paramtable"/>
Packit 8ea169
        </glosslist>
Packit 8ea169
      </xsl:if>
Packit 8ea169
    </refsection>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="/tp:spec">
Packit 8ea169
    <book xmlns="http://docbook.org/ns/docbook" version="5.0">
Packit 8ea169
      <bookinfo>
Packit 8ea169
        <title><xsl:value-of select="tp:title"/></title>
Packit 8ea169
        <xsl:apply-templates select="tp:copyright"/>
Packit 8ea169
        <xsl:apply-templates select="tp:license"/>
Packit 8ea169
        <xsl:if test="tp:docstring">
Packit 8ea169
          <abstract>
Packit 8ea169
            <xsl:apply-templates select="tp:docstring"/>
Packit 8ea169
          </abstract>
Packit 8ea169
        </xsl:if>
Packit 8ea169
        
Packit 8ea169
        <xsl:if test="tp:version">
Packit 8ea169
          <xsl:text> version </xsl:text>
Packit 8ea169
          <xsl:value-of select="tp:version"/>
Packit 8ea169
        </xsl:if> -->
Packit 8ea169
      </bookinfo>
Packit 8ea169
      <chapter>
Packit 8ea169
        <xsl:attribute name="xml:id">interfaces</xsl:attribute>
Packit 8ea169
        <title>Interfaces</title>
Packit 8ea169
        <xsl:apply-templates select="//node"/>
Packit 8ea169
      </chapter>
Packit 8ea169
      <xsl:call-template name="generic-types"/>
Packit 8ea169
      <xsl:if test="tp:errors">
Packit 8ea169
        <chapter>
Packit 8ea169
            <xsl:attribute name="xml:id">errors</xsl:attribute>
Packit 8ea169
            <xsl:apply-templates select="tp:errors"/>
Packit 8ea169
        </chapter>
Packit 8ea169
      </xsl:if>
Packit 8ea169
    </book>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="node">
Packit 8ea169
      <xsl:apply-templates />
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="text()">
Packit 8ea169
    <xsl:if test="normalize-space(.) != ''">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
        <xsl:text>Stray text: {{{</xsl:text>
Packit 8ea169
        <xsl:value-of select="." />
Packit 8ea169
        <xsl:text>}}}
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
    </xsl:if>
Packit 8ea169
  </xsl:template>
Packit 8ea169
Packit 8ea169
  <xsl:template match="*">
Packit 8ea169
      <xsl:message terminate="yes">
Packit 8ea169
         <xsl:text>Unrecognised element: {</xsl:text>
Packit 8ea169
         <xsl:value-of select="namespace-uri(.)" />
Packit 8ea169
         <xsl:text>}</xsl:text>
Packit 8ea169
         <xsl:value-of select="local-name(.)" />
Packit 8ea169
         <xsl:text>
</xsl:text>
Packit 8ea169
      </xsl:message>
Packit 8ea169
  </xsl:template>
Packit 8ea169
</xsl:stylesheet>
Packit 8ea169
Packit 8ea169