<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GLib" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <namespace name="LangTag"
             version="0.5"
             shared-library="liblangtag-gobject.so.0"
             c:identifier-prefixes="Lt"
             c:symbol-prefixes="lt">
    <alias name="Bool" c:type="LtBool">
      <type name="gint" c:type="int"/>
    </alias>
    <alias name="Pointer" c:type="LtPointer">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <callback name="CompareFunc" c:type="LtCompareFunc">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="v1" transfer-ownership="none">
          <type name="Pointer" c:type="const LtPointer"/>
        </parameter>
        <parameter name="v2" transfer-ownership="none">
          <type name="Pointer" c:type="const LtPointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="CopyFunc" c:type="LtCopyFunc" introspectable="0">
      <return-value>
        <type name="Pointer" c:type="LtPointer"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <type name="Pointer" c:type="LtPointer"/>
        </parameter>
      </parameters>
    </callback>
    <constant name="DIR_SEPARATOR" value="92" c:type="LT_DIR_SEPARATOR">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="DIR_SEPARATOR_S" value="\" c:type="LT_DIR_SEPARATOR_S">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <callback name="DestroyFunc" c:type="LtDestroyFunc">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <type name="Pointer" c:type="LtPointer"/>
        </parameter>
      </parameters>
    </callback>
    <constant name="EXT_MODULE_VERSION"
              value="1"
              c:type="LT_EXT_MODULE_VERSION">
      <doc xml:space="preserve">Static variable for the module version. this is used to ensure if the built
module is compatible with the runtime library.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <record name="Error"
            c:type="LtError"
            glib:type-name="LtError"
            glib:get-type="lt_error_get_type"
            c:symbol-prefix="error">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtError&lt;/structname&gt;
structure are private to the #LtError implementation.</doc>
      <constructor name="new" c:identifier="lt_error_new">
        <doc xml:space="preserve">Creates #LtError object. this function is protected and not supposed
to use in applications directly. Use lt_error_set().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated #LtError. it has to be freed
         with lt_error_unref().</doc>
          <type name="Error" c:type="LtError*"/>
        </return-value>
      </constructor>
      <method name="clear" c:identifier="lt_error_clear">
        <doc xml:space="preserve">Clean up all of the errors in @error.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">a #LtError</doc>
            <type name="Error" c:type="LtError*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_set" c:identifier="lt_error_is_set">
        <doc xml:space="preserve">Checks if @error contains @type of errors. if #LT_ERR_ANY is set to @type,
all the types of the errors are targeted. otherwise the result is filtered
out by @type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if any, otherwise %FALSE</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">a #LtError</doc>
            <type name="Error" c:type="LtError*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">a #LtErrorype_t</doc>
            <type name="ErrorType" c:type="LtErrorType"/>
          </parameter>
        </parameters>
      </method>
      <method name="print" c:identifier="lt_error_print">
        <doc xml:space="preserve">Output the error messages in @error according to @type.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">a #LtError</doc>
            <type name="Error" c:type="LtError*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">a #LtErrorype_t</doc>
            <type name="ErrorType" c:type="LtErrorType"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_error_ref">
        <doc xml:space="preserve">Inscreases the reference count of @error.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @error object.</doc>
          <type name="Error" c:type="LtError*"/>
        </return-value>
        <parameters>
          <instance-parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">a #LtError</doc>
            <type name="Error" c:type="LtError*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_error_unref">
        <doc xml:space="preserve">Decreases the reference count of @error. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">a #LtError</doc>
            <type name="Error" c:type="LtError*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="set" c:identifier="lt_error_set" introspectable="0">
        <doc xml:space="preserve">Sets the error into @error according to the given parameters.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an instance of #LtError</doc>
          <type name="Error" c:type="LtError*"/>
        </return-value>
        <parameters>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">a return location for a #LtError</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">a #LtErrorype_t</doc>
            <type name="ErrorType" c:type="LtErrorType"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">the string format to output the error messages</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">the parameters to insert into the format string</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="ErrorType" c:type="LtErrorType">
      <doc xml:space="preserve">Error code used in this library.</doc>
    </enumeration>
    <record name="ExtModule"
            c:type="LtExtModule"
            glib:type-name="LtExtModule"
            glib:get-type="lt_ext_module_get_type"
            c:symbol-prefix="ext_module">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtExtModule&lt;/structname&gt;
structure are private to the #LtExtModule implementation.</doc>
      <method name="ref" c:identifier="lt_ext_module_ref">
        <doc xml:space="preserve">Increases the reference count of @module.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @module object.</doc>
          <type name="ExtModule" c:type="LtExtModule*"/>
        </return-value>
        <parameters>
          <instance-parameter name="module" transfer-ownership="none">
            <doc xml:space="preserve">a #lt_ext_module_t.</doc>
            <type name="ExtModule" c:type="LtExtModule*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_ext_module_unref">
        <doc xml:space="preserve">Decreases the reference count of @module. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="module" transfer-ownership="none">
            <doc xml:space="preserve">a #lt_ext_module_t.</doc>
            <type name="ExtModule" c:type="LtExtModule*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="ExtModuleData"
            c:type="LtExtModuleData"
            glib:type-name="LtExtModuleData"
            glib:get-type="lt_ext_module_data_get_type"
            c:symbol-prefix="ext_module_data">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtExtModuleData&lt;/structname&gt;
structure are private to the #LtExtModuleData implementation.</doc>
      <field name="dummy" writable="1">
        <doc xml:space="preserve">a dummy pointer for alignment.</doc>
        <array zero-terminated="0" c:type="LtPointer" fixed-size="8">
          <type name="Pointer" c:type="LtPointer"/>
        </array>
      </field>
      <constructor name="new" c:identifier="lt_ext_module_data_new">
        <doc xml:space="preserve">Create a new instance of #LtExtModuleData. this function allows
to create an inherited instance like:
|[
struct _my_module_data_t {
LtExtModuleData  parent;
...own members...
};
]|</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtExtModuleData.</doc>
          <type name="ExtModuleData" c:type="LtExtModuleData*"/>
        </return-value>
        <parameters>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">real size to allocate memory for the object.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="finalizer" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">a callback function to destroy the content.</doc>
            <type name="DestroyFunc" c:type="LtDestroyFunc"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="ref" c:identifier="lt_ext_module_data_ref">
        <doc xml:space="preserve">Increases the reference count of @data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @data object.</doc>
          <type name="ExtModuleData" c:type="LtExtModuleData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtModuleData.</doc>
            <type name="ExtModuleData" c:type="LtExtModuleData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_ext_module_data_unref">
        <doc xml:space="preserve">Decreases the reference count of @data. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtModuleData.</doc>
            <type name="ExtModuleData" c:type="LtExtModuleData*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <callback name="ExtModuleDataNewFunc" c:type="LtExtModuleDataNewFunc">
      <doc xml:space="preserve">The type of the callback function used to create a new instance of
#LtExtModuleData.
This is invoked when new Extension subtag appears and keep data.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new instance of #LtExtModuleData.</doc>
        <type name="ExtModuleData" c:type="LtExtModuleData*"/>
      </return-value>
    </callback>
    <record name="ExtModuleFuncs" c:type="LtExtModuleFuncs">
      <doc xml:space="preserve">The &lt;structname&gt;LtExtModuleFuncs&lt;/structname&gt; struct is a callback
