<?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="Gio" version="2.0"/>
  <namespace name="Template"
             version="1.0"
             shared-library="libtemplate-glib-1.0.so.0.0"
             c:identifier-prefixes="Tmpl"
             c:symbol-prefixes="tmpl">
    <enumeration name="Error"
                 glib:type-name="TmplError"
                 glib:get-type="tmpl_error_get_type"
                 c:type="TmplError"
                 glib:error-domain="tmpl-error">
      <member name="invalid_state"
              value="1"
              c:identifier="TMPL_ERROR_INVALID_STATE"
              glib:nick="invalid-state">
      </member>
      <member name="template_not_found"
              value="2"
              c:identifier="TMPL_ERROR_TEMPLATE_NOT_FOUND"
              glib:nick="template-not-found">
      </member>
      <member name="circular_include"
              value="3"
              c:identifier="TMPL_ERROR_CIRCULAR_INCLUDE"
              glib:nick="circular-include">
      </member>
      <member name="syntax_error"
              value="4"
              c:identifier="TMPL_ERROR_SYNTAX_ERROR"
              glib:nick="syntax-error">
      </member>
      <member name="lexer_failure"
              value="5"
              c:identifier="TMPL_ERROR_LEXER_FAILURE"
              glib:nick="lexer-failure">
      </member>
      <member name="type_mismatch"
              value="6"
              c:identifier="TMPL_ERROR_TYPE_MISMATCH"
              glib:nick="type-mismatch">
      </member>
      <member name="invalid_op_code"
              value="7"
              c:identifier="TMPL_ERROR_INVALID_OP_CODE"
              glib:nick="invalid-op-code">
      </member>
      <member name="divide_by_zero"
              value="8"
              c:identifier="TMPL_ERROR_DIVIDE_BY_ZERO"
              glib:nick="divide-by-zero">
      </member>
      <member name="missing_symbol"
              value="9"
              c:identifier="TMPL_ERROR_MISSING_SYMBOL"
              glib:nick="missing-symbol">
      </member>
      <member name="symbol_redefined"
              value="10"
              c:identifier="TMPL_ERROR_SYMBOL_REDEFINED"
              glib:nick="symbol-redefined">
      </member>
      <member name="not_an_object"
              value="11"
              c:identifier="TMPL_ERROR_NOT_AN_OBJECT"
              glib:nick="not-an-object">
      </member>
      <member name="null_pointer"
              value="12"
              c:identifier="TMPL_ERROR_NULL_POINTER"
              glib:nick="null-pointer">
      </member>
      <member name="no_such_property"
              value="13"
              c:identifier="TMPL_ERROR_NO_SUCH_PROPERTY"
              glib:nick="no-such-property">
      </member>
      <member name="gi_failure"
              value="14"
              c:identifier="TMPL_ERROR_GI_FAILURE"
              glib:nick="gi-failure">
      </member>
      <member name="runtime_error"
              value="15"
              c:identifier="TMPL_ERROR_RUNTIME_ERROR"
              glib:nick="runtime-error">
      </member>
      <member name="not_implemented"
              value="16"
              c:identifier="TMPL_ERROR_NOT_IMPLEMENTED"
              glib:nick="not-implemented">
      </member>
      <member name="not_a_value"
              value="17"
              c:identifier="TMPL_ERROR_NOT_A_VALUE"
              glib:nick="not-a-value">
      </member>
      <member name="not_a_function"
              value="18"
              c:identifier="TMPL_ERROR_NOT_A_FUNCTION"
              glib:nick="not-a-function">
      </member>
      <function name="quark" c:identifier="tmpl_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <union name="Expr"
           c:type="TmplExpr"
           glib:type-name="TmplExpr"
           glib:get-type="tmpl_expr_get_type"
           c:symbol-prefix="expr">
      <constructor name="new_boolean" c:identifier="tmpl_expr_new_boolean">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_flow" c:identifier="tmpl_expr_new_flow">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <type name="ExprType" c:type="TmplExprType"/>
          </parameter>
          <parameter name="condition" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
          <parameter name="primary" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
          <parameter name="secondary" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_fn_call" c:identifier="tmpl_expr_new_fn_call">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="builtin" transfer-ownership="none">
            <type name="ExprBuiltin" c:type="TmplExprBuiltin"/>
          </parameter>
          <parameter name="param" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_number" c:identifier="tmpl_expr_new_number">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_require" c:identifier="tmpl_expr_new_require">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="typelib" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="version" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_simple" c:identifier="tmpl_expr_new_simple">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <type name="ExprType" c:type="TmplExprType"/>
          </parameter>
          <parameter name="left" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
          <parameter name="right" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_string" c:identifier="tmpl_expr_new_string">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <type name="gssize" c:type="gssize"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_symbol_assign"
                   c:identifier="tmpl_expr_new_symbol_assign">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="symbol" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="right" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_symbol_ref"
                   c:identifier="tmpl_expr_new_symbol_ref">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="symbol" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_user_fn_call"
                   c:identifier="tmpl_expr_new_user_fn_call">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="param" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="eval" c:identifier="tmpl_expr_eval" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="expr" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </instance-parameter>
          <parameter name="scope" transfer-ownership="none">
            <type name="Scope" c:type="TmplScope*"/>
          </parameter>
          <parameter name="return_value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_getattr" c:identifier="tmpl_expr_new_getattr">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <instance-parameter name="left" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </instance-parameter>
          <parameter name="attr" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_gi_call" c:identifier="tmpl_expr_new_gi_call">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <instance-parameter name="left" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="params" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_setattr" c:identifier="tmpl_expr_new_setattr">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <instance-parameter name="left" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </instance-parameter>
          <parameter name="attr" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="right" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="tmpl_expr_ref">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <instance-parameter name="expr" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="tmpl_expr_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="expr" transfer-ownership="none">
            <type name="Expr" c:type="TmplExpr*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="from_string"
                c:identifier="tmpl_expr_from_string"
                throws="1">
        <return-value transfer-ownership="full">
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
    </union>
    <enumeration name="ExprBuiltin"
                 glib:type-name="TmplExprBuiltin"
                 glib:get-type="tmpl_expr_builtin_get_type"
                 c:type="TmplExprBuiltin">
      <member name="abs"
              value="0"
              c:identifier="TMPL_EXPR_BUILTIN_ABS"
              glib:nick="abs">
      </member>
      <member name="ceil"
              value="1"
              c:identifier="TMPL_EXPR_BUILTIN_CEIL"
              glib:nick="ceil">
      </member>
      <member name="floor"
              value="2"
              c:identifier="TMPL_EXPR_BUILTIN_FLOOR"
              glib:nick="floor">
      </member>
      <member name="hex"
              value="3"
              c:identifier="TMPL_EXPR_BUILTIN_HEX"
              glib:nick="hex">
      </member>
      <member name="log"
              value="4"
              c:identifier="TMPL_EXPR_BUILTIN_LOG"
              glib:nick="log">
      </member>
      <member name="print"
              value="5"
              c:identifier="TMPL_EXPR_BUILTIN_PRINT"
              glib:nick="print">
      </member>
      <member name="repr"
              value="6"
              c:identifier="TMPL_EXPR_BUILTIN_REPR"
              glib:nick="repr">
      </member>
      <member name="sqrt"
              value="7"
              c:identifier="TMPL_EXPR_BUILTIN_SQRT"
              glib:nick="sqrt">
      </member>
    </enumeration>
    <enumeration name="ExprType"
                 glib:type-name="TmplExprType"
                 glib:get-type="tmpl_expr_type_get_type"
                 c:type="TmplExprType">
      <member name="add"
              value="1"
              c:identifier="TMPL_EXPR_ADD"
              glib:nick="add">
      </member>
      <member name="sub"
              value="2"
              c:identifier="TMPL_EXPR_SUB"
              glib:nick="sub">
      </member>
      <member name="mul"
              value="3"
              c:identifier="TMPL_EXPR_MUL"
              glib:nick="mul">
      </member>
      <member name="div"
              value="4"
              c:identifier="TMPL_EXPR_DIV"
              glib:nick="div">
      </member>
      <member name="boolean"
              value="5"
              c:identifier="TMPL_EXPR_BOOLEAN"
              glib:nick="boolean">
      </member>
      <member name="number"
              value="6"
              c:identifier="TMPL_EXPR_NUMBER"
              glib:nick="number">
      </member>
      <member name="string"
              value="7"
              c:identifier="TMPL_EXPR_STRING"
              glib:nick="string">
      </member>
      <member name="gt" value="8" c:identifier="TMPL_EXPR_GT" glib:nick="gt">
      </member>
      <member name="lt" value="9" c:identifier="TMPL_EXPR_LT" glib:nick="lt">
      </member>
      <member name="ne" value="10" c:identifier="TMPL_EXPR_NE" glib:nick="ne">
      </member>
      <member name="eq" value="11" c:identifier="TMPL_EXPR_EQ" glib:nick="eq">
      </member>
      <member name="gte"
              value="12"
              c:identifier="TMPL_EXPR_GTE"
              glib:nick="gte">
      </member>
      <member name="lte"
              value="13"
              c:identifier="TMPL_EXPR_LTE"
              glib:nick="lte">
      </member>
      <member name="unary_minus"
              value="14"
              c:identifier="TMPL_EXPR_UNARY_MINUS"
              glib:nick="unary-minus">
      </member>
      <member name="stmt_list"
              value="15"
              c:identifier="TMPL_EXPR_STMT_LIST"
              glib:nick="stmt-list">
      </member>
      <member name="if" value="16" c:identifier="TMPL_EXPR_IF" glib:nick="if">
      </member>
      <member name="while"
              value="17"
              c:identifier="TMPL_EXPR_WHILE"
              glib:nick="while">
      </member>
      <member name="symbol_ref"
              value="18"
              c:identifier="TMPL_EXPR_SYMBOL_REF"
              glib:nick="symbol-ref">
      </member>
      <member name="symbol_assign"
              value="19"
              c:identifier="TMPL_EXPR_SYMBOL_ASSIGN"
              glib:nick="symbol-assign">
      </member>
      <member name="fn_call"
              value="20"
              c:identifier="TMPL_EXPR_FN_CALL"
              glib:nick="fn-call">
      </member>
      <member name="user_fn_call"
              value="21"
              c:identifier="TMPL_EXPR_USER_FN_CALL"
              glib:nick="user-fn-call">
      </member>
      <member name="getattr"
              value="22"
              c:identifier="TMPL_EXPR_GETATTR"
              glib:nick="getattr">
      </member>
      <member name="setattr"
              value="23"
              c:identifier="TMPL_EXPR_SETATTR"
              glib:nick="setattr">
      </member>
      <member name="gi_call"
              value="24"
              c:identifier="TMPL_EXPR_GI_CALL"
              glib:nick="gi-call">
      </member>
      <member name="require"
              value="25"
              c:identifier="TMPL_EXPR_REQUIRE"
              glib:nick="require">
      </member>
    </enumeration>
    <record name="Scope"
            c:type="TmplScope"
            glib:type-name="TmplScope"
            glib:get-type="tmpl_scope_get_type"
            c:symbol-prefix="scope">
      <constructor name="new" c:identifier="tmpl_scope_new">
        <doc xml:space="preserve">Creates a new scope to contain variables and custom expressions,</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly created #TmplScope.</doc>
          <type name="Scope" c:type="TmplScope*"/>
        </return-value>
      </constructor>
      <method name="get" c:identifier="tmpl_scope_get">
        <doc xml:space="preserve">If the symbol could not be found, it will be allocated.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #TmplSymbol.</doc>
          <type name="Symbol" c:type="TmplSymbol*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Scope" c:type="TmplScope*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_with_parent" c:identifier="tmpl_scope_new_with_parent">
        <doc xml:space="preserve">Creates a new scope to contain variables and custom expressions,
