<?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="GModule" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="GdkPixbuf" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <include name="Pango" version="1.0"/>
  <include name="cairo" version="1.0"/>
  <namespace name="Lasem"
             version="0.4"
             shared-library="liblasem-0.4.so.0.0"
             c:identifier-prefixes="Lsm"
             c:symbol-prefixes="lsm">
    <alias name="Trait" c:type="LsmTrait">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <record name="Attribute" c:type="LsmAttribute">
      <field name="value" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <method name="is_defined" c:identifier="lsm_attribute_is_defined">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
    </record>
    <record name="AttributeInfos" c:type="LsmAttributeInfos">
      <field name="name" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="attribute_offset" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <field name="trait_class" writable="1">
        <type name="TraitClass" c:type="const LsmTraitClass*"/>
      </field>
      <field name="trait_default" writable="1">
        <type name="gpointer" c:type="void*"/>
      </field>
    </record>
    <record name="AttributeManager"
            c:type="LsmAttributeManager"
            glib:type-name="LsmAttributeManager"
            glib:get-type="lsm_attribute_manager_get_type"
            c:symbol-prefix="attribute_manager">
      <constructor name="new" c:identifier="lsm_attribute_manager_new">
        <return-value transfer-ownership="full">
          <type name="AttributeManager" c:type="LsmAttributeManager*"/>
        </return-value>
        <parameters>
          <parameter name="n_attributes" transfer-ownership="none">
            <type name="guint" c:type="unsigned int"/>
          </parameter>
          <parameter name="attribute_infos" transfer-ownership="none">
            <type name="AttributeInfos" c:type="const LsmAttributeInfos*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_attributes"
              c:identifier="lsm_attribute_manager_add_attributes">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="n_attributes" transfer-ownership="none">
            <type name="guint" c:type="unsigned int"/>
          </parameter>
          <parameter name="attribute_infos" transfer-ownership="none">
            <type name="AttributeInfos" c:type="const LsmAttributeInfos*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clean_attributes"
              c:identifier="lsm_attribute_manager_clean_attributes">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="instance" transfer-ownership="none">
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </method>
      <method name="duplicate" c:identifier="lsm_attribute_manager_duplicate">
        <return-value transfer-ownership="full">
          <type name="AttributeManager" c:type="LsmAttributeManager*"/>
        </return-value>
      </method>
      <method name="get_attribute"
              c:identifier="lsm_attribute_manager_get_attribute">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <parameter name="instance" transfer-ownership="none">
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lsm_attribute_manager_ref">
        <return-value transfer-ownership="full">
          <type name="AttributeManager" c:type="LsmAttributeManager*"/>
        </return-value>
      </method>
      <method name="serialize" c:identifier="lsm_attribute_manager_serialize">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <parameter name="instance" transfer-ownership="none">
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_attribute"
              c:identifier="lsm_attribute_manager_set_attribute">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="instance" transfer-ownership="none">
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lsm_attribute_manager_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="Box"
            c:type="LsmBox"
            glib:type-name="LsmBox"
            glib:get-type="lsm_box_get_type"
            c:symbol-prefix="box">
      <field name="x" writable="1">
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="y" writable="1">
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="width" writable="1">
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="height" writable="1">
        <type name="gdouble" c:type="double"/>
      </field>
    </record>
    <constant name="DOM_VIEW_DEFAULT_RESOLUTION"
              value="72.000000"
              c:type="LSM_DOM_VIEW_DEFAULT_RESOLUTION">
      <type name="gdouble" c:type="gdouble"/>
    </constant>
    <constant name="DOM_VIEW_DEFAULT_VIEWBOX_HEIGHT"
              value="200.000000"
              c:type="LSM_DOM_VIEW_DEFAULT_VIEWBOX_HEIGHT">
      <type name="gdouble" c:type="gdouble"/>
    </constant>
    <constant name="DOM_VIEW_DEFAULT_VIEWBOX_WIDTH"
              value="320.000000"
              c:type="LSM_DOM_VIEW_DEFAULT_VIEWBOX_WIDTH">
      <type name="gdouble" c:type="gdouble"/>
    </constant>
    <record name="DebugCategory" c:type="LsmDebugCategory">
      <field name="name" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="level" writable="1">
        <type name="DebugLevel" c:type="LsmDebugLevel"/>
      </field>
    </record>
    <enumeration name="DebugLevel"
                 glib:type-name="LsmDebugLevel"
                 glib:get-type="lsm_debug_level_get_type"
                 c:type="LsmDebugLevel">
      <member name="none"
              value="0"
              c:identifier="LSM_DEBUG_LEVEL_NONE"
              glib:nick="none"/>
      <member name="warning"
              value="1"
              c:identifier="LSM_DEBUG_LEVEL_WARNING"
              glib:nick="warning"/>
      <member name="debug"
              value="2"
              c:identifier="LSM_DEBUG_LEVEL_DEBUG"
              glib:nick="debug"/>
      <member name="log"
              value="3"
              c:identifier="LSM_DEBUG_LEVEL_LOG"
              glib:nick="log"/>
      <member name="count"
              value="4"
              c:identifier="LSM_DEBUG_LEVEL_COUNT"
              glib:nick="count"/>
    </enumeration>
    <class name="DomCharacterData"
           c:symbol-prefix="dom_character_data"
           c:type="LsmDomCharacterData"
           parent="DomNode"
           abstract="1"
           glib:type-name="LsmDomCharacterData"
           glib:get-type="lsm_dom_character_data_get_type"
           glib:type-struct="DomCharacterDataClass">
      <method name="get_data" c:identifier="lsm_dom_character_data_get_data">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
      </method>
      <method name="set_data" c:identifier="lsm_dom_character_data_set_data">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="node">
        <type name="DomNode" c:type="LsmDomNode"/>
      </field>
      <field name="data">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="DomCharacterDataClass"
            c:type="LsmDomCharacterDataClass"
            glib:is-gtype-struct-for="DomCharacterData">
      <field name="parent_class">
        <type name="DomNodeClass" c:type="LsmDomNodeClass"/>
      </field>
    </record>
    <class name="DomDocument"
           c:symbol-prefix="dom_document"
           c:type="LsmDomDocument"
           parent="DomNode"
           abstract="1"
           glib:type-name="LsmDomDocument"
           glib:get-type="lsm_dom_document_get_type"
           glib:type-struct="DomDocumentClass">
      <constructor name="new_from_memory"
                   c:identifier="lsm_dom_document_new_from_memory"
                   throws="1">
        <return-value transfer-ownership="full">
          <type name="DomDocument" c:type="LsmDomDocument*"/>
        </return-value>
        <parameters>
          <parameter name="buffer" transfer-ownership="none">
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_path"
                   c:identifier="lsm_dom_document_new_from_path"
                   throws="1">
        <return-value transfer-ownership="full">
          <type name="DomDocument" c:type="LsmDomDocument*"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_url"
                   c:identifier="lsm_dom_document_new_from_url"
                   throws="1">
        <return-value transfer-ownership="full">
          <type name="DomDocument" c:type="LsmDomDocument*"/>
        </return-value>
        <parameters>
          <parameter name="url" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="create_element" invoker="create_element">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly created #LsmDomElement</doc>
          <type name="DomElement" c:type="LsmDomElement*"/>
        </return-value>
        <parameters>
          <parameter name="tag_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">name of the element to create</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_text_node" invoker="create_text_node">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly created #LsmDomText</doc>
          <type name="DomText" c:type="LsmDomText*"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">content of the text node</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_view" invoker="create_view">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #LsmDomView</doc>
          <type name="DomView" c:type="LsmDomView*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_document_element"
                      invoker="get_document_element">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">document element</doc>
          <type name="DomElement" c:type="LsmDomElement*"/>
        </return-value>
      </virtual-method>
      <method name="append_from_memory"
              c:identifier="lsm_dom_document_append_from_memory"
              throws="1">
        <doc xml:whitespace="preserve">Append a chunk of xml tree to an existing document. The resulting nodes will be appended to