collection to provide an accessor between #lt_extension_t
and #LtExtModule and extend features.</doc>
      <field name="get_singleton" writable="1">
        <doc xml:space="preserve">A callback function to obtain the singleton character
                that are supposed in the module.</doc>
        <type name="ExtModuleSingletonFunc"
              c:type="const LtExtModuleSingletonFunc"/>
      </field>
      <field name="create_data" writable="1">
        <doc xml:space="preserve">A callback function to create a new instance of
              #LtExtModuleData for the module.</doc>
        <type name="ExtModuleDataNewFunc"
              c:type="const LtExtModuleDataNewFunc"/>
      </field>
      <field name="precheck_tag" writable="1">
        <doc xml:space="preserve">A callback function to check tags prior to parse subtags.</doc>
        <type name="ExtModulePrecheckFunc"
              c:type="const LtExtModulePrecheckFunc"/>
      </field>
      <field name="parse_tag" writable="1">
        <doc xml:space="preserve">A callback function to parse a tag.</doc>
        <type name="ExtModuleParseFunc" c:type="const LtExtModuleParseFunc"/>
      </field>
      <field name="get_tag" writable="1">
        <doc xml:space="preserve">A callback function to obtain the tag string.</doc>
        <type name="ExtModuleGetTagFunc" c:type="const LtExtModuleGetTagFunc"/>
      </field>
      <field name="validate_tag" writable="1">
        <doc xml:space="preserve">A callback function to validate the tag.</doc>
        <type name="ExtModuleValidateFunc"
              c:type="const LtExtModuleValidateFunc"/>
      </field>
    </record>
    <callback name="ExtModuleGetFuncsFunc" c:type="LtExtModuleGetFuncsFunc">
      <doc xml:space="preserve">The type of the module_get_funcs() that is required to implement
an extension module.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #LtExtModuleFuncs.</doc>
        <type name="ExtModuleFuncs" c:type="const LtExtModuleFuncs*"/>
      </return-value>
    </callback>
    <callback name="ExtModuleGetTagFunc" c:type="LtExtModuleGetTagFunc">
      <doc xml:space="preserve">The type of the callback function used to obtain the tag.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a tag string.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">a #LtExtModuleData.</doc>
          <type name="ExtModuleData" c:type="LtExtModuleData*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ExtModuleParseFunc" c:type="LtExtModuleParseFunc">
      <doc xml:space="preserve">The type of the callback function used to parse tags.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the @subtag is valid for Extension. otherwise %FALSE.</doc>
        <type name="Bool" c:type="LtBool"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">a #LtExtModuleData.</doc>
          <type name="ExtModuleData" c:type="LtExtModuleData*"/>
        </parameter>
        <parameter name="subtag" transfer-ownership="none">
          <doc xml:space="preserve">a subtag string to parse.</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="error"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #LtError.</doc>
          <type name="Error" c:type="LtError**"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ExtModulePrecheckFunc" c:type="LtExtModulePrecheckFunc">
      <doc xml:space="preserve">The type of the callback function used to check @tag prior to process
parsing subtags for the extension.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @tag is valid to process parsing subtags for the extension.
         otherwise %FALSE.</doc>
        <type name="Bool" c:type="LtBool"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">a #LtExtModuleData.</doc>
          <type name="ExtModuleData" c:type="LtExtModuleData*"/>
        </parameter>
        <parameter name="tag" transfer-ownership="none">
          <doc xml:space="preserve">a #LtTag.</doc>
          <type name="Tag" c:type="const LtTag*"/>
        </parameter>
        <parameter name="error"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #LtError.</doc>
          <type name="Error" c:type="LtError**"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ExtModuleSingletonFunc" c:type="LtExtModuleSingletonFunc">
      <doc xml:space="preserve">The type of the callback function used to obtain a singleton character
for Extension subtag that the module would support.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a singleton character.</doc>
        <type name="gchar" c:type="char"/>
      </return-value>
    </callback>
    <callback name="ExtModuleValidateFunc" c:type="LtExtModuleValidateFunc">
      <doc xml:space="preserve">The type of the callback function used to validate the tags in @data.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if it's valid, otherwise %FALSE.</doc>
        <type name="Bool" c:type="LtBool"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">a #LtExtModuleData.</doc>
          <type name="ExtModuleData" c:type="LtExtModuleData*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ExtModuleVersionFunc" c:type="LtExtModuleVersionFunc">
      <doc xml:space="preserve">The type of the module_get_version() that is required to implement
an extension module.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a version number. this is the same to #LT_EXT_MODULE_VERSION
         when the module was built.</doc>
        <type name="gint" c:type="int"/>
      </return-value>
    </callback>
    <record name="Extension"
            c:type="LtExtension"
            glib:type-name="LtExtension"
            glib:get-type="lt_extension_get_type"
            c:symbol-prefix="extension">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtExtension&lt;/structname&gt;
structure are private to the #LtExtension implementation.</doc>
      <method name="compare" c:identifier="lt_extension_compare">
        <doc xml:space="preserve">Compare if @v1 and @v2 is the same object or not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's the same, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtension.</doc>
            <type name="Extension" c:type="const LtExtension*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtension.</doc>
            <type name="Extension" c:type="const LtExtension*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="lt_extension_dump">
        <doc xml:space="preserve">Dumps the container information to the standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtension.</doc>
            <type name="Extension" c:type="LtExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_canonicalized_tag"
              c:identifier="lt_extension_get_canonicalized_tag">
        <doc xml:space="preserve">Generate a canonicalized tag.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a string. this must be freed.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtension.</doc>
            <type name="Extension" c:type="LtExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag" c:identifier="lt_extension_get_tag">
        <doc xml:space="preserve">Obtain the tag string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtension.</doc>
            <type name="Extension" c:type="LtExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_extension_ref">
        <doc xml:space="preserve">Increases the reference count of @extension.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @extension object.</doc>
          <type name="Extension" c:type="LtExtension*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtension.</doc>
            <type name="Extension" c:type="LtExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="truncate" c:identifier="lt_extension_truncate">
        <return-value transfer-ownership="none">
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="Extension" c:type="LtExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_extension_unref">
        <doc xml:space="preserve">Decreases the reference count of @extension. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtension.</doc>
            <type name="Extension" c:type="LtExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Extlang"
            c:type="LtExtlang"
            glib:type-name="LtExtlang"
            glib:get-type="lt_extlang_get_type"
            c:symbol-prefix="extlang">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtExtlang&lt;/structname&gt;
structure are private to the #LtExtlang implementation.</doc>
      <method name="compare" c:identifier="lt_extlang_compare">
        <doc xml:space="preserve">Compares if @v1 and @v2 is the same object or not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's the same, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="const LtExtlang*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="const LtExtlang*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="lt_extlang_dump">
        <doc xml:space="preserve">Dumps the container information to the standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="const LtExtlang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_macro_language"
              c:identifier="lt_extlang_get_macro_language">
        <doc xml:space="preserve">Obtains the macrolanguage being assigned for the subtag.
This is available only when the subtag is registered as the macrolanguage
in ISO 639-3.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a macrolanguage string or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="const LtExtlang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="lt_extlang_get_name">
        <doc xml:space="preserve">Obtains the description of the subtag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a description string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="const LtExtlang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_preferred_tag"
              c:identifier="lt_extlang_get_preferred_tag">
        <doc xml:space="preserve">Obtains the preferred-value. this is available only when the subtag is
marked as deprecated.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a preferred-value for the subtag or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="const LtExtlang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_prefix" c:identifier="lt_extlang_get_prefix">
        <doc xml:space="preserve">Obtains the prefix being assigned to the subtag.
This is available only when the subtag has a particular seqnence of
subgtags that form a meaningful tag with the subtag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a prefix string or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="const LtExtlang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag" c:identifier="lt_extlang_get_tag">
        <doc xml:space="preserve">Obtains the subtag that is registered as ISO 639 code.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a subtag name.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="const LtExtlang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_extlang_ref">
        <doc xml:space="preserve">Increases the reference count of @extlang.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @extlang object.</doc>
          <type name="Extlang" c:type="LtExtlang*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="LtExtlang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_extlang_unref">
        <doc xml:space="preserve">Decreases the reference count of @extlang. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlang.</doc>
            <type name="Extlang" c:type="LtExtlang*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="ExtlangDb"
            c:type="LtExtlangDb"
            glib:type-name="LtExtlangDb"
            glib:get-type="lt_extlang_db_get_type"
            c:symbol-prefix="extlang_db">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtExtlangDb&lt;/structname&gt;