If @parent is set, the parent scope will be inherited.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly created #TmplScope.</doc>
          <type name="Scope" c:type="TmplScope*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parent"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">An optional parent scope</doc>
            <type name="Scope" c:type="TmplScope*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="peek" c:identifier="tmpl_scope_peek">
        <doc xml:space="preserve">If the symbol could not be found, %NULL is returned.</doc>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve">A #TmplSymbol or %NULL.</doc>
          <type name="Symbol" c:type="TmplSymbol*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Scope" c:type="TmplScope*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="tmpl_scope_ref">
        <return-value transfer-ownership="full">
          <type name="Scope" c:type="TmplScope*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Scope" c:type="TmplScope*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="tmpl_scope_set">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Scope" c:type="TmplScope*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="symbol" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="tmpl_scope_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Scope" c:type="TmplScope*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Symbol"
            c:type="TmplSymbol"
            glib:type-name="TmplSymbol"
            glib:get-type="tmpl_symbol_get_type"
            c:symbol-prefix="symbol">
      <constructor name="new" c:identifier="tmpl_symbol_new">
        <return-value transfer-ownership="full">
          <type name="Symbol" c:type="TmplSymbol*"/>
        </return-value>
      </constructor>
      <method name="assign_boolean" c:identifier="tmpl_symbol_assign_boolean">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
          <parameter name="v_bool" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="assign_double" c:identifier="tmpl_symbol_assign_double">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
          <parameter name="v_double" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="assign_expr"
              c:identifier="tmpl_symbol_assign_expr"
              introspectable="0">
        <doc xml:space="preserve">Sets the symbol as a %TMPL_SYMBOL_EXPR with the given ordered and