@node, or to @document if @node == NULL.

Size set to a negative value indicated an unknow xml data size.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="node" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #LsmDomNode</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:whitespace="preserve">a memory buffer holding xml data</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:whitespace="preserve">size of the xml data, in bytes</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_element"
              c:identifier="lsm_dom_document_create_element">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly created #LsmDomElement</doc>
          <type name="DomElement" c:type="LsmDomElement*"/>
        </return-value>
        <parameters>
          <parameter name="tag_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">name of the element to create</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_text_node"
              c:identifier="lsm_dom_document_create_text_node">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly created #LsmDomText</doc>
          <type name="DomText" c:type="LsmDomText*"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">content of the text node</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_view" c:identifier="lsm_dom_document_create_view">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #LsmDomView</doc>
          <type name="DomView" c:type="LsmDomView*"/>
        </return-value>
      </method>
      <method name="get_document_element"
              c:identifier="lsm_dom_document_get_document_element">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">document element</doc>
          <type name="DomElement" c:type="LsmDomElement*"/>
        </return-value>
      </method>
      <method name="get_element_by_id"
              c:identifier="lsm_dom_document_get_element_by_id">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the requested element, NULL if not found.</doc>
          <type name="DomElement" c:type="LsmDomElement*"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:whitespace="preserve">id of the element to find</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_href_data"
              c:identifier="lsm_dom_document_get_href_data">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated buffer containing the requested data.</doc>
          <type name="gpointer" c:type="void*"/>
        </return-value>
        <parameters>
          <parameter name="href" transfer-ownership="none">
            <doc xml:whitespace="preserve">href</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:whitespace="preserve">placeholder for the size of the returned data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_url" c:identifier="lsm_dom_document_get_url">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
      </method>
      <method name="register_element"
              c:identifier="lsm_dom_document_register_element">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none">
            <type name="DomElement" c:type="LsmDomElement*"/>
          </parameter>
          <parameter name="id" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_to_memory"
              c:identifier="lsm_dom_document_save_to_memory"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="buffer" transfer-ownership="none">
            <type name="gpointer" c:type="void**"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_to_path"
              c:identifier="lsm_dom_document_save_to_path"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_to_stream"
              c:identifier="lsm_dom_document_save_to_stream"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:whitespace="preserve">stream to save to</doc>
            <type name="Gio.OutputStream" c:type="GOutputStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_to_url"
              c:identifier="lsm_dom_document_save_to_url"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_path" c:identifier="lsm_dom_document_set_path">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_url" c:identifier="lsm_dom_document_set_url">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="url" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="node">
        <type name="DomNode" c:type="LsmDomNode"/>
      </field>
      <field name="ids">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="elements">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="url">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="DomDocumentClass"
            c:type="LsmDomDocumentClass"
            glib:is-gtype-struct-for="DomDocument">
      <field name="parent_class">
        <type name="DomNodeClass" c:type="LsmDomNodeClass"/>
      </field>
      <field name="get_document_element">
        <callback name="get_document_element">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">document element</doc>
            <type name="DomElement" c:type="LsmDomElement*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomDocument" c:type="LsmDomDocument*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_element">
        <callback name="create_element">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a newly created #LsmDomElement</doc>
            <type name="DomElement" c:type="LsmDomElement*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomDocument" c:type="LsmDomDocument*"/>
            </parameter>
            <parameter name="tag_name" transfer-ownership="none">
              <doc xml:whitespace="preserve">name of the element to create</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_text_node">
        <callback name="create_text_node">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a newly created #LsmDomText</doc>
            <type name="DomText" c:type="LsmDomText*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomDocument" c:type="LsmDomDocument*"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:whitespace="preserve">content of the text node</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_view">
        <callback name="create_view">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a new #LsmDomView</doc>
            <type name="DomView" c:type="LsmDomView*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomDocument" c:type="LsmDomDocument*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <callback name="DomDocumentCreateFunction"
              c:type="LsmDomDocumentCreateFunction"
              introspectable="0">
      <return-value>
        <type name="DomDocument" c:type="LsmDomDocument*"/>
      </return-value>
    </callback>
    <class name="DomDocumentFragment"
           c:symbol-prefix="dom_document_fragment"
           c:type="LsmDomDocumentFragment"
           parent="DomNode"
           abstract="1"
           glib:type-name="LsmDomDocumentFragment"
           glib:get-type="lsm_dom_document_fragment_get_type"
           glib:type-struct="DomDocumentFragmentClass">
      <constructor name="new" c:identifier="lsm_dom_document_fragment_new">
        <return-value transfer-ownership="full">
          <type name="DomDocumentFragment" c:type="LsmDomDocumentFragment*"/>
        </return-value>
      </constructor>
      <field name="node">
        <type name="DomNode" c:type="LsmDomNode"/>
      </field>
    </class>
    <record name="DomDocumentFragmentClass"
            c:type="LsmDomDocumentFragmentClass"
            glib:is-gtype-struct-for="DomDocumentFragment">
      <field name="parent_class">
        <type name="DomNodeClass" c:type="LsmDomNodeClass"/>
      </field>
    </record>
    <class name="DomElement"
           c:symbol-prefix="dom_element"
           c:type="LsmDomElement"
           parent="DomNode"
           abstract="1"
           glib:type-name="LsmDomElement"
           glib:get-type="lsm_dom_element_get_type"
           glib:type-struct="DomElementClass">
      <virtual-method name="get_attribute" invoker="get_attribute">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">attribute value, as string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">attribute name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_serialized_attributes">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="char*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="set_attribute" invoker="set_attribute">
        <doc xml:whitespace="preserve">Set the atribute value.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">attribute name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="attribute_value" transfer-ownership="none">
            <doc xml:whitespace="preserve">attribute value as string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_attribute"
              c:identifier="lsm_dom_element_get_attribute">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">attribute value, as string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">attribute name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tag_name" c:identifier="lsm_dom_element_get_tag_name">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">element tag name.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
      </method>
      <method name="set_attribute"
              c:identifier="lsm_dom_element_set_attribute">
        <doc xml:whitespace="preserve">Set the atribute value.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">attribute name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="attribute_value" transfer-ownership="none">
            <doc xml:whitespace="preserve">attribute value as string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="node">
        <type name="DomNode" c:type="LsmDomNode"/>
      </field>
    </class>
    <record name="DomElementClass"
            c:type="LsmDomElementClass"
            glib:is-gtype-struct-for="DomElement">
      <field name="parent_class">
        <type name="DomNodeClass" c:type="LsmDomNodeClass"/>
      </field>
      <field name="get_attribute">
        <callback name="get_attribute">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">attribute value, as string.</doc>
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomElement" c:type="LsmDomElement*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <doc xml:whitespace="preserve">attribute name</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_attribute">
        <callback name="set_attribute">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomElement" c:type="LsmDomElement*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <doc xml:whitespace="preserve">attribute name</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="attribute_value" transfer-ownership="none">
              <doc xml:whitespace="preserve">attribute value as string</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_serialized_attributes">
        <callback name="get_serialized_attributes">
          <return-value transfer-ownership="full">
            <type name="utf8" c:type="char*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomElement" c:type="LsmDomElement*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="DomNamedNodeMap"
           c:symbol-prefix="dom_named_node_map"
           c:type="LsmDomNamedNodeMap"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="LsmDomNamedNodeMap"
           glib:get-type="lsm_dom_named_node_map_get_type"
           glib:type-struct="DomNamedNodeMapClass">
      <virtual-method name="get" introspectable="0">
        <return-value>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_item" invoker="get_item">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The node corresponding to @index, NULL on error.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="index" transfer-ownership="none">
            <doc xml:whitespace="preserve">item index</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_length" invoker="get_length">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="unsigned"/>
        </return-value>
      </virtual-method>
      <virtual-method name="remove" introspectable="0">
        <return-value>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set" introspectable="0">
        <return-value>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="node" transfer-ownership="none">
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_item" c:identifier="lsm_dom_named_node_map_get_item">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The node corresponding to @index, NULL on error.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="index" transfer-ownership="none">
            <doc xml:whitespace="preserve">item index</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_length"
              c:identifier="lsm_dom_named_node_map_get_length">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="unsigned int"/>
        </return-value>
      </method>
      <method name="get_named_item"
              c:identifier="lsm_dom_named_node_map_get_named_item">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The corresponding node, NULL if not found.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">name of the requested item</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_named_item"
              c:identifier="lsm_dom_named_node_map_remove_named_item">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">removed node, NULL on error.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">name of the item to remove</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_named_item"
              c:identifier="lsm_dom_named_node_map_set_named_item">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">same as @node, NULL on error.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="node" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #LsmDomNode</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </method>
      <field name="object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="DomNamedNodeMapClass"
            c:type="LsmDomNamedNodeMapClass"
            glib:is-gtype-struct-for="DomNamedNodeMap">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get" introspectable="0">
        <callback name="get" introspectable="0">
          <return-value>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </return-value>
          <parameters>
            <parameter name="map" transfer-ownership="none">
              <type name="DomNamedNodeMap" c:type="LsmDomNamedNodeMap*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set" introspectable="0">
        <callback name="set" introspectable="0">
          <return-value>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </return-value>
          <parameters>
            <parameter name="map" transfer-ownership="none">
              <type name="DomNamedNodeMap" c:type="LsmDomNamedNodeMap*"/>
            </parameter>
            <parameter name="node" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove" introspectable="0">
        <callback name="remove" introspectable="0">
          <return-value>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </return-value>
          <parameters>
            <parameter name="map" transfer-ownership="none">
              <type name="DomNamedNodeMap" c:type="LsmDomNamedNodeMap*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_item">
        <callback name="get_item">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">The node corresponding to @index, NULL on error.</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </return-value>
          <parameters>
            <parameter name="map" transfer-ownership="none">
              <type name="DomNamedNodeMap" c:type="LsmDomNamedNodeMap*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <doc xml:whitespace="preserve">item index</doc>
              <type name="guint" c:type="unsigned int"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_length">
        <callback name="get_length">
          <return-value transfer-ownership="none">
            <type name="guint" c:type="unsigned"/>
          </return-value>
          <parameters>
            <parameter name="map" transfer-ownership="none">
              <type name="DomNamedNodeMap" c:type="LsmDomNamedNodeMap*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="DomNode"
           c:symbol-prefix="dom_node"
           c:type="LsmDomNode"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="LsmDomNode"
           glib:get-type="lsm_dom_node_get_type"
           glib:type-struct="DomNodeClass">
      <virtual-method name="can_append_child">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="new_child" transfer-ownership="none">
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="changed" invoker="changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="child_changed">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="child" transfer-ownership="none">
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_node_name" invoker="get_node_name">
        <doc xml:whitespace="preserve">Gets the node name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the node name.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_node_type" invoker="get_node_type">
        <return-value transfer-ownership="none">
          <type name="DomNodeType" c:type="LsmDomNodeType"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_node_value" invoker="get_node_value">
        <doc xml:whitespace="preserve">Gets the node value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the node value.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="post_new_child">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="child" transfer-ownership="none">
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="pre_remove_child">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="child" transfer-ownership="none">
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_node_value" invoker="set_node_value">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="new_value" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write_to_stream"
                      invoker="write_to_stream"
                      throws="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="stream" transfer-ownership="none">
            <type name="Gio.OutputStream" c:type="GOutputStream*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="append_child" c:identifier="lsm_dom_node_append_child">
        <doc xml:whitespace="preserve">Adds the node @new_child to the end of the list of children of this node.