structure are private to the #LtExtlangDb implementation.</doc>
      <constructor name="new" c:identifier="lt_extlang_db_new">
        <doc xml:space="preserve">Create a new instance of a #LtExtlangDb.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtExtlangDb.</doc>
          <type name="ExtlangDb" c:type="LtExtlangDb*"/>
        </return-value>
      </constructor>
      <method name="lookup" c:identifier="lt_extlang_db_lookup">
        <doc xml:space="preserve">Lookup @LtExtlang if @subtag is valid and registered into the database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtExtlang that meets with @subtag.
                          otherwise %NULL.</doc>
          <type name="Extlang" c:type="LtExtlang*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlangdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlangDb.</doc>
            <type name="ExtlangDb" c:type="LtExtlangDb*"/>
          </instance-parameter>
          <parameter name="subtag" transfer-ownership="none">
            <doc xml:space="preserve">a subtag name to lookup.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_extlang_db_ref">
        <doc xml:space="preserve">Increases the reference count of @extlangdb.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @extlangdb object.</doc>
          <type name="ExtlangDb" c:type="LtExtlangDb*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlangdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlangDb.</doc>
            <type name="ExtlangDb" c:type="LtExtlangDb*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_extlang_db_unref">
        <doc xml:space="preserve">Decreases the reference count of @extlangdb. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extlangdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtExtlangDb.</doc>
            <type name="ExtlangDb" c:type="LtExtlangDb*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Grandfathered"
            c:type="LtGrandfathered"
            glib:type-name="LtGrandfathered"
            glib:get-type="lt_grandfathered_get_type"
            c:symbol-prefix="grandfathered">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtGrandfathered&lt;/structname&gt;
structure are private to the #LtGrandfathered implementation.</doc>
      <method name="compare" c:identifier="lt_grandfathered_compare">
        <doc xml:space="preserve">Compare if @v1 and @v2 is the same object or not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's the same. otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfathered.</doc>
            <type name="Grandfathered" c:type="const LtGrandfathered*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfathered.</doc>
            <type name="Grandfathered" c:type="const LtGrandfathered*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="lt_grandfathered_dump">
        <doc xml:space="preserve">Dumps the container information to the standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathered" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfathered.</doc>
            <type name="Grandfathered" c:type="const LtGrandfathered*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_better_tag"
              c:identifier="lt_grandfathered_get_better_tag">
        <doc xml:space="preserve">Obtains the better tag for use. this is a convenient function to get
the preferred-value if available.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathered" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfathered.</doc>
            <type name="Grandfathered" c:type="const LtGrandfathered*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="lt_grandfathered_get_name">
        <doc xml:space="preserve">Obtains the description of the tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a description string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathered" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfathered.</doc>
            <type name="Grandfathered" c:type="const LtGrandfathered*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_preferred_tag"
              c:identifier="lt_grandfathered_get_preferred_tag">
        <doc xml:space="preserve">Obtains the preferred-value. this is available only when the tag is
marked as deprecated.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a preferred-value for the tag or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathered" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfathered.</doc>
            <type name="Grandfathered" c:type="const LtGrandfathered*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag" c:identifier="lt_grandfathered_get_tag">
        <doc xml:space="preserve">Obtains the tag name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathered" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfathered.</doc>
            <type name="Grandfathered" c:type="const LtGrandfathered*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_grandfathered_ref">
        <doc xml:space="preserve">Increases the reference count of @grandfathered.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @grandfathered object.</doc>
          <type name="Grandfathered" c:type="LtGrandfathered*"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathered" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfathered.</doc>
            <type name="Grandfathered" c:type="LtGrandfathered*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_grandfathered_unref">
        <doc xml:space="preserve">Decreases the reference count of @grandfathered. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathered" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfathered.</doc>
            <type name="Grandfathered" c:type="LtGrandfathered*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="GrandfatheredDb"
            c:type="LtGrandfatheredDb"
            glib:type-name="LtGrandfatheredDb"
            glib:get-type="lt_grandfathered_db_get_type"
            c:symbol-prefix="grandfathered_db">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtGrandfatheredDb&lt;/structname&gt;
structure are private to the #LtGrandfatheredDb implementation.</doc>
      <constructor name="new" c:identifier="lt_grandfathered_db_new">
        <doc xml:space="preserve">Create a new instance of a #LtGrandfatheredDb.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtGrandfatheredDb.</doc>
          <type name="GrandfatheredDb" c:type="LtGrandfatheredDb*"/>
        </return-value>
      </constructor>
      <method name="lookup" c:identifier="lt_grandfathered_db_lookup">
        <doc xml:space="preserve">Lookup @LtGrandfathered if @tag is valid and registered into the database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtGrandfathered that meets with @tag.
                          otherwise %NULL.</doc>
          <type name="Grandfathered" c:type="LtGrandfathered*"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathereddb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfatheredDb.</doc>
            <type name="GrandfatheredDb" c:type="LtGrandfatheredDb*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a tag name to lookup.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_grandfathered_db_ref">
        <doc xml:space="preserve">Increases the reference count of @grandfathereddb.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @grandfathereddb object.</doc>
          <type name="GrandfatheredDb" c:type="LtGrandfatheredDb*"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathereddb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfatheredDb.</doc>
            <type name="GrandfatheredDb" c:type="LtGrandfatheredDb*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_grandfathered_db_unref">
        <doc xml:space="preserve">Decreases the reference count of @grandfathereddb. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="grandfathereddb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtGrandfatheredDb.</doc>
            <type name="GrandfatheredDb" c:type="LtGrandfatheredDb*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Iter"
            c:type="LtIter"
            glib:type-name="LtIter"
            glib:get-type="lt_iter_get_type"
            c:symbol-prefix="iter">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtIter&lt;/structname&gt;
structure are private to the #LtIter implementation.</doc>
      <method name="finish" c:identifier="lt_iter_finish">
        <doc xml:space="preserve">Finalize the iterator and free its memory.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #LtIter</doc>
            <type name="Iter" c:type="LtIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="lt_iter_next">
        <doc xml:space="preserve">Advances @iter and retrieves the key and/or value that are now
pointed to as a result of this advancement. If %FALSE is returned,
@key and @value are not set, and the iterator becomes invalid.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%FALSE if the end of the object that the iterator is adapted
         has been reached.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #LtIter</doc>
            <type name="Iter" c:type="LtIter*"/>
          </instance-parameter>
          <parameter name="key"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a location to store the key, or %NULL</doc>
            <type name="Pointer" c:type="LtPointer*"/>
          </parameter>
          <parameter name="val"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a location to store the value, or %NULL</doc>
            <type name="Pointer" c:type="LtPointer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_iter_ref">
        <doc xml:space="preserve">Increases the reference count of @iter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @iter object.</doc>
          <type name="Iter" c:type="LtIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #LtIter</doc>
            <type name="Iter" c:type="LtIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_iter_unref">
        <doc xml:space="preserve">Decreases the reference count of @iter. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #LtIter</doc>
            <type name="Iter" c:type="LtIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="init" c:identifier="lt_iter_init">
        <doc xml:space="preserve">Initialize the iterator with @tmpl object. this function has to be called
before performing any opperation with the iterator and lt_iter_finish()
when the iterator isn't needed anymore.
|[
lt_lang_db *lang = lt_lang_db_new();
LtPointer *key, *val;
LtIter *iter;

iter = LT_ITER_INIT (lang);
while (lt_iter_next(iter, &amp;key, &amp;val)) {
  /&amp;ast; do something with key and value &amp;ast;/
}
lt_iter_finish(iter);
]|</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the initialized iterator object.</doc>
          <type name="Iter" c:type="LtIter*"/>
        </return-value>
        <parameters>
          <parameter name="tmpl" transfer-ownership="none">
            <doc xml:space="preserve">a #LtItermpl_t</doc>
            <type name="IterTmpl" c:type="LtIterTmpl*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="IterTmpl" c:type="LtIterTmpl" disguised="1">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtIterTmpl&lt;/structname&gt;