named parameters.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #TmplSymbol.</doc>
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
          <parameter name="expr"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">An expression to assign, or %NULL.
params: (element-type utf8): A #GPtrArray of strings.</doc>
            <type name="Expr" c:type="TmplExpr*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="gpointer" c:type="gpointer"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="assign_object" c:identifier="tmpl_symbol_assign_object">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
          <parameter name="v_object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="assign_string" c:identifier="tmpl_symbol_assign_string">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
          <parameter name="v_string" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="assign_value" c:identifier="tmpl_symbol_assign_value">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_expr" c:identifier="tmpl_symbol_get_expr">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #TmplExpr.</doc>
          <type name="Expr" c:type="TmplExpr*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #TmplSymbol</doc>
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
          <parameter name="params"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     nullable="1">
            <doc xml:space="preserve">A list of parameters</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray**">
              <type name="utf8"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="get_symbol_type"
              c:identifier="tmpl_symbol_get_symbol_type">
        <return-value transfer-ownership="none">
          <type name="SymbolType" c:type="TmplSymbolType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value" c:identifier="tmpl_symbol_get_value">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="tmpl_symbol_ref">
        <return-value transfer-ownership="full">
          <type name="Symbol" c:type="TmplSymbol*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="tmpl_symbol_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Symbol" c:type="TmplSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="SymbolType"
                 glib:type-name="TmplSymbolType"
                 glib:get-type="tmpl_symbol_type_get_type"
                 c:type="TmplSymbolType">
      <member name="expr"
              value="0"
              c:identifier="TMPL_SYMBOL_EXPR"
              glib:nick="expr">
      </member>
      <member name="value"
              value="1"
              c:identifier="TMPL_SYMBOL_VALUE"
              glib:nick="value">
      </member>
    </enumeration>
    <class name="Template"
           c:symbol-prefix="template"
           c:type="TmplTemplate"
           parent="GObject.Object"
           glib:type-name="TmplTemplate"
           glib:get-type="tmpl_template_get_type"
           glib:type-struct="TemplateClass">
      <constructor name="new" c:identifier="tmpl_template_new">
        <doc xml:space="preserve">Creates a new #TmplTemplate.