If the @new_child is already in the tree, it is first removed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the added node.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="new_child" transfer-ownership="full">
            <doc xml:whitespace="preserve">node to append</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="changed" c:identifier="lsm_dom_node_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="get_child_nodes"
              c:identifier="lsm_dom_node_get_child_nodes">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">node child list</doc>
          <type name="DomNodeList" c:type="LsmDomNodeList*"/>
        </return-value>
      </method>
      <method name="get_first_child"
              c:identifier="lsm_dom_node_get_first_child">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">node first child</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
      </method>
      <method name="get_last_child" c:identifier="lsm_dom_node_get_last_child">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">node last child</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
      </method>
      <method name="get_next_sibling"
              c:identifier="lsm_dom_node_get_next_sibling">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">node next sibling</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
      </method>
      <method name="get_node_name" c:identifier="lsm_dom_node_get_node_name">
        <doc xml:whitespace="preserve">Gets the node name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the node name.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
      </method>
      <method name="get_node_type" c:identifier="lsm_dom_node_get_node_type">
        <return-value transfer-ownership="none">
          <type name="DomNodeType" c:type="LsmDomNodeType"/>
        </return-value>
      </method>
      <method name="get_node_value" c:identifier="lsm_dom_node_get_node_value">
        <doc xml:whitespace="preserve">Gets the node value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the node value.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
      </method>
      <method name="get_owner_document"
              c:identifier="lsm_dom_node_get_owner_document">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">node owner document</doc>
          <type name="DomDocument" c:type="LsmDomDocument*"/>
        </return-value>
      </method>
      <method name="get_parent_node"
              c:identifier="lsm_dom_node_get_parent_node">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">node parent</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
      </method>
      <method name="get_previous_sibling"
              c:identifier="lsm_dom_node_get_previous_sibling">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">node previous sibling</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
      </method>
      <method name="has_child_nodes"
              c:identifier="lsm_dom_node_has_child_nodes">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="insert_before" c:identifier="lsm_dom_node_insert_before">
        <doc xml:whitespace="preserve">Inserts the node @new_child before the existing child node @ref_child. If