structure are private to the #LtIterTmpl implementation.</doc>
    </record>
    <record name="Lang"
            c:type="LtLang"
            glib:type-name="LtLang"
            glib:get-type="lt_lang_get_type"
            c:symbol-prefix="lang">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtLang&lt;/structname&gt;
structure are private to the #LtLang implementation.</doc>
      <method name="compare" c:identifier="lt_lang_compare">
        <doc xml:space="preserve">Compare if @v1 and @v2 is the same object or not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's the same, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="lt_lang_dump">
        <doc xml:space="preserve">Dumps the container information to the standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_better_tag" c:identifier="lt_lang_get_better_tag">
        <doc xml:space="preserve">Obtains the better tag for use. this is a convenient function to get
the preferred-value if available.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_macro_language"
              c:identifier="lt_lang_get_macro_language">
        <doc xml:space="preserve">Obtains the macrolanguage being assigned for the subtag.
This is available only when the subtag is registered as the macrolanguage
in ISO 639-3.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a macrolanguage string or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="lt_lang_get_name">
        <doc xml:space="preserve">Obtains the description of the subtag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a description string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_preferred_tag"
              c:identifier="lt_lang_get_preferred_tag">
        <doc xml:space="preserve">Obtains the preferred-value. this is available only when the tag is
marked as deprecated.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a preferred-value for the tag or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scope" c:identifier="lt_lang_get_scope">
        <doc xml:space="preserve">Obtains the scope value indicating the type of language code according
to ISO 639.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a scope string or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_suppress_script"
              c:identifier="lt_lang_get_suppress_script">
        <doc xml:space="preserve">Obtains the suppress-script value. which shouldn't be used to form
language tags with the associated primary or extended language subtag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a suppress-script string or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag" c:identifier="lt_lang_get_tag">
        <doc xml:space="preserve">Obtains the tag name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="const LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_lang_ref">
        <doc xml:space="preserve">Increases the reference count of @lang.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @lang object.</doc>
          <type name="Lang" c:type="LtLang*"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_lang_unref">
        <doc xml:space="preserve">Decreases the reference count of @lang. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLang.</doc>
            <type name="Lang" c:type="LtLang*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="LangDb"
            c:type="LtLangDb"
            glib:type-name="LtLangDb"
            glib:get-type="lt_lang_db_get_type"
            c:symbol-prefix="lang_db">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtLangDb&lt;/structname&gt;
structure are private to the #LtLangDb implementation.</doc>
      <constructor name="new" c:identifier="lt_lang_db_new">
        <doc xml:space="preserve">Create a new instance of a #LtLangDb.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtLangDb.</doc>
          <type name="LangDb" c:type="LtLangDb*"/>
        </return-value>
      </constructor>
      <method name="lookup" c:identifier="lt_lang_db_lookup">
        <doc xml:space="preserve">Lookup @LtLang if @subtag is valid and registered into the database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtLang that meets with @subtag.
                          otherwise %NULL.</doc>
          <type name="Lang" c:type="LtLang*"/>
        </return-value>
        <parameters>
          <instance-parameter name="langdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLangDb.</doc>
            <type name="LangDb" c:type="LtLangDb*"/>
          </instance-parameter>
          <parameter name="subtag" transfer-ownership="none">
            <doc xml:space="preserve">a subtag name to lookup.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_lang_db_ref">
        <doc xml:space="preserve">Increases the reference count of @langdb.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @langdb object.</doc>
          <type name="LangDb" c:type="LtLangDb*"/>
        </return-value>
        <parameters>
          <instance-parameter name="langdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLangDb.</doc>
            <type name="LangDb" c:type="LtLangDb*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_lang_db_unref">
        <doc xml:space="preserve">Decreases the reference count of @langdb. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="langdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtLangDb.</doc>
            <type name="LangDb" c:type="LtLangDb*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="List"
            c:type="LtList"
            glib:type-name="LtList"
            glib:get-type="lt_list_get_type"
            c:symbol-prefix="list">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtList&lt;/structname&gt;
structure are private to the #LtList implementation.</doc>
      <constructor name="new" c:identifier="lt_list_new">
        <doc xml:space="preserve">Creates #LtList object. this function is protected and not supposed
to use in applications directly. Use lt_list_append() or lt_list_prepend()
with %NULL as the first argument to newly allocate the object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated #LtList. it has to be freed
         with lt_list_unref().</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
      </constructor>
      <method name="append" c:identifier="lt_list_append">
        <doc xml:space="preserve">Adds a new element on to the end of the list.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the new start of the #LtList.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data for the new element</doc>
            <type name="Pointer" c:type="LtPointer"/>
          </parameter>
          <parameter name="func" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">the call back function to destroy @data or %NULL</doc>
            <type name="DestroyFunc" c:type="LtDestroyFunc"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete" c:identifier="lt_list_delete">
        <doc xml:space="preserve">Removes an element from a #LtList.
If two elements contain the same data, only the first is removed.
If none of the elements contain the data, the #LtList is unchanged.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the new start of the #LtList.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data of the element to remove.</doc>
            <type name="Pointer" c:type="LtPointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_link" c:identifier="lt_list_delete_link">
        <doc xml:space="preserve">Removes the node @link_ from the @list and frees it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the new head of @list</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
          <parameter name="link_" transfer-ownership="none">
            <doc xml:space="preserve">node to delete from @list</doc>
            <type name="List" c:type="LtList*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find" c:identifier="lt_list_find">
        <doc xml:space="preserve">Finds the element in a #LtList which
contains the given data.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the found #LtList element, or %NULL if it's not found</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the element data to find</doc>
            <type name="Pointer" c:type="const LtPointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_custom" c:identifier="lt_list_find_custom">
        <doc xml:space="preserve">Finds an element in a #LtList, using a supplied function to
find the desired element. It iterates over the list, calling
the given function which should return 0 when the desired
element is found. The function takes two const #LtPointer
arguments, the #LtList element's data as the first argument
and the given data.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the found #LtList element, or %NULL if it's not found</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data passed to the function</doc>
            <type name="Pointer" c:type="const LtPointer"/>
          </parameter>
          <parameter name="func" transfer-ownership="none" scope="call">
            <doc xml:space="preserve">the function to call for each element.
       It should return 0 when the desired element is found</doc>
            <type name="CompareFunc" c:type="LtCompareFunc"/>
          </parameter>
        </parameters>
      </method>
      <method name="first" c:identifier="lt_list_first">
        <doc xml:space="preserve">Gets the first element in a #LtList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the first element in the #LtList
         or %NULL if the #LtList has no elements.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="last" c:identifier="lt_list_last">
        <doc xml:space="preserve">Gets the last element in a #LtList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the last element in the #LtList
         or %NULL if the #LtList has no elements.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="length" c:identifier="lt_list_length">
        <doc xml:space="preserve">Gets the number of elements in a #LtList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of elements in the #LtList.</doc>
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="const LtList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="lt_list_next">
        <doc xml:space="preserve">Gets the next element in a #LtList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the next element, or %NULL if there are no more elements.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="const LtList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="pop" c:identifier="lt_list_pop">
        <doc xml:space="preserve">Sets the data in the first element to @data and drop the element.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the new head of @list.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to set the data in the first element</doc>
            <type name="Pointer" c:type="LtPointer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepend" c:identifier="lt_list_prepend">
        <doc xml:space="preserve">Adds a new element on to the start of the list.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the new start of the #LtList.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data for the new element</doc>
            <type name="Pointer" c:type="LtPointer"/>
          </parameter>
          <parameter name="func" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">the call back function to destroy @data or %NULL</doc>
            <type name="DestroyFunc" c:type="LtDestroyFunc"/>
          </parameter>
        </parameters>
      </method>
      <method name="previous" c:identifier="lt_list_previous">
        <doc xml:space="preserve">Gets the previous element in a #LtList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the previous element, or %NULL if there are no previous elements.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="const LtList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_list_ref">
        <doc xml:space="preserve">Increases the reference count of @list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @list object.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="lt_list_remove">
        <doc xml:space="preserve">Removes an element from a #LtList.