If @locator is specified, @locator will be used to resolve include
directives when parsing the template.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A #TmplTemplate.</doc>
          <type name="Template" c:type="TmplTemplate*"/>
        </return-value>
        <parameters>
          <parameter name="locator"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A #TmplTemplateLocator or %NULL.</doc>
            <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="expand" c:identifier="tmpl_template_expand" throws="1">
        <doc xml:space="preserve">Expands a template into @stream using the @scope provided.

@scope should have all of the variables set that are required to expand
the template, or you will get a symbol reference error and %FALSE will
be returned.

To set a symbol value, get the symbol with tmpl_scope_get() and assign
a value using tmpl_scope_assign_value() or similar methods.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, otherwise %FALSE and @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A TmplTemplate.</doc>
            <type name="Template" c:type="TmplTemplate*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GOutputStream to write the results to</doc>
            <type name="Gio.OutputStream" c:type="GOutputStream*"/>
          </parameter>
          <parameter name="scope"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A #TmplScope containing state for the template, or %NULL.</doc>
            <type name="Scope" c:type="TmplScope*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">An optional cancellable for the operation.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="expand_string"
              c:identifier="tmpl_template_expand_string"
              throws="1">
        <doc xml:space="preserve">Expands the template and returns the result as a string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly allocated string, or %NULL upon failure.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #TmplTemplate.</doc>
            <type name="Template" c:type="TmplTemplate*"/>
          </instance-parameter>
          <parameter name="scope"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A #TmplScope or %NULL.</doc>
            <type name="Scope" c:type="TmplScope*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_locator" c:identifier="tmpl_template_get_locator">
        <doc xml:space="preserve">Gets the template locator used when resolving template includes.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #TmplTemplateLocator or %NULL.</doc>
          <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #TmplTemplate</doc>
            <type name="Template" c:type="TmplTemplate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="parse" c:identifier="tmpl_template_parse" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Template" c:type="TmplTemplate*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_file"
              c:identifier="tmpl_template_parse_file"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Template" c:type="TmplTemplate*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_path"
              c:identifier="tmpl_template_parse_path"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Template" c:type="TmplTemplate*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_resource"
              c:identifier="tmpl_template_parse_resource"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Template" c:type="TmplTemplate*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_string"
              c:identifier="tmpl_template_parse_string"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Template" c:type="TmplTemplate*"/>
          </instance-parameter>
          <parameter name="input" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_locator" c:identifier="tmpl_template_set_locator">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Template" c:type="TmplTemplate*"/>
          </instance-parameter>
          <parameter name="locator" transfer-ownership="none">
            <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
          </parameter>
        </parameters>
      </method>
      <property name="locator"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="TemplateLocator"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="TemplateClass"
            c:type="TmplTemplateClass"
            glib:is-gtype-struct-for="Template">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="TemplateLocator"
           c:symbol-prefix="template_locator"
           c:type="TmplTemplateLocator"
           parent="GObject.Object"
           glib:type-name="TmplTemplateLocator"
           glib:get-type="tmpl_template_locator_get_type"
           glib:type-struct="TemplateLocatorClass">
      <constructor name="new" c:identifier="tmpl_template_locator_new">
        <return-value transfer-ownership="full">
          <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
        </return-value>
      </constructor>
      <virtual-method name="locate" invoker="locate" throws="1">
        <doc xml:space="preserve">This will resolve the relative path using the search paths found within