@ref_child is null, insert @new_child at the end of the list of children.
If the @new_child is already in the tree, it is first removed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the inserted node.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="new_child" transfer-ownership="full">
            <doc xml:whitespace="preserve">node to insert</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
          <parameter name="ref_child" transfer-ownership="none">
            <doc xml:whitespace="preserve">reference node, i.e., the node before which the new node must be inserted.</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_child" c:identifier="lsm_dom_node_remove_child">
        <doc xml:whitespace="preserve">Removes the child node indicated by @old_child from the list of children, and returns it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the removed node.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="old_child" transfer-ownership="none">
            <doc xml:whitespace="preserve">node to remove.</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="replace_child" c:identifier="lsm_dom_node_replace_child">
        <doc xml:whitespace="preserve">Replaces the child node @old_child with @new_child in the list of children,
and returns the @old_child node.
If the @new_child is already in the tree, it is first removed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the replaced node.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="new_child" transfer-ownership="full">
            <doc xml:whitespace="preserve">a replacement node</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
          <parameter name="old_child" transfer-ownership="none">
            <doc xml:whitespace="preserve">node to replace</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_node_value" c:identifier="lsm_dom_node_set_node_value">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="new_value" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_to_stream"
              c:identifier="lsm_dom_node_write_to_stream"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="stream" transfer-ownership="none">
            <type name="Gio.OutputStream" c:type="GOutputStream*"/>
          </parameter>
        </parameters>
      </method>
      <field name="object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="next_sibling">
        <type name="DomNode" c:type="LsmDomNode*"/>
      </field>
      <field name="previous_sibling">
        <type name="DomNode" c:type="LsmDomNode*"/>
      </field>
      <field name="parent_node">
        <type name="DomNode" c:type="LsmDomNode*"/>
      </field>
      <field name="first_child">
        <type name="DomNode" c:type="LsmDomNode*"/>
      </field>
      <field name="last_child">
        <type name="DomNode" c:type="LsmDomNode*"/>
      </field>
    </class>
    <record name="DomNodeClass"
            c:type="LsmDomNodeClass"
            glib:is-gtype-struct-for="DomNode">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_node_name">
        <callback name="get_node_name">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the node name.</doc>
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_node_value">
        <callback name="get_node_value">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the node value.</doc>
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_node_value">
        <callback name="set_node_value">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
            <parameter name="new_value" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_node_type">
        <callback name="get_node_type">
          <return-value transfer-ownership="none">
            <type name="DomNodeType" c:type="LsmDomNodeType"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="can_append_child">
        <callback name="can_append_child">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
            <parameter name="new_child" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="post_new_child">
        <callback name="post_new_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="parent" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pre_remove_child">
        <callback name="pre_remove_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="parent" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="changed">
        <callback name="changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_changed">
        <callback name="child_changed">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write_to_stream">
        <callback name="write_to_stream" throws="1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="DomNode" c:type="LsmDomNode*"/>
            </parameter>
            <parameter name="stream" transfer-ownership="none">
              <type name="Gio.OutputStream" c:type="GOutputStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="DomNodeList"
           c:symbol-prefix="dom_node_list"
           c:type="LsmDomNodeList"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="LsmDomNodeList"
           glib:get-type="lsm_dom_node_list_get_type"
           glib:type-struct="DomNodeListClass">
      <virtual-method name="get_item" invoker="get_item">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the node corresponding to index, NULL on error.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="index" transfer-ownership="none">
            <doc xml:whitespace="preserve">id of the item to retrieve</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_length" invoker="get_length">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="unsigned"/>
        </return-value>
      </virtual-method>
      <method name="get_item" c:identifier="lsm_dom_node_list_get_item">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the node corresponding to index, NULL on error.</doc>
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="index" transfer-ownership="none">
            <doc xml:whitespace="preserve">id of the item to retrieve</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_length" c:identifier="lsm_dom_node_list_get_length">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="unsigned int"/>
        </return-value>
      </method>
      <field name="object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="DomNodeListClass"
            c:type="LsmDomNodeListClass"
            glib:is-gtype-struct-for="DomNodeList">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_item">
        <callback name="get_item">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the node corresponding to index, NULL on error.</doc>
            <type name="DomNode" c:type="LsmDomNode*"/>
          </return-value>
          <parameters>
            <parameter name="list" transfer-ownership="none">
              <type name="DomNodeList" c:type="LsmDomNodeList*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <doc xml:whitespace="preserve">id of the item to retrieve</doc>
              <type name="guint" c:type="unsigned int"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_length">
        <callback name="get_length">
          <return-value transfer-ownership="none">
            <type name="guint" c:type="unsigned"/>
          </return-value>
          <parameters>
            <parameter name="list" transfer-ownership="none">
              <type name="DomNodeList" c:type="LsmDomNodeList*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <enumeration name="DomNodeType"
                 glib:type-name="LsmDomNodeType"
                 glib:get-type="lsm_dom_node_type_get_type"
                 c:type="LsmDomNodeType">
      <member name="element_node"
              value="1"
              c:identifier="LSM_DOM_NODE_TYPE_ELEMENT_NODE"
              glib:nick="element-node"/>
      <member name="attribute_node"
              value="2"
              c:identifier="LSM_DOM_NODE_TYPE_ATTRIBUTE_NODE"
              glib:nick="attribute-node"/>
      <member name="text_node"
              value="3"
              c:identifier="LSM_DOM_NODE_TYPE_TEXT_NODE"
              glib:nick="text-node"/>
      <member name="cdata_section_node"
              value="4"
              c:identifier="LSM_DOM_NODE_TYPE_CDATA_SECTION_NODE"
              glib:nick="cdata-section-node"/>
      <member name="entity_reference_node"
              value="5"
              c:identifier="LSM_DOM_NODE_TYPE_ENTITY_REFERENCE_NODE"
              glib:nick="entity-reference-node"/>
      <member name="entity_node"
              value="6"
              c:identifier="LSM_DOM_NODE_TYPE_ENTITY_NODE"
              glib:nick="entity-node"/>
      <member name="processing_instruction_node"
              value="7"
              c:identifier="LSM_DOM_NODE_TYPE_PROCESSING_INSTRUCTION_NODE"
              glib:nick="processing-instruction-node"/>
      <member name="comment_node"
              value="8"
              c:identifier="LSM_DOM_NODE_TYPE_COMMENT_NODE"
              glib:nick="comment-node"/>
      <member name="document_node"
              value="9"
              c:identifier="LSM_DOM_NODE_TYPE_DOCUMENT_NODE"
              glib:nick="document-node"/>
      <member name="document_type_node"
              value="10"
              c:identifier="LSM_DOM_NODE_TYPE_DOCUMENT_TYPE_NODE"
              glib:nick="document-type-node"/>
      <member name="document_fragment_node"
              value="11"
              c:identifier="LSM_DOM_NODE_TYPE_DOCUMENT_FRAGMENT_NODE"
              glib:nick="document-fragment-node"/>
      <member name="notation_node"
              value="12"
              c:identifier="LSM_DOM_NODE_TYPE_NOTATION_NODE"
              glib:nick="notation-node"/>
    </enumeration>
    <class name="DomText"
           c:symbol-prefix="dom_text"
           c:type="LsmDomText"
           parent="DomCharacterData"
           glib:type-name="LsmDomText"
           glib:get-type="lsm_dom_text_get_type"
           glib:type-struct="DomTextClass">
      <constructor name="new" c:identifier="lsm_dom_text_new">
        <return-value transfer-ownership="full">
          <type name="DomNode" c:type="LsmDomNode*"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="character_data">
        <type name="DomCharacterData" c:type="LsmDomCharacterData"/>
      </field>
    </class>
    <record name="DomTextClass"
            c:type="LsmDomTextClass"
            glib:is-gtype-struct-for="DomText">
      <field name="parent_class">
        <type name="DomCharacterDataClass" c:type="LsmDomCharacterDataClass"/>
      </field>
    </record>
    <class name="DomView"
           c:symbol-prefix="dom_view"
           c:type="LsmDomView"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="LsmDomView"
           glib:get-type="lsm_dom_view_get_type"
           glib:type-struct="DomViewClass">
      <virtual-method name="measure">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <type name="gdouble" c:type="double*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gdouble" c:type="double*"/>
          </parameter>
          <parameter name="baseline" transfer-ownership="none">
            <type name="gdouble" c:type="double*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="render">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="set_debug" invoker="set_debug">
        <doc xml:whitespace="preserve">Configure feature debug.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="feature" transfer-ownership="none">
            <doc xml:whitespace="preserve">name of the feature to debug</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="enable" transfer-ownership="none">
            <doc xml:whitespace="preserve">wether to enable debugging</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_resolution" c:identifier="lsm_dom_view_get_resolution">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">view resolution, in pixel per inch.</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
      </method>
      <method name="get_size" c:identifier="lsm_dom_view_get_size">
        <doc xml:whitespace="preserve">Get the view size and baseline. Baseline is for use of view inside bloc of text.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">view width placeholder, in points</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">view height placeholder, in points</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
          <parameter name="baseline" transfer-ownership="none">
            <doc xml:whitespace="preserve">view baseline, in points</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_size_pixels"
              c:identifier="lsm_dom_view_get_size_pixels">
        <doc xml:whitespace="preserve">Get the view size and baseline. Baseline is for use of view inside bloc of text.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">view width placeholder, in pixels</doc>
            <type name="guint" c:type="unsigned int*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">view height placeholder, in pixels</doc>
            <type name="guint" c:type="unsigned int*"/>
          </parameter>
          <parameter name="baseline" transfer-ownership="none">
            <doc xml:whitespace="preserve">view baseline, in pixels</doc>
            <type name="guint" c:type="unsigned int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_viewport" c:identifier="lsm_dom_view_get_viewport">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">viewport size, in points.</doc>
          <type name="Box" c:type="LsmBox"/>
        </return-value>
      </method>
      <method name="get_viewport_pixels"
              c:identifier="lsm_dom_view_get_viewport_pixels">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">viewport size, in pixels.</doc>
          <type name="Box" c:type="LsmBox"/>
        </return-value>
      </method>
      <method name="render" c:identifier="lsm_dom_view_render">
        <doc xml:whitespace="preserve">Render @view in the @cairo context.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="cairo" transfer-ownership="none">
            <doc xml:whitespace="preserve">cairo context</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">x posiiton for rendering</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">y position for rendering</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_debug" c:identifier="lsm_dom_view_set_debug">
        <doc xml:whitespace="preserve">Configure feature debug.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="feature" transfer-ownership="none">
            <doc xml:whitespace="preserve">name of the feature to debug</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="enable" transfer-ownership="none">
            <doc xml:whitespace="preserve">wether to enable debugging</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_document" c:identifier="lsm_dom_view_set_document">
        <doc xml:whitespace="preserve">Change the document attached to @view. The previously attached document is unreferenced.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="document" transfer-ownership="full">
            <doc xml:whitespace="preserve">a #LsmDomDocument</doc>
            <type name="DomDocument" c:type="LsmDomDocument*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_resolution" c:identifier="lsm_dom_view_set_resolution">
        <doc xml:whitespace="preserve">Set the view resolution, in pixel per inch.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="ppi" transfer-ownership="none">
            <doc xml:whitespace="preserve">resolution, in pixel per inch.</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_viewport" c:identifier="lsm_dom_view_set_viewport">
        <doc xml:whitespace="preserve">Set the viewport size.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="viewport_pt" transfer-ownership="none">
            <doc xml:whitespace="preserve">viewport size, in points</doc>
            <type name="Box" c:type="const LsmBox*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_viewport_pixels"
              c:identifier="lsm_dom_view_set_viewport_pixels">
        <doc xml:whitespace="preserve">Set the viewport size.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="viewport" transfer-ownership="none">
            <doc xml:whitespace="preserve">viewport size, in pixels</doc>
            <type name="Box" c:type="const LsmBox*"/>
          </parameter>
        </parameters>
      </method>
      <field name="object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="document">
        <type name="DomDocument" c:type="LsmDomDocument*"/>
      </field>
      <field name="font_description">
        <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
      </field>
      <field name="pango_layout">
        <type name="Pango.Layout" c:type="PangoLayout*"/>
      </field>
      <field name="measure_pango_layout">
        <type name="Pango.Layout" c:type="PangoLayout*"/>
      </field>
      <field name="cairo">
        <type name="cairo.Context" c:type="cairo_t*"/>
      </field>
      <field name="is_vector">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="resolution_ppi">
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="viewport_pt">
        <type name="Box" c:type="LsmBox"/>
      </field>
    </class>
    <record name="DomViewClass"
            c:type="LsmDomViewClass"
            glib:is-gtype-struct-for="DomView">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="document_type">
        <type name="GType" c:type="GType"/>
      </field>
      <field name="measure">
        <callback name="measure">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="view" transfer-ownership="none">
              <type name="DomView" c:type="LsmDomView*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <type name="gdouble" c:type="double*"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <type name="gdouble" c:type="double*"/>
            </parameter>
            <parameter name="baseline" transfer-ownership="none">
              <type name="gdouble" c:type="double*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="render">
        <callback name="render">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="view" transfer-ownership="none">
              <type name="DomView" c:type="LsmDomView*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_debug">
        <callback name="set_debug">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="view" transfer-ownership="none">
              <type name="DomView" c:type="LsmDomView*"/>
            </parameter>
            <parameter name="feature" transfer-ownership="none">
              <doc xml:whitespace="preserve">name of the feature to debug</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="enable" transfer-ownership="none">
              <doc xml:whitespace="preserve">wether to enable debugging</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="Extents"
            c:type="LsmExtents"
            glib:type-name="LsmExtents"
            glib:get-type="lsm_extents_get_type"
            c:symbol-prefix="extents">
      <field name="x1" writable="1">
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="y1" writable="1">
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="x2" writable="1">
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="y2" writable="1">
        <type name="gdouble" c:type="double"/>
      </field>
    </record>
    <record name="Property" c:type="LsmProperty">
      <field name="id" writable="1">
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="flags" writable="1">
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="value" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
    </record>
    <record name="PropertyBag" c:type="LsmPropertyBag">
      <field name="properties" writable="1">
        <type name="GLib.SList" c:type="GSList*">
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <method name="init" c:identifier="lsm_property_bag_init">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="PropertyInfos" c:type="LsmPropertyInfos">
      <field name="name" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="id" writable="1">
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="trait_class" writable="1">
        <type name="TraitClass" c:type="const LsmTraitClass*"/>
      </field>
      <field name="trait_default" writable="1">
        <type name="utf8" c:type="const char*"/>
      </field>
    </record>
    <record name="PropertyManager"
            c:type="LsmPropertyManager"
            glib:type-name="LsmPropertyManager"
            glib:get-type="lsm_property_manager_get_type"
            c:symbol-prefix="property_manager">
      <constructor name="new" c:identifier="lsm_property_manager_new">
        <return-value transfer-ownership="full">
          <type name="PropertyManager" c:type="LsmPropertyManager*"/>
        </return-value>
        <parameters>
          <parameter name="n_properties" transfer-ownership="none">
            <type name="guint" c:type="unsigned int"/>
          </parameter>
          <parameter name="property_infos" transfer-ownership="none">
            <type name="PropertyInfos" c:type="const LsmPropertyInfos*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="apply_property_bag"
              c:identifier="lsm_property_manager_apply_property_bag">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="property_bag" transfer-ownership="none">
            <type name="PropertyBag" c:type="LsmPropertyBag*"/>
          </parameter>
          <parameter name="style" transfer-ownership="none">
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="parent_style" transfer-ownership="none">
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clean_properties"
              c:identifier="lsm_property_manager_clean_properties">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="property_bag" transfer-ownership="none">
            <type name="PropertyBag" c:type="LsmPropertyBag*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_property"
              c:identifier="lsm_property_manager_get_property">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="property_bag" transfer-ownership="none">
            <type name="PropertyBag" c:type="LsmPropertyBag*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_default_style"
              c:identifier="lsm_property_manager_init_default_style">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="style" transfer-ownership="none">
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lsm_property_manager_ref">
        <return-value transfer-ownership="full">
          <type name="PropertyManager" c:type="LsmPropertyManager*"/>
        </return-value>
      </method>
      <method name="serialize" c:identifier="lsm_property_manager_serialize">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <parameter name="property_bag" transfer-ownership="none">
            <type name="PropertyBag" c:type="LsmPropertyBag*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_property"
              c:identifier="lsm_property_manager_set_property">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="property_bag" transfer-ownership="none">
            <type name="PropertyBag" c:type="LsmPropertyBag*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lsm_property_manager_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="TraitClass" c:type="LsmTraitClass">
      <field name="size" writable="1">
        <type name="gulong" c:type="size_t"/>
      </field>
      <field name="init">
        <callback name="init">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="abstract_trait" transfer-ownership="none">
              <type name="Trait" c:type="LsmTrait*"/>
            </parameter>
            <parameter name="trait_default" transfer-ownership="none">
              <type name="Trait" c:type="const LsmTrait*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="finalize">
        <callback name="finalize">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="abstract_trait" transfer-ownership="none">
              <type name="Trait" c:type="LsmTrait*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="from_string">
        <callback name="from_string">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="abstract_trait" transfer-ownership="none">
              <type name="Trait" c:type="LsmTrait*"/>
            </parameter>
            <parameter name="string" transfer-ownership="none">
              <type name="utf8" c:type="char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="to_string">
        <callback name="to_string">
          <return-value transfer-ownership="full">
            <type name="utf8" c:type="char*"/>
          </return-value>
          <parameters>
            <parameter name="abstract_trait" transfer-ownership="none">
              <type name="Trait" c:type="LsmTrait*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <function name="cairo_box_device_to_user"
              c:identifier="lsm_cairo_box_device_to_user">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cairo" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="to" transfer-ownership="none">
          <type name="Box" c:type="LsmBox*"/>
        </parameter>
        <parameter name="from" transfer-ownership="none">
          <type name="Box" c:type="const LsmBox*"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_box_user_to_device"
              c:identifier="lsm_cairo_box_user_to_device">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cairo" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="to" transfer-ownership="none">
          <type name="Box" c:type="LsmBox*"/>
        </parameter>
        <parameter name="from" transfer-ownership="none">
          <type name="Box" c:type="const LsmBox*"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_elliptical_arc"
              c:identifier="lsm_cairo_elliptical_arc">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cairo" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="rx" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="ry" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="x_axis_rotation" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="large_arc_flag" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="sweep_flag" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="x" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="y" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_emit_svg_path"
              c:identifier="lsm_cairo_emit_svg_path">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cr" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <type name="utf8" c:type="char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_horizontal" c:identifier="lsm_cairo_horizontal">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cairo" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="x" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_quadratic_curve_to"
              c:identifier="lsm_cairo_quadratic_curve_to">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cr" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="x1" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="y1" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="x" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="y" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_rel_elliptical_arc"
              c:identifier="lsm_cairo_rel_elliptical_arc">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cairo" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="rx" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="ry" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="x_axis_rotation" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="large_arc_flag" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="sweep_flag" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="dx" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="dy" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_rel_horizontal"
              c:identifier="lsm_cairo_rel_horizontal">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cairo" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="dx" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_rel_quadratic_curve_to"
              c:identifier="lsm_cairo_rel_quadratic_curve_to">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cr" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="dx1" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="dy1" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="dx" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="dy" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_rel_vertical" c:identifier="lsm_cairo_rel_vertical">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cairo" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="dy" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_set_source_pixbuf"
              c:identifier="lsm_cairo_set_source_pixbuf"
              version="0.4">
      <doc xml:whitespace="preserve">Sets the given pixbuf as the source pattern for @cairo.