If two elements contain the same data, only the first is removed.
If none of the elements contain the data, the #LtList is unchanged.
This works similar to lt_list_delete() though, the difference is
this won't calls the finalizer to destroy the data in the element.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the new start of the #LtList.</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data of the element to remove.</doc>
            <type name="Pointer" c:type="LtPointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="sort" c:identifier="lt_list_sort">
        <doc xml:space="preserve">Sorts a #LtList using the given comparison function.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the start of the sorted #LtList</doc>
          <type name="List" c:type="LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
          <parameter name="func" transfer-ownership="none" scope="call">
            <doc xml:space="preserve">the comparison function used to sort the #LtList.
       This function is passed the data from 2 elements of the #LtList
       and should return 0 if they are equal, a negative value if the
       first element comes before the second, or a positive value if
       the first element comes after the second.</doc>
            <type name="CompareFunc" c:type="LtCompareFunc"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_list_unref">
        <doc xml:space="preserve">Decreases the reference count of @list. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="LtList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="value" c:identifier="lt_list_value">
        <doc xml:space="preserve">Gets a value in a #LtList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a pointer to be set to the #LtList.</doc>
          <type name="Pointer" c:type="LtPointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="List" c:type="const LtList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="free" c:identifier="lt_list_free">
        <doc xml:space="preserve">Frees all of the memory used by a #LtList.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">a #LtList.</doc>
            <type name="Pointer" c:type="LtPointer"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <constant name="PATH_MAX" value="512" c:type="LT_PATH_MAX">
      <type name="gint" c:type="gint"/>
    </constant>
    <record name="Redundant"
            c:type="LtRedundant"
            glib:type-name="LtRedundant"
            glib:get-type="lt_redundant_get_type"
            c:symbol-prefix="redundant">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtRedundant&lt;/structname&gt;
structure are private to the #LtRedundant implementation.</doc>
      <method name="compare" c:identifier="lt_redundant_compare">
        <doc xml:space="preserve">Compare if @v1 and @v2 is the same object or not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's the same. otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundant.</doc>
            <type name="Redundant" c:type="const LtRedundant*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundant.</doc>
            <type name="Redundant" c:type="const LtRedundant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="lt_redundant_dump">
        <doc xml:space="preserve">Dumps the container information to the standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundant.</doc>
            <type name="Redundant" c:type="const LtRedundant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_better_tag" c:identifier="lt_redundant_get_better_tag">
        <doc xml:space="preserve">Obtains the better tag for use. this is a convenient function to get
the preferred-value if available.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundant.</doc>
            <type name="Redundant" c:type="const LtRedundant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="lt_redundant_get_name">
        <doc xml:space="preserve">Obtains the description of the tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a description string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundant.</doc>
            <type name="Redundant" c:type="const LtRedundant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_preferred_tag"
              c:identifier="lt_redundant_get_preferred_tag">
        <doc xml:space="preserve">Obtains the preferred-value. this is available only when the tag is
marked as deprecated.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a preferred-value for the tag or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundant.</doc>
            <type name="Redundant" c:type="const LtRedundant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag" c:identifier="lt_redundant_get_tag">
        <doc xml:space="preserve">Obtains the tag name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundant.</doc>
            <type name="Redundant" c:type="const LtRedundant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_redundant_ref">
        <doc xml:space="preserve">Increases the reference count of @redundant.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @redundant object.</doc>
          <type name="Redundant" c:type="LtRedundant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundant.</doc>
            <type name="Redundant" c:type="LtRedundant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_redundant_unref">
        <doc xml:space="preserve">Decreases the reference count of @redundant. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundant.</doc>
            <type name="Redundant" c:type="LtRedundant*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="RedundantDb"
            c:type="LtRedundantDb"
            glib:type-name="LtRedundantDb"
            glib:get-type="lt_redundant_db_get_type"
            c:symbol-prefix="redundant_db">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtRedundantDb&lt;/structname&gt;
structure are private to the #LtRedundantDb implementation.</doc>
      <constructor name="new" c:identifier="lt_redundant_db_new">
        <doc xml:space="preserve">Create a new instance of a #LtRedundantDb.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtRedundantDb.</doc>
          <type name="RedundantDb" c:type="LtRedundantDb*"/>
        </return-value>
      </constructor>
      <method name="lookup" c:identifier="lt_redundant_db_lookup">
        <doc xml:space="preserve">Lookup @LtRedundant if @tag is valid and registered into the database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtRedundant that meets with @tag.
                          otherwise %NULL.</doc>
          <type name="Redundant" c:type="LtRedundant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundantdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundantDb.</doc>
            <type name="RedundantDb" c:type="LtRedundantDb*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a tag name to lookup.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_redundant_db_ref">
        <doc xml:space="preserve">Increases the reference count of @redundantdb.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @redundantdb object.</doc>
          <type name="RedundantDb" c:type="LtRedundantDb*"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundantdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundantDb.</doc>
            <type name="RedundantDb" c:type="LtRedundantDb*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_redundant_db_unref">
        <doc xml:space="preserve">Decreases the reference count of @redundantdb. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="redundantdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRedundantDb.</doc>
            <type name="RedundantDb" c:type="LtRedundantDb*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Region"
            c:type="LtRegion"
            glib:type-name="LtRegion"
            glib:get-type="lt_region_get_type"
            c:symbol-prefix="region">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtRegion&lt;/structname&gt;
structure are private to the #LtRegion implementation.</doc>
      <method name="compare" c:identifier="lt_region_compare">
        <doc xml:space="preserve">Compare if @v1 and @v2 is the same object or not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's the same, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegion.</doc>
            <type name="Region" c:type="const LtRegion*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegion.</doc>
            <type name="Region" c:type="const LtRegion*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="lt_region_dump">
        <doc xml:space="preserve">Dumps the container information to the standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="region" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegion.</doc>
            <type name="Region" c:type="const LtRegion*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_better_tag" c:identifier="lt_region_get_better_tag">
        <doc xml:space="preserve">Obtains the better tag for use. this is a convenient function to get
the preferred-value if available.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="region" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegion.</doc>
            <type name="Region" c:type="const LtRegion*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="lt_region_get_name">
        <doc xml:space="preserve">Obtains the description of the subtag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a description string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="region" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegion.</doc>
            <type name="Region" c:type="const LtRegion*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_preferred_tag"
              c:identifier="lt_region_get_preferred_tag">
        <doc xml:space="preserve">Obtains the preferred-value. this is available only when the tag is
marked as deprecated.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a preferred-value for the tag or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="region" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegion.</doc>
            <type name="Region" c:type="const LtRegion*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag" c:identifier="lt_region_get_tag">
        <doc xml:space="preserve">Obtains the tag name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="region" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegion.</doc>
            <type name="Region" c:type="const LtRegion*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_region_ref">
        <doc xml:space="preserve">Increases the reference count of @region.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @region object.</doc>
          <type name="Region" c:type="LtRegion*"/>
        </return-value>
        <parameters>
          <instance-parameter name="region" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegion.</doc>
            <type name="Region" c:type="LtRegion*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_region_unref">
        <doc xml:space="preserve">Decreases the reference count of @region. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="region" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegion.</doc>
            <type name="Region" c:type="LtRegion*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="RegionDb"
            c:type="LtRegionDb"
            glib:type-name="LtRegionDb"
            glib:get-type="lt_region_db_get_type"
            c:symbol-prefix="region_db">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtRegionDb&lt;/structname&gt;