the template loader.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A #GInputStream or %NULL and @error is set.</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #TmplTemplateLocator.</doc>
            <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">a relative path to the file</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="append_search_path"
              c:identifier="tmpl_template_locator_append_search_path">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_search_path"
              c:identifier="tmpl_template_locator_get_search_path">
        <doc xml:space="preserve">Gets the current search path used by the template locator.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A %NULL-terminated array of strings.</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #TmplTemplateLocator</doc>
            <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="locate"
              c:identifier="tmpl_template_locator_locate"
              throws="1">
        <doc xml:space="preserve">This will resolve the relative path using the search paths found within
the template loader.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A #GInputStream or %NULL and @error is set.</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #TmplTemplateLocator.</doc>
            <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">a relative path to the file</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepend_search_path"
              c:identifier="tmpl_template_locator_prepend_search_path">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="TemplateLocatorClass"
            c:type="TmplTemplateLocatorClass"
            glib:is-gtype-struct-for="TemplateLocator">
      <field name="parent_instance">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="locate">
        <callback name="locate" throws="1">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">A #GInputStream or %NULL and @error is set.</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">A #TmplTemplateLocator.</doc>
              <type name="TemplateLocator" c:type="TmplTemplateLocator*"/>
            </parameter>
            <parameter name="path" transfer-ownership="none">
              <doc xml:space="preserve">a relative path to the file</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <function name="error_quark"
              c:identifier="tmpl_error_quark"
              moved-to="Error.quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="expr_from_string"
              c:identifier="tmpl_expr_from_string"
              moved-to="Expr.from_string"
              throws="1">
      <return-value transfer-ownership="full">
        <type name="Expr" c:type="TmplExpr*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