The pattern has an extend mode of %CAIRO_EXTEND_NONE and is aligned
so that the origin of @pixbuf is @pixbuf_x, @pixbuf_y.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cairo" transfer-ownership="none">
          <doc xml:whitespace="preserve">a cairo context</doc>
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="pixbuf" transfer-ownership="none">
          <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
          <type name="GdkPixbuf.Pixbuf" c:type="const GdkPixbuf*"/>
        </parameter>
        <parameter name="pixbuf_x" transfer-ownership="none">
          <doc xml:whitespace="preserve">X coordinate of location to place upper left corner of @pixbuf</doc>
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="pixbuf_y" transfer-ownership="none">
          <doc xml:whitespace="preserve">Y coordinate of location to place upper left corner of @pixbuf</doc>
          <type name="gdouble" c:type="double"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_vertical" c:identifier="lsm_cairo_vertical">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cairo" transfer-ownership="none">
          <type name="cairo.Context" c:type="cairo_t*"/>
        </parameter>
        <parameter name="y" transfer-ownership="none">
          <type name="gdouble" c:type="double"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug" c:identifier="lsm_debug" introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <type name="DebugCategory" c:type="LsmDebugCategory*"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter transfer-ownership="none">
          <varargs>
          </varargs>
        </parameter>
      </parameters>
    </function>
    <function name="debug_check" c:identifier="lsm_debug_check">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <type name="DebugCategory" c:type="LsmDebugCategory*"/>
        </parameter>
        <parameter name="level" transfer-ownership="none">
          <type name="DebugLevel" c:type="LsmDebugLevel"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_enable" c:identifier="lsm_debug_enable">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="category_selection" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dom_get_entity" c:identifier="lsm_dom_get_entity">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dom_implementation_cleanup"
              c:identifier="lsm_dom_implementation_cleanup">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="dom_implementation_create_document"
              c:identifier="lsm_dom_implementation_create_document">
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">a new #LsmDomDocument</doc>
        <type name="DomDocument" c:type="LsmDomDocument*"/>
      </return-value>
      <parameters>
        <parameter name="namespace_uri" transfer-ownership="none">
          <doc xml:whitespace="preserve">namespace uri</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="qualified_name" transfer-ownership="none">
          <doc xml:whitespace="preserve">qualified name</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="enum_value_from_string"
              c:identifier="lsm_enum_value_from_string">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="strings" transfer-ownership="none">
          <type name="utf8" c:type="const char**"/>
        </parameter>
        <parameter name="n_strings" transfer-ownership="none">
          <type name="guint" c:type="unsigned int"/>
        </parameter>
      </parameters>
    </function>
    <function name="log" c:identifier="lsm_log" introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <type name="DebugCategory" c:type="LsmDebugCategory*"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter transfer-ownership="none">
          <varargs>
          </varargs>
        </parameter>
      </parameters>
    </function>
    <function name="str_is_uri" c:identifier="lsm_str_is_uri">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="str_parse_double" c:identifier="lsm_str_parse_double">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <type name="utf8" c:type="char**"/>
        </parameter>
        <parameter name="x" transfer-ownership="none">
          <type name="gdouble" c:type="double*"/>
        </parameter>
      </parameters>
    </function>
    <function name="str_parse_double_list"
              c:identifier="lsm_str_parse_double_list">
      <return-value transfer-ownership="none">
        <type name="guint" c:type="unsigned int"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <type name="utf8" c:type="char**"/>
        </parameter>
        <parameter name="n_values" transfer-ownership="none">
          <type name="guint" c:type="unsigned int"/>
        </parameter>
        <parameter name="values" transfer-ownership="none">
          <type name="gdouble" c:type="double*"/>
        </parameter>
      </parameters>
    </function>
    <function name="str_point_list_exents"
              c:identifier="lsm_str_point_list_exents">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="point_list" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="extents" transfer-ownership="none">
          <type name="Extents" c:type="LsmExtents*"/>
        </parameter>
      </parameters>
    </function>
    <function name="str_to_uri" c:identifier="lsm_str_to_uri">
      <return-value transfer-ownership="full">
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="warning" c:identifier="lsm_warning" introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <type name="DebugCategory" c:type="LsmDebugCategory*"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter transfer-ownership="none">
          <varargs>
          </varargs>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