structure are private to the #LtRegionDb implementation.</doc>
      <constructor name="new" c:identifier="lt_region_db_new">
        <doc xml:space="preserve">Create a new instance of a #LtRegionDb.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtRegionDb.</doc>
          <type name="RegionDb" c:type="LtRegionDb*"/>
        </return-value>
      </constructor>
      <method name="lookup" c:identifier="lt_region_db_lookup">
        <doc xml:space="preserve">Lookup @LtRegion if @language_or_code is valid and registered into
the database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtRegion that meets with @language_or_code.
                          otherwise %NULL.</doc>
          <type name="Region" c:type="LtRegion*"/>
        </return-value>
        <parameters>
          <instance-parameter name="regiondb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegionDb.</doc>
            <type name="RegionDb" c:type="LtRegionDb*"/>
          </instance-parameter>
          <parameter name="language_or_code" transfer-ownership="none">
            <doc xml:space="preserve">a region code to lookup.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_region_db_ref">
        <doc xml:space="preserve">Increases the reference count of @regiondb.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @regiondb object.</doc>
          <type name="RegionDb" c:type="LtRegionDb*"/>
        </return-value>
        <parameters>
          <instance-parameter name="regiondb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegionDb.</doc>
            <type name="RegionDb" c:type="LtRegionDb*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_region_db_unref">
        <doc xml:space="preserve">Decreases the reference count of @regiondb. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="regiondb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtRegionDb.</doc>
            <type name="RegionDb" c:type="LtRegionDb*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <constant name="SEARCHPATH_SEPARATOR"
              value="59"
              c:type="LT_SEARCHPATH_SEPARATOR">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SEARCHPATH_SEPARATOR_S"
              value=";"
              c:type="LT_SEARCHPATH_SEPARATOR_S">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="Script"
            c:type="LtScript"
            glib:type-name="LtScript"
            glib:get-type="lt_script_get_type"
            c:symbol-prefix="script">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtScript&lt;/structname&gt;
structure are private to the #LtScript implementation.</doc>
      <method name="compare" c:identifier="lt_script_compare">
        <doc xml:space="preserve">Compare if @v1 and @v2 is the same object or not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's the same, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScript.</doc>
            <type name="Script" c:type="const LtScript*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScript.</doc>
            <type name="Script" c:type="const LtScript*"/>
          </parameter>
        </parameters>
      </method>
      <method name="convert_to_modifier"
              c:identifier="lt_script_convert_to_modifier">
        <doc xml:space="preserve">Convert the script subtag to the locale variant modifier.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a modifier string or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="script" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScript.</doc>
            <type name="Script" c:type="const LtScript*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="lt_script_dump">
        <doc xml:space="preserve">Dumps the container information to the standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="script" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScript.</doc>
            <type name="Script" c:type="const LtScript*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="lt_script_get_name">
        <doc xml:space="preserve">Obtains the description of the subtag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a description string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="script" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScript.</doc>
            <type name="Script" c:type="const LtScript*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag" c:identifier="lt_script_get_tag">
        <doc xml:space="preserve">Obtains the tag name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="script" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScript.</doc>
            <type name="Script" c:type="const LtScript*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_script_ref">
        <doc xml:space="preserve">Increases the reference count of @script.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @script object.</doc>
          <type name="Script" c:type="LtScript*"/>
        </return-value>
        <parameters>
          <instance-parameter name="script" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScript.</doc>
            <type name="Script" c:type="LtScript*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_script_unref">
        <doc xml:space="preserve">Decreases the reference count of @script. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="script" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScript.</doc>
            <type name="Script" c:type="LtScript*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="ScriptDb"
            c:type="LtScriptDb"
            glib:type-name="LtScriptDb"
            glib:get-type="lt_script_db_get_type"
            c:symbol-prefix="script_db">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtScriptDb&lt;/structname&gt;
structure are private to the #LtScriptDb implementation.</doc>
      <constructor name="new" c:identifier="lt_script_db_new">
        <doc xml:space="preserve">Create a new instance of a #LtScriptDb.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtScriptDb.</doc>
          <type name="ScriptDb" c:type="LtScriptDb*"/>
        </return-value>
      </constructor>
      <method name="lookup" c:identifier="lt_script_db_lookup">
        <doc xml:space="preserve">Lookup @LtScript if @subtag is valid and registered into the database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtScript that meets with @subtag.
                          otherwise %NULL.</doc>
          <type name="Script" c:type="LtScript*"/>
        </return-value>
        <parameters>
          <instance-parameter name="scriptdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScriptDb.</doc>
            <type name="ScriptDb" c:type="LtScriptDb*"/>
          </instance-parameter>
          <parameter name="subtag" transfer-ownership="none">
            <doc xml:space="preserve">a subtag name to lookup.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_script_db_ref">
        <doc xml:space="preserve">Increases the reference count of @scriptdb.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @scriptdb object.</doc>
          <type name="ScriptDb" c:type="LtScriptDb*"/>
        </return-value>
        <parameters>
          <instance-parameter name="scriptdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScriptDb.</doc>
            <type name="ScriptDb" c:type="LtScriptDb*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_script_db_unref">
        <doc xml:space="preserve">Decreases the reference count of @scriptdb. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="scriptdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtScriptDb.</doc>
            <type name="ScriptDb" c:type="LtScriptDb*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="String"
            c:type="LtString"
            glib:type-name="LtString"
            glib:get-type="lt_string_get_type"
            c:symbol-prefix="string">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtString&lt;/structname&gt;
structure are private to the #LtString implementation.</doc>
      <constructor name="new" c:identifier="lt_string_new">
        <doc xml:space="preserve">Creates an instance of #LtString with @string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtString.</doc>
          <type name="String" c:type="LtString*"/>
        </return-value>
        <parameters>
          <parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">an initial string to set</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="append" c:identifier="lt_string_append">
        <doc xml:space="preserve">Adds a string onto the end of a #LtString, expanding
it if necessary.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @string object</doc>
          <type name="String" c:type="LtString*"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">the string to append onto the end of @string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_c" c:identifier="lt_string_append_c">
        <doc xml:space="preserve">Adds a byte onto the end of a #LtString, expanding
it if necessary.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @string object.</doc>
          <type name="String" c:type="LtString*"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
          <parameter name="c" transfer-ownership="none">
            <doc xml:space="preserve">the byte to append onto the end of @string</doc>
            <type name="gchar" c:type="char"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_filename"
              c:identifier="lt_string_append_filename"
              introspectable="0">
        <doc xml:space="preserve">Adds a string onto the end of a #LtString as a file path.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @string object</doc>
          <type name="String" c:type="LtString*"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">the string to append onto the end of @string as a file path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">a %NULL-terminated list of strings to append onto the end of @string as a file path</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="append_printf"
              c:identifier="lt_string_append_printf"
              introspectable="0">
        <doc xml:space="preserve">Appends a formatted string onto the end of a #LtString.
This is similar to the standard sprintf() function,
except that the text is appended to the #LtString.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">the string format. See the printf() documentation</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">the parameters to insert into the format string</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="at" c:identifier="lt_string_at">
        <doc xml:space="preserve">Obtain a byte in a #LtString at @pos. If @pos is a negative,
the position is calculated from current size. i.e. if the buffer
contains "abc", and @pos is -1, this will returns 'c' then.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the byte in @string at @pos</doc>
          <type name="gchar" c:type="char"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve">position in @string where to obtain the byte</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="lt_string_clear">
        <doc xml:space="preserve">Clean up the buffer in @string.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="lt_string_free">
        <doc xml:space="preserve">Frees the memory allocated for the #LtString.
If @free_segment is %TRUE it also frees the character data.  If
it's %FALSE, the caller gains ownership of the buffer and must
free it after use with free().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the character data of @string
         (i.e. %NULL if @free_segment is %TRUE)</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
          <parameter name="free_segment" transfer-ownership="none">
            <doc xml:space="preserve">if %TRUE, the actual character data is freed as well</doc>
            <type name="Bool" c:type="LtBool"/>
          </parameter>
        </parameters>
      </method>
      <method name="length" c:identifier="lt_string_length">
        <doc xml:space="preserve">Returns the number of characters in buffer for @string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of characters</doc>
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="const LtString*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_string_ref">
        <doc xml:space="preserve">Increases the reference count of @string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @string object.</doc>
          <type name="String" c:type="LtString*"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="replace_c" c:identifier="lt_string_replace_c">
        <doc xml:space="preserve">Replaces a character in @string at @pos.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @string object</doc>
          <type name="String" c:type="LtString*"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve">position in @string where replacement should happen</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="c" transfer-ownership="none">
            <doc xml:space="preserve">the byte to replace</doc>
            <type name="gchar" c:type="char"/>
          </parameter>
        </parameters>
      </method>
      <method name="truncate" c:identifier="lt_string_truncate">
        <return-value transfer-ownership="full">
          <type name="String" c:type="LtString*"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
          <parameter name="len" transfer-ownership="none">
            <type name="gssize" c:type="gssize"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_string_unref">
        <doc xml:space="preserve">Decreases the reference count of @string. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="LtString*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="value" c:identifier="lt_string_value">
        <doc xml:space="preserve">Returns the buffer in @string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a string which @string has.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">a #LtString</doc>
            <type name="String" c:type="const LtString*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Tag"
            c:type="LtTag"
            glib:type-name="LtTag"
            glib:get-type="lt_tag_get_type"
            c:symbol-prefix="tag">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtTag&lt;/structname&gt;
structure are private to the #LtTag implementation.</doc>
      <constructor name="new" c:identifier="lt_tag_new">
        <doc xml:space="preserve">Create a new instance of #LtTag.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtTag.</doc>
          <type name="Tag" c:type="LtTag*"/>
        </return-value>
      </constructor>
      <method name="canonicalize" c:identifier="lt_tag_canonicalize">
        <doc xml:space="preserve">Canonicalize the language tag according to various information of subtags.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a language tag string.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #LtError or %NULL.</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="canonicalize_in_extlang_form"
              c:identifier="lt_tag_canonicalize_in_extlang_form">
        <doc xml:space="preserve">Canonicalize the language tag in the extlang form
according to various information of subtags.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a language tag string.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #LtError or %NULL.</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="lt_tag_clear">
        <doc xml:space="preserve">(Re-)Initialize all of the subtag information stored in @tag.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="compare" c:identifier="lt_tag_compare">
        <doc xml:space="preserve">Compare if @v1 and @v2 is the same object or not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's the same, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </parameter>
        </parameters>
      </method>
      <method name="convert_to_locale" c:identifier="lt_tag_convert_to_locale">
        <doc xml:space="preserve">Convert the language tag to the locale.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a locale string or %NULL if fails</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #LtError or %NULL.</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="lt_tag_copy">
        <doc xml:space="preserve">Create a copy instance of @tag.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtTag or %NULL if fails.</doc>
          <type name="Tag" c:type="LtTag*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="lt_tag_dump">
        <doc xml:space="preserve">Dumps the container information to the standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_extension" c:identifier="lt_tag_get_extension">
        <doc xml:space="preserve">Obtain a #LtExtension instance in @tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #LtExtension.</doc>
          <type name="Extension" c:type="const LtExtension*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_extlang" c:identifier="lt_tag_get_extlang">
        <doc xml:space="preserve">Obtain a #LtExtlang instance in @tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #LtExtlang.</doc>
          <type name="Extlang" c:type="const LtExtlang*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_grandfathered" c:identifier="lt_tag_get_grandfathered">
        <doc xml:space="preserve">Obtain a #LtGrandfathered instance in @tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #LtGrandfathered.</doc>
          <type name="Grandfathered" c:type="const LtGrandfathered*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_language" c:identifier="lt_tag_get_language">
        <doc xml:space="preserve">Obtain a #LtLang instance in @tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #LtLang.</doc>
          <type name="Lang" c:type="const LtLang*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_privateuse" c:identifier="lt_tag_get_privateuse">
        <doc xml:space="preserve">Obtain a #LtString instance in @tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #LtString.</doc>
          <type name="String" c:type="const LtString*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_region" c:identifier="lt_tag_get_region">
        <doc xml:space="preserve">Obtain a #LtRegion instance in @tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #LtRegion.</doc>
          <type name="Region" c:type="const LtRegion*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_script" c:identifier="lt_tag_get_script">
        <doc xml:space="preserve">Obtain a #LtScript instance in @tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #LtScript.</doc>
          <type name="Script" c:type="const LtScript*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_string" c:identifier="lt_tag_get_string">
        <doc xml:space="preserve">Obtains a language tag in string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a language tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_variants" c:identifier="lt_tag_get_variants">
        <doc xml:space="preserve">Obtain a list of #LtVariant instance in @tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #LtList containing #LtVariant.</doc>
          <type name="List" c:type="const LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lookup" c:identifier="lt_tag_lookup">
        <doc xml:space="preserve">Lookup the language tag that @tag meets with @pattern.
Any of subtags in @pattern is allowed to use the wildcard according to
the syntax in RFC 4647.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a language tag string if any matches, otherwise %NULL.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
          <parameter name="pattern" transfer-ownership="none">
            <doc xml:space="preserve">a language range string.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #LtError or %NULL.</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="match" c:identifier="lt_tag_match">
        <doc xml:space="preserve">Try matching of @v1 and @v2. any of subtags in @v2 is allowed to use
the wildcard according to the syntax in RFC 4647.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it matches, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="const LtTag*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a language range string.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #LtError or %NULL.</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse" c:identifier="lt_tag_parse">
        <doc xml:space="preserve">Parse @tag_string and create appropriate instances for subtags.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's successfully completed, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
          <parameter name="tag_string" transfer-ownership="none">
            <doc xml:space="preserve">language tag to be parsed.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #LtError or %NULL.</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_with_extra_token"
              c:identifier="lt_tag_parse_with_extra_token">
        <doc xml:space="preserve">Continue to parse a language tag with @tag_string. please use lt_tag_parse()
at first.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's successfully completed, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
          <parameter name="tag_string" transfer-ownership="none">
            <doc xml:space="preserve">a language tag to be parsed much more.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #LtError or %NULL.</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_tag_ref">
        <doc xml:space="preserve">Increases the reference count of @tag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @tag object.</doc>
          <type name="Tag" c:type="LtTag*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="transform" c:identifier="lt_tag_transform">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="truncate" c:identifier="lt_tag_truncate">
        <return-value transfer-ownership="none">
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_tag_unref">
        <doc xml:space="preserve">Decreases the reference count of @tag. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">a #LtTag.</doc>
            <type name="Tag" c:type="LtTag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="convert_from_locale"
                c:identifier="lt_tag_convert_from_locale">
        <doc xml:space="preserve">Convert current locale to the language tag.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtTag, %NULL if fails.</doc>
          <type name="Tag" c:type="LtTag*"/>
        </return-value>
        <parameters>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #LtError.</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </function>
      <function name="convert_from_locale_string"
                c:identifier="lt_tag_convert_from_locale_string">
        <doc xml:space="preserve">Convert @locale to the language tag.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtTag, %NULL if fails.</doc>
          <type name="Tag" c:type="LtTag*"/>
        </return-value>
        <parameters>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">a locale string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #LtError or %NULL.</doc>
            <type name="Error" c:type="LtError**"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="Variant"
            c:type="LtVariant"
            glib:type-name="LtVariant"
            glib:get-type="lt_variant_get_type"
            c:symbol-prefix="variant">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtVariant&lt;/structname&gt;
structure are private to the #LtVariant implementation.</doc>
      <method name="compare" c:identifier="lt_variant_compare">
        <doc xml:space="preserve">Compare if @v1 and @v2 is the same object or not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it's the same, otherwise %FALSE.</doc>
          <type name="Bool" c:type="LtBool"/>
        </return-value>
        <parameters>
          <instance-parameter name="v1" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="const LtVariant*"/>
          </instance-parameter>
          <parameter name="v2" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="const LtVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="lt_variant_dump">
        <doc xml:space="preserve">Dumps the container information to the standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="const LtVariant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_better_tag" c:identifier="lt_variant_get_better_tag">
        <doc xml:space="preserve">Obtains the better tag for use. this is a convenient function to get
the preferred-value if available.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="const LtVariant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="lt_variant_get_name">
        <doc xml:space="preserve">Obtains the description of the subtag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a description string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="const LtVariant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_preferred_tag"
              c:identifier="lt_variant_get_preferred_tag">
        <doc xml:space="preserve">Obtains the preferred-value. this is available only when the tag is
marked as deprecated.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a preferred-value for the tag or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="const LtVariant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_prefix" c:identifier="lt_variant_get_prefix">
        <doc xml:space="preserve">Obtains the prefix being assigned to the subtag.
This is available only when the subtag has any suitable sequence of
subtags for forming (with other subtags, as appropriate) a language
tag when using the variant.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #LtList contains prefix strings or %NULL.</doc>
          <type name="List" c:type="const LtList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="const LtVariant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag" c:identifier="lt_variant_get_tag">
        <doc xml:space="preserve">Obtains the tag name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a tag string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="const LtVariant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_variant_ref">
        <doc xml:space="preserve">Increases the reference count of @variant.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @variant object.</doc>
          <type name="Variant" c:type="LtVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="LtVariant*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_variant_unref">
        <doc xml:space="preserve">Decreases the reference count of @variant. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariant.</doc>
            <type name="Variant" c:type="LtVariant*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="VariantDb"
            c:type="LtVariantDb"
            glib:type-name="LtVariantDb"
            glib:get-type="lt_variant_db_get_type"
            c:symbol-prefix="variant_db">
      <doc xml:space="preserve">All the fields in the &lt;structname&gt;LtVariantDb&lt;/structname&gt;
structure are private to the #LtVariantDb implementation.</doc>
      <constructor name="new" c:identifier="lt_variant_db_new">
        <doc xml:space="preserve">Create a new instance of a #LtVariantDb.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new instance of #LtVariantDb.</doc>
          <type name="VariantDb" c:type="LtVariantDb*"/>
        </return-value>
      </constructor>
      <method name="lookup" c:identifier="lt_variant_db_lookup">
        <doc xml:space="preserve">Lookup @LtVariant if @subtag is valid and registered into the database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #LtVariant that meets with @subtag.
                          otherwise %NULL.</doc>
          <type name="Variant" c:type="LtVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="variantdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariantDb.</doc>
            <type name="VariantDb" c:type="LtVariantDb*"/>
          </instance-parameter>
          <parameter name="subtag" transfer-ownership="none">
            <doc xml:space="preserve">a subtag name to lookup.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="lt_variant_db_ref">
        <doc xml:space="preserve">Increases the reference count of @variantdb.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the same @variantdb object.</doc>
          <type name="VariantDb" c:type="LtVariantDb*"/>
        </return-value>
        <parameters>
          <instance-parameter name="variantdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariantDb.</doc>
            <type name="VariantDb" c:type="LtVariantDb*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="lt_variant_db_unref">
        <doc xml:space="preserve">Decreases the reference count of @variantdb. when its reference count
drops to 0, the object is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="variantdb" transfer-ownership="none">
            <doc xml:space="preserve">a #LtVariantDb.</doc>
            <type name="VariantDb" c:type="LtVariantDb*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <function name="db_finalize" c:identifier="lt_db_finalize">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="db_get_datadir" c:identifier="lt_db_get_datadir">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="db_get_extlang" c:identifier="lt_db_get_extlang">
      <return-value transfer-ownership="full">
        <type name="ExtlangDb" c:type="LtExtlangDb*"/>
      </return-value>
    </function>
    <function name="db_get_grandfathered"
              c:identifier="lt_db_get_grandfathered">
      <return-value transfer-ownership="full">
        <type name="GrandfatheredDb" c:type="LtGrandfatheredDb*"/>
      </return-value>
    </function>
    <function name="db_get_lang" c:identifier="lt_db_get_lang">
      <return-value transfer-ownership="full">
        <type name="LangDb" c:type="LtLangDb*"/>
      </return-value>
    </function>
    <function name="db_get_redundant" c:identifier="lt_db_get_redundant">
      <return-value transfer-ownership="full">
        <type name="RedundantDb" c:type="LtRedundantDb*"/>
      </return-value>
    </function>
    <function name="db_get_region" c:identifier="lt_db_get_region">
      <return-value transfer-ownership="full">
        <type name="RegionDb" c:type="LtRegionDb*"/>
      </return-value>
    </function>
    <function name="db_get_script" c:identifier="lt_db_get_script">
      <return-value transfer-ownership="full">
        <type name="ScriptDb" c:type="LtScriptDb*"/>
      </return-value>
    </function>
    <function name="db_get_variant" c:identifier="lt_db_get_variant">
      <return-value transfer-ownership="full">
        <type name="VariantDb" c:type="LtVariantDb*"/>
      </return-value>
    </function>
    <function name="db_initialize" c:identifier="lt_db_initialize">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="db_set_datadir" c:identifier="lt_db_set_datadir">
      <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>
    </function>
    <function name="ext_modules_load" c:identifier="lt_ext_modules_load">
      <doc xml:space="preserve">Load all of the modules on the system, including the internal accessor.
This has to be invoked before processing something with #lt_extension_t.
or lt_db_initialize() does.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="ext_modules_unload" c:identifier="lt_ext_modules_unload">
      <doc xml:space="preserve">Unload all of the modules already loaded.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="iter_init"
              c:identifier="lt_iter_init"
              moved-to="Iter.init">
      <doc xml:space="preserve">Initialize the iterator with @tmpl object. this function has to be called
before performing any opperation with the iterator and lt_iter_finish()
when the iterator isn't needed anymore.
|[
lt_lang_db *lang = lt_lang_db_new();
LtPointer *key, *val;
LtIter *iter;

iter = LT_ITER_INIT (lang);
while (lt_iter_next(iter, &amp;key, &amp;val)) {
  /&amp;ast; do something with key and value &amp;ast;/
}
lt_iter_finish(iter);
]|</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the initialized iterator object.</doc>
        <type name="Iter" c:type="LtIter*"/>
      </return-value>
      <parameters>
        <parameter name="tmpl" transfer-ownership="none">
          <doc xml:space="preserve">a #LtItermpl_t</doc>
          <type name="IterTmpl" c:type="LtIterTmpl*"/>
        </parameter>
      </parameters>
    </function>
    <function name="list_free"
              c:identifier="lt_list_free"
              moved-to="List.free">
      <doc xml:space="preserve">Frees all of the memory used by a #LtList.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">a #LtList.</doc>
          <type name="Pointer" c:type="LtPointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="tag_convert_from_locale"
              c:identifier="lt_tag_convert_from_locale"
              moved-to="Tag.convert_from_locale">
      <doc xml:space="preserve">Convert current locale to the language tag.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a #LtTag, %NULL if fails.</doc>
        <type name="Tag" c:type="LtTag*"/>
      </return-value>
      <parameters>
        <parameter name="error"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #LtError.</doc>
          <type name="Error" c:type="LtError**"/>
        </parameter>
      </parameters>
    </function>
    <function name="tag_convert_from_locale_string"
              c:identifier="lt_tag_convert_from_locale_string"
              moved-to="Tag.convert_from_locale_string">
      <doc xml:space="preserve">Convert @locale to the language tag.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a #LtTag, %NULL if fails.</doc>
        <type name="Tag" c:type="LtTag*"/>
      </return-value>
      <parameters>
        <parameter name="locale" transfer-ownership="none">
          <doc xml:space="preserve">a locale string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="error"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #LtError or %NULL.</doc>
          <type name="Error" c:type="LtError**"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
