<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
<!ENTITY pi "&#960;">
<!ENTITY solidus "&#8260;">
]>
<refentry id="GtkExpression">
<refmeta>
<refentrytitle role="top_of_page" id="GtkExpression.top_of_page">GtkExpression</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GTK4 Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>GtkExpression</refname>
<refpurpose>Expressions to values</refpurpose>
</refnamediv>

<refsect1 id="GtkExpression.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_proto_type" colwidth="150px"/>
<colspec colname="functions_proto_name"/>
<tbody>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="GtkExpressionNotify">*GtkExpressionNotify</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-expression-ref">gtk_expression_ref</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-expression-unref">gtk_expression_unref</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GType"><returnvalue>GType</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-expression-get-value-type">gtk_expression_get_value_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-expression-is-static">gtk_expression_is_static</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-expression-evaluate">gtk_expression_evaluate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpressionWatch"><returnvalue>GtkExpressionWatch</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-expression-watch">gtk_expression_watch</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpressionWatch"><returnvalue>GtkExpressionWatch</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-expression-bind">gtk_expression_bind</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpressionWatch"><returnvalue>GtkExpressionWatch</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-expression-watch-ref">gtk_expression_watch_ref</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-expression-watch-unref">gtk_expression_watch_unref</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-expression-watch-evaluate">gtk_expression_watch_evaluate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-expression-watch-unwatch">gtk_expression_watch_unwatch</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-property-expression-new">gtk_property_expression_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-property-expression-new-for-pspec">gtk_property_expression_new_for_pspec</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-property-expression-get-expression">gtk_property_expression_get_expression</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GParamSpec"><returnvalue>GParamSpec</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-property-expression-get-pspec">gtk_property_expression_get_pspec</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-constant-expression-new">gtk_constant_expression_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-constant-expression-new-for-value">gtk_constant_expression_new_for_value</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type">const <link linkend="GValue"><returnvalue>GValue</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-constant-expression-get-value">gtk_constant_expression_get_value</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-object-expression-new">gtk_object_expression_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GObject"><returnvalue>GObject</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-object-expression-get-object">gtk_object_expression_get_object</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-closure-expression-new">gtk_closure_expression_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-cclosure-expression-new">gtk_cclosure_expression_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="GTK-VALUE-HOLDS-EXPRESSION:CAPS">GTK_VALUE_HOLDS_EXPRESSION</link><phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-value-set-expression">gtk_value_set_expression</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-value-take-expression">gtk_value_take_expression</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-value-get-expression">gtk_value_get_expression</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-value-dup-expression">gtk_value_dup_expression</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="GParamSpec"><returnvalue>GParamSpec</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-param-spec-expression">gtk_param_spec_expression</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkExpression.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="other_proto_type" colwidth="150px"/>
<colspec colname="other_proto_name"/>
<tbody>
<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="GtkExpression-struct">GtkExpression</link></entry></row>
<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="GtkExpressionWatch">GtkExpressionWatch</link></entry></row>



<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="GtkParamSpecExpression">GtkParamSpecExpression</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkExpression.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<screen>    GtkExpression
</screen>
</refsect1>

<refsect1 id="GtkExpression.includes"><title>Includes</title><synopsis>#include &lt;gtk/gtk.h&gt;
</synopsis></refsect1>

<refsect1 id="GtkExpression.description" role="desc">
<title role="desc.title">Description</title>
<para>GtkExpression provides a way to describe references to values.</para>
<para>An important aspect of expressions is that the value can be obtained
from a source that is several steps away. For example, an expression
may describe ‘the value of property A of <parameter>object1</parameter>
, which is itself the
value of a property of <parameter>object2</parameter>
’. And <parameter>object1</parameter>
 may not even exist yet
at the time that the expression is created. This is contrast to GObject
property bindings, which can only create direct connections between
the properties of two objects that must both exist for the duration
of the binding.</para>
<para>An expression needs to be "evaluated" to obtain the value that it currently
refers to. An evaluation always happens in the context of a current object
called <literal>this</literal> (it mirrors the behavior of object-oriented languages),
which may or may not influence the result of the evaluation. Use
<link linkend="gtk-expression-evaluate"><function>gtk_expression_evaluate()</function></link> for evaluating an expression.</para>
<para>Various methods for defining expressions exist, from simple constants via
<link linkend="gtk-constant-expression-new"><function>gtk_constant_expression_new()</function></link> to looking up properties in a <link linkend="GObject"><type>GObject</type></link> (even
recursively) via <link linkend="gtk-property-expression-new"><function>gtk_property_expression_new()</function></link> or providing custom functions
to transform and combine expressions via <link linkend="gtk-closure-expression-new"><function>gtk_closure_expression_new()</function></link>.</para>
<para>Here is an example of a complex expression:</para>
<informalexample><programlisting role="example"><![CDATA[
  color_expr = gtk_property_expression_new (GTK_TYPE_LIST_ITEM,
                                            NULL, "item");
  expression = gtk_property_expression_new (GTK_TYPE_COLOR,
                                            color_expr, "name");
]]></programlisting></informalexample>
<para></para>
<para>when evaluated with <literal>this</literal> being a GtkListItem, it will obtain the
"item" property from the GtkListItem, and then obtain the "name" property
from the resulting object (which is assumed to be of type GTK_TYPE_COLOR).</para>
<para>A more concise way to describe this would be</para>
<informalexample><programlisting role="example"><![CDATA[
  this->item->name
]]></programlisting></informalexample>
<para></para>
<para>The most likely place where you will encounter expressions is in the context
of list models and list widgets using them. For example, <link linkend="GtkDropDown"><type>GtkDropDown</type></link> is
evaluating a GtkExpression to obtain strings from the items in its model
that it can then use to match against the contents of its search entry.
<link linkend="GtkStringFilter"><type>GtkStringFilter</type></link> is using a GtkExpression for similar reasons.</para>
<para>By default, expressions are not paying attention to changes and evaluation is
just a snapshot of the current state at a given time. To get informed about
changes, an expression needs to be "watched" via a <link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link>, which
will cause a callback to be called whenever the value of the expression may
have changed. <link linkend="gtk-expression-watch"><function>gtk_expression_watch()</function></link> starts watching an expression, and
<link linkend="gtk-expression-watch-unwatch"><function>gtk_expression_watch_unwatch()</function></link> stops.</para>
<para>Watches can be created for automatically updating the property of an object,
similar to GObject's <link linkend="GBinding"><type>GBinding</type></link> mechanism, by using <link linkend="gtk-expression-bind"><function>gtk_expression_bind()</function></link>.</para>
<refsect2><title>GtkExpression in GObject properties</title><para>In order to use a <link linkend="GtkExpression"><type>GtkExpression</type></link> as a <link linkend="GObject"><type>GObject</type></link> property, you must use the
<link linkend="gtk-param-spec-expression"><function>gtk_param_spec_expression()</function></link> when creating a <link linkend="GParamSpec"><type>GParamSpec</type></link> to install in the
<link linkend="GObject"><type>GObject</type></link> class being defined; for instance:</para>
<informalexample><programlisting role="example"><![CDATA[
  obj_props[PROP_EXPRESSION] =
    gtk_param_spec_expression ("expression",
                               "Expression",
                               "The expression used by the widget",
                               G_PARAM_READWRITE |
                               G_PARAM_STATIC_STRINGS |
                               G_PARAM_EXPLICIT_NOTIFY);
]]></programlisting></informalexample>
<para></para>
<para>When implementing the <link linkend="GObjectClass.set-property"><function>GObjectClass.set_property()</function></link> and <link linkend="GObjectClass.get-property"><function>GObjectClass.get_property()</function></link>
virtual functions, you must use <link linkend="gtk-value-get-expression"><function>gtk_value_get_expression()</function></link>, to retrieve the
stored <link linkend="GtkExpression"><type>GtkExpression</type></link> from the <link linkend="GValue"><type>GValue</type></link> container, and <link linkend="gtk-value-set-expression"><function>gtk_value_set_expression()</function></link>,
to store the <link linkend="GtkExpression"><type>GtkExpression</type></link> into the <link linkend="GValue"><type>GValue</type></link>; for instance:</para>
<informalexample><programlisting role="example"><![CDATA[
  // in set_property()...
  case PROP_EXPRESSION:
    foo_widget_set_expression (foo, gtk_value_get_expression (value));
    break;

  // in get_property()...
  case PROP_EXPRESSION:
    gtk_value_set_expression (value, foo->expression);
    break;
]]></programlisting></informalexample>
<para></para>
</refsect2>
<refsect2><title>GtkExpression in .ui files</title><para>GtkBuilder has support for creating expressions. The syntax here can be used where
a <link linkend="GtkExpression"><type>GtkExpression</type></link> object is needed like in a &lt;property> tag for an expression
property, or in a &lt;binding> tag to bind a property to an expression.</para>
<para>To create an property expression, use the &lt;lookup> element. It can have a <literal>type</literal>
attribute to specify the object type, and a <literal>name</literal> attribute to specify the property
to look up. The content of &lt;lookup> can either be an element specfiying the expression
to use the object, or a string that specifies the name of the object to use.</para>
<para>Example:</para>
<informalexample><programlisting role="example"><![CDATA[
  <lookup name='search'>string_filter</lookup>
]]></programlisting></informalexample>
<para></para>
<para>To create a constant expression, use the &lt;constant> element. If the type attribute
is specified, the element content is interpreted as a value of that type. Otherwise,
it is assumed to be an object.</para>
<para>Example:</para>
<informalexample><programlisting role="example"><![CDATA[
  <constant>string_filter</constant>
  <constant type='gchararray'>Hello, world</constant>
]]></programlisting></informalexample>
<para></para>
<para>To create a closure expression, use the &lt;closure> element. The <literal>type</literal> and <literal>function</literal>
attributes specify what function to use for the closure, the content of the element
contains the expressions for the parameters.</para>
<para>Example:</para>
<informalexample><programlisting role="example"><![CDATA[
  <closure type='gchararray' function='combine_args_somehow'>
    <constant type='gchararray'>File size:</constant>
    <lookup type='GFile' name='size'>myfile</lookup>
  </closure>
]]></programlisting></informalexample>
<para></para>
</refsect2>

</refsect1>
<refsect1 id="GtkExpression.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="GtkExpressionNotify" role="function">
<title>GtkExpressionNotify&#160;()</title>
<indexterm zone="GtkExpressionNotify"><primary>GtkExpressionNotify</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*GtkExpressionNotify<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
<para>Callback called by <link linkend="gtk-expression-watch"><function>gtk_expression_watch()</function></link> when the
expression value changes.</para>
<refsect3 id="GtkExpressionNotify.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>data passed to <link linkend="gtk-expression-watch"><function>gtk_expression_watch()</function></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-expression-ref" role="function">
<title>gtk_expression_ref&#160;()</title>
<indexterm zone="gtk-expression-ref"><primary>gtk_expression_ref</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_expression_ref (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *self</parameter>);</programlisting>
<para>Acquires a reference on the given <link linkend="GtkExpression"><type>GtkExpression</type></link>.</para>
<refsect3 id="gtk-expression-ref.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-expression-ref.returns" role="returns">
<title>Returns</title>
<para>the <link linkend="GtkExpression"><type>GtkExpression</type></link> with an additional reference. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-expression-unref" role="function">
<title>gtk_expression_unref&#160;()</title>
<indexterm zone="gtk-expression-unref"><primary>gtk_expression_unref</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_expression_unref (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *self</parameter>);</programlisting>
<para>Releases a reference on the given <link linkend="GtkExpression"><type>GtkExpression</type></link>.</para>
<para>If the reference was the last, the resources associated to the <parameter>self</parameter>
 are
freed.</para>
<refsect3 id="gtk-expression-unref.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-expression-get-value-type" role="function">
<title>gtk_expression_get_value_type&#160;()</title>
<indexterm zone="gtk-expression-get-value-type"><primary>gtk_expression_get_value_type</primary></indexterm>
<programlisting language="C"><link linkend="GType"><returnvalue>GType</returnvalue></link>
gtk_expression_get_value_type (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *self</parameter>);</programlisting>
<para>Gets the <link linkend="GType"><type>GType</type></link> that this expression evaluates to. This type
is constant and will not change over the lifetime of this expression.</para>
<refsect3 id="gtk-expression-get-value-type.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpression"><type>GtkExpression</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-expression-get-value-type.returns" role="returns">
<title>Returns</title>
<para> The type returned from <link linkend="gtk-expression-evaluate"><function>gtk_expression_evaluate()</function></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-expression-is-static" role="function">
<title>gtk_expression_is_static&#160;()</title>
<indexterm zone="gtk-expression-is-static"><primary>gtk_expression_is_static</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gtk_expression_is_static (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *self</parameter>);</programlisting>
<para>Checks if the expression is static.</para>
<para>A static expression will never change its result when 
<link linkend="gtk-expression-evaluate"><function>gtk_expression_evaluate()</function></link> is called on it with the same arguments.</para>
<para>That means a call to <link linkend="gtk-expression-watch"><function>gtk_expression_watch()</function></link> is not necessary because
it will never trigger a notify.</para>
<refsect3 id="gtk-expression-is-static.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpression"><type>GtkExpression</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-expression-is-static.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the expression is static</para>
</refsect3></refsect2>
<refsect2 id="gtk-expression-evaluate" role="function">
<title>gtk_expression_evaluate&#160;()</title>
<indexterm zone="gtk-expression-evaluate"><primary>gtk_expression_evaluate</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gtk_expression_evaluate (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *self</parameter>,
                         <parameter><link linkend="gpointer"><type>gpointer</type></link> this_</parameter>,
                         <parameter><link linkend="GValue"><type>GValue</type></link> *value</parameter>);</programlisting>
<para>Evaluates the given expression and on success stores the result
in <parameter>value</parameter>
. The <link linkend="GType"><type>GType</type></link> of <parameter>value</parameter>
 will be the type given by
<link linkend="gtk-expression-get-value-type"><function>gtk_expression_get_value_type()</function></link>.</para>
<para>It is possible that expressions cannot be evaluated - for example
when the expression references objects that have been destroyed or
set to <link linkend="NULL:CAPS"><literal>NULL</literal></link>. In that case <parameter>value</parameter>
 will remain empty and <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>
will be returned.</para>
<refsect3 id="gtk-expression-evaluate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpression"><type>GtkExpression</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>this_</para></entry>
<entry role="parameter_description"><para>the this argument for the evaluation. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>type</acronym> GObject][<acronym>nullable</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>an empty <link linkend="GValue"><type>GValue</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-expression-evaluate.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the expression could be evaluated</para>
</refsect3></refsect2>
<refsect2 id="gtk-expression-watch" role="function">
<title>gtk_expression_watch&#160;()</title>
<indexterm zone="gtk-expression-watch"><primary>gtk_expression_watch</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpressionWatch"><returnvalue>GtkExpressionWatch</returnvalue></link>&#160;*
gtk_expression_watch (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *self</parameter>,
                      <parameter><link linkend="gpointer"><type>gpointer</type></link> this_</parameter>,
                      <parameter><link linkend="GtkExpressionNotify"><type>GtkExpressionNotify</type></link> notify</parameter>,
                      <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>,
                      <parameter><link linkend="GDestroyNotify"><type>GDestroyNotify</type></link> user_destroy</parameter>);</programlisting>
<para>Installs a watch for the given <parameter>expression</parameter>
 that calls the <parameter>notify</parameter>
 function
whenever the evaluation of <parameter>self</parameter>
 may have changed.</para>
<para>GTK cannot guarantee that the evaluation did indeed change when the <parameter>notify</parameter>

gets invoked, but it guarantees the opposite: When it did in fact change,
the <parameter>notify</parameter>
 will be invoked.</para>
<refsect3 id="gtk-expression-watch.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpression"><type>GtkExpression</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>this_</para></entry>
<entry role="parameter_description"><para>the <literal>this</literal> argument to
watch. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>type</acronym> GObject][<acronym>nullable</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>notify</para></entry>
<entry role="parameter_description"><para>callback to invoke when the
expression changes. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>closure</acronym> user_data]</emphasis></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data to pass to <parameter>notify</parameter>
callback</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>user_destroy</para></entry>
<entry role="parameter_description"><para>destroy notify for <parameter>user_data</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-expression-watch.returns" role="returns">
<title>Returns</title>
<para>The newly installed watch. Note that the only
reference held to the watch will be released when the watch is unwatched
which can happen automatically, and not just via
<link linkend="gtk-expression-watch-unwatch"><function>gtk_expression_watch_unwatch()</function></link>. You should call <link linkend="gtk-expression-watch-ref"><function>gtk_expression_watch_ref()</function></link>
if you want to keep the watch around. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-expression-bind" role="function">
<title>gtk_expression_bind&#160;()</title>
<indexterm zone="gtk-expression-bind"><primary>gtk_expression_bind</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpressionWatch"><returnvalue>GtkExpressionWatch</returnvalue></link>&#160;*
gtk_expression_bind (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *self</parameter>,
                     <parameter><link linkend="gpointer"><type>gpointer</type></link> target</parameter>,
                     <parameter>const <link linkend="char"><type>char</type></link> *property</parameter>,
                     <parameter><link linkend="gpointer"><type>gpointer</type></link> this_</parameter>);</programlisting>
<para>Bind <parameter>target</parameter>
's property named <parameter>property</parameter>
 to <parameter>self</parameter>
.</para>
<para>The value that <parameter>self</parameter>
 evaluates to is set via <link linkend="g-object-set"><function>g_object_set()</function></link> on
<parameter>target</parameter>
. This is repeated whenever <parameter>self</parameter>
 changes to ensure that
the object's property stays synchronized with <parameter>self</parameter>
.</para>
<para>If <parameter>self</parameter>
's evaluation fails, <parameter>target</parameter>
's <parameter>property</parameter>
 is not updated.
You can ensure that this doesn't happen by using a fallback
expression.</para>
<para>Note that this function takes ownership of <parameter>self</parameter>
. If you want
to keep it around, you should <link linkend="gtk-expression-ref"><function>gtk_expression_ref()</function></link> it beforehand.</para>
<refsect3 id="gtk-expression-bind.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>target</para></entry>
<entry role="parameter_description"><para>the target object to bind to. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>type</acronym> GObject]</emphasis></entry></row>
<row><entry role="parameter_name"><para>property</para></entry>
<entry role="parameter_description"><para>name of the property on <parameter>target</parameter>
to bind to</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>this_</para></entry>
<entry role="parameter_description"><para>the this argument for
the evaluation of <parameter>self</parameter>
. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>type</acronym> GObject][<acronym>nullable</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-expression-bind.returns" role="returns">
<title>Returns</title>
<para>a <link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-expression-watch-ref" role="function">
<title>gtk_expression_watch_ref&#160;()</title>
<indexterm zone="gtk-expression-watch-ref"><primary>gtk_expression_watch_ref</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpressionWatch"><returnvalue>GtkExpressionWatch</returnvalue></link>&#160;*
gtk_expression_watch_ref (<parameter><link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link> *watch</parameter>);</programlisting>
<para>Acquires a reference on the given <link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link>.</para>
<refsect3 id="gtk-expression-watch-ref.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>watch</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-expression-watch-ref.returns" role="returns">
<title>Returns</title>
<para>the <link linkend="GtkExpression"><type>GtkExpression</type></link> with an additional reference. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-expression-watch-unref" role="function">
<title>gtk_expression_watch_unref&#160;()</title>
<indexterm zone="gtk-expression-watch-unref"><primary>gtk_expression_watch_unref</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_expression_watch_unref (<parameter><link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link> *watch</parameter>);</programlisting>
<para>Releases a reference on the given <link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link>.</para>
<para>If the reference was the last, the resources associated to <parameter>self</parameter>
 are
freed.</para>
<refsect3 id="gtk-expression-watch-unref.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>watch</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-expression-watch-evaluate" role="function">
<title>gtk_expression_watch_evaluate&#160;()</title>
<indexterm zone="gtk-expression-watch-evaluate"><primary>gtk_expression_watch_evaluate</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gtk_expression_watch_evaluate (<parameter><link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link> *watch</parameter>,
                               <parameter><link linkend="GValue"><type>GValue</type></link> *value</parameter>);</programlisting>
<para>Evaluates the watched expression and on success stores the result
in <parameter>value</parameter>
.</para>
<para>This is equivalent to calling <link linkend="gtk-expression-evaluate"><function>gtk_expression_evaluate()</function></link> with the
expression and this pointer originally used to create <parameter>watch</parameter>
.</para>
<refsect3 id="gtk-expression-watch-evaluate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>watch</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>an empty <link linkend="GValue"><type>GValue</type></link> to be set</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-expression-watch-evaluate.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the expression could be evaluated and <parameter>value</parameter>
was set</para>
</refsect3></refsect2>
<refsect2 id="gtk-expression-watch-unwatch" role="function">
<title>gtk_expression_watch_unwatch&#160;()</title>
<indexterm zone="gtk-expression-watch-unwatch"><primary>gtk_expression_watch_unwatch</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_expression_watch_unwatch (<parameter><link linkend="GtkExpressionWatch"><type>GtkExpressionWatch</type></link> *watch</parameter>);</programlisting>
<para>Stops watching an expression that was established via <link linkend="gtk-expression-watch"><function>gtk_expression_watch()</function></link>.</para>
<refsect3 id="gtk-expression-watch-unwatch.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>watch</para></entry>
<entry role="parameter_description"><para>watch to release. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-property-expression-new" role="function">
<title>gtk_property_expression_new&#160;()</title>
<indexterm zone="gtk-property-expression-new"><primary>gtk_property_expression_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_property_expression_new (<parameter><link linkend="GType"><type>GType</type></link> this_type</parameter>,
                             <parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *expression</parameter>,
                             <parameter>const <link linkend="char"><type>char</type></link> *property_name</parameter>);</programlisting>
<para>Creates an expression that looks up a property via the
given <parameter>expression</parameter>
 or the <literal>this</literal> argument when <parameter>expression</parameter>

is <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
<para>If the resulting object conforms to <parameter>this_type</parameter>
, its property
named <parameter>property_name</parameter>
 will be queried.
Otherwise, this expression's evaluation will fail.</para>
<para>The given <parameter>this_type</parameter>
 must have a property with <parameter>property_name</parameter>
.</para>
<refsect3 id="gtk-property-expression-new.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>this_type</para></entry>
<entry role="parameter_description"><para>The type to expect for the this type</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>expression</para></entry>
<entry role="parameter_description"><para>Expression to
evaluate to get the object to query or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to
query the <literal>this</literal> object. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer full</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>property_name</para></entry>
<entry role="parameter_description"><para>name of the property</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-property-expression-new.returns" role="returns">
<title>Returns</title>
<para> a new <link linkend="GtkExpression"><type>GtkExpression</type></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-property-expression-new-for-pspec" role="function">
<title>gtk_property_expression_new_for_pspec&#160;()</title>
<indexterm zone="gtk-property-expression-new-for-pspec"><primary>gtk_property_expression_new_for_pspec</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_property_expression_new_for_pspec (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *expression</parameter>,
                                       <parameter><link linkend="GParamSpec"><type>GParamSpec</type></link> *pspec</parameter>);</programlisting>
<para>Creates an expression that looks up a property via the
given <parameter>expression</parameter>
 or the <literal>this</literal> argument when <parameter>expression</parameter>

is <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
<para>If the resulting object conforms to <parameter>this_type</parameter>
, its
property specified by <parameter>pspec</parameter>
 will be queried.
Otherwise, this expression's evaluation will fail.</para>
<refsect3 id="gtk-property-expression-new-for-pspec.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>expression</para></entry>
<entry role="parameter_description"><para>Expression to
evaluate to get the object to query or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to
query the <literal>this</literal> object. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer full</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>pspec</para></entry>
<entry role="parameter_description"><para>the <link linkend="GParamSpec"><type>GParamSpec</type></link> for the property to query</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-property-expression-new-for-pspec.returns" role="returns">
<title>Returns</title>
<para> a new <link linkend="GtkExpression"><type>GtkExpression</type></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-property-expression-get-expression" role="function">
<title>gtk_property_expression_get_expression&#160;()</title>
<indexterm zone="gtk-property-expression-get-expression"><primary>gtk_property_expression_get_expression</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_property_expression_get_expression
                               (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *expression</parameter>);</programlisting>
<para>Gets the expression specifying the object of
a property expression.</para>
<refsect3 id="gtk-property-expression-get-expression.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>expression</para></entry>
<entry role="parameter_description"><para>a property <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>type</acronym> GtkPropertyExpression]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-property-expression-get-expression.returns" role="returns">
<title>Returns</title>
<para>the object expression. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-property-expression-get-pspec" role="function">
<title>gtk_property_expression_get_pspec&#160;()</title>
<indexterm zone="gtk-property-expression-get-pspec"><primary>gtk_property_expression_get_pspec</primary></indexterm>
<programlisting language="C"><link linkend="GParamSpec"><returnvalue>GParamSpec</returnvalue></link>&#160;*
gtk_property_expression_get_pspec (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *expression</parameter>);</programlisting>
<para>Gets the <link linkend="GParamSpec"><type>GParamSpec</type></link> specifying the property of
a property expression.</para>
<refsect3 id="gtk-property-expression-get-pspec.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>expression</para></entry>
<entry role="parameter_description"><para>a property <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>type</acronym> GtkPropertyExpression]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-property-expression-get-pspec.returns" role="returns">
<title>Returns</title>
<para>the <link linkend="GParamSpec"><type>GParamSpec</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-constant-expression-new" role="function">
<title>gtk_constant_expression_new&#160;()</title>
<indexterm zone="gtk-constant-expression-new"><primary>gtk_constant_expression_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_constant_expression_new (<parameter><link linkend="GType"><type>GType</type></link> value_type</parameter>,
                             <parameter>...</parameter>);</programlisting>
<para>Creates a GtkExpression that evaluates to the
object given by the arguments.</para>
<refsect3 id="gtk-constant-expression-new.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>value_type</para></entry>
<entry role="parameter_description"><para>The type of the object</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>...</para></entry>
<entry role="parameter_description"><para>arguments to create the object from</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-constant-expression-new.returns" role="returns">
<title>Returns</title>
<para> a new <link linkend="GtkExpression"><type>GtkExpression</type></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-constant-expression-new-for-value" role="function">
<title>gtk_constant_expression_new_for_value&#160;()</title>
<indexterm zone="gtk-constant-expression-new-for-value"><primary>gtk_constant_expression_new_for_value</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_constant_expression_new_for_value (<parameter>const <link linkend="GValue"><type>GValue</type></link> *value</parameter>);</programlisting>
<para>Creates an expression that always evaluates to the given <parameter>value</parameter>
.</para>
<refsect3 id="gtk-constant-expression-new-for-value.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>a <link linkend="GValue"><type>GValue</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-constant-expression-new-for-value.returns" role="returns">
<title>Returns</title>
<para> a new <link linkend="GtkExpression"><type>GtkExpression</type></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-constant-expression-get-value" role="function">
<title>gtk_constant_expression_get_value&#160;()</title>
<indexterm zone="gtk-constant-expression-get-value"><primary>gtk_constant_expression_get_value</primary></indexterm>
<programlisting language="C">const <link linkend="GValue"><returnvalue>GValue</returnvalue></link>&#160;*
gtk_constant_expression_get_value (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *expression</parameter>);</programlisting>
<para>Gets the value that a constant expression evaluates to.</para>
<refsect3 id="gtk-constant-expression-get-value.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>expression</para></entry>
<entry role="parameter_description"><para>a constant <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>type</acronym> GtkConstantExpression]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-constant-expression-get-value.returns" role="returns">
<title>Returns</title>
<para>the value. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-object-expression-new" role="function">
<title>gtk_object_expression_new&#160;()</title>
<indexterm zone="gtk-object-expression-new"><primary>gtk_object_expression_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_object_expression_new (<parameter><link linkend="GObject"><type>GObject</type></link> *object</parameter>);</programlisting>
<para>Creates an expression evaluating to the given <parameter>object</parameter>
 with a weak reference.
Once the <parameter>object</parameter>
 is disposed, it will fail to evaluate.
This expression is meant to break reference cycles.</para>
<para>If you want to keep a reference to <parameter>object</parameter>
, use <link linkend="gtk-constant-expression-new"><function>gtk_constant_expression_new()</function></link>.</para>
<refsect3 id="gtk-object-expression-new.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>object</para></entry>
<entry role="parameter_description"><para>object to watch. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-object-expression-new.returns" role="returns">
<title>Returns</title>
<para> a new <link linkend="GtkExpression"><type>GtkExpression</type></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-object-expression-get-object" role="function">
<title>gtk_object_expression_get_object&#160;()</title>
<indexterm zone="gtk-object-expression-get-object"><primary>gtk_object_expression_get_object</primary></indexterm>
<programlisting language="C"><link linkend="GObject"><returnvalue>GObject</returnvalue></link>&#160;*
gtk_object_expression_get_object (<parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *expression</parameter>);</programlisting>
<para>Gets the object that the expression evaluates to.</para>
<refsect3 id="gtk-object-expression-get-object.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>expression</para></entry>
<entry role="parameter_description"><para>an object <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>type</acronym> GtkObjectExpression]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-object-expression-get-object.returns" role="returns">
<title>Returns</title>
<para>the object, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>nullable</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-closure-expression-new" role="function">
<title>gtk_closure_expression_new&#160;()</title>
<indexterm zone="gtk-closure-expression-new"><primary>gtk_closure_expression_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_closure_expression_new (<parameter><link linkend="GType"><type>GType</type></link> value_type</parameter>,
                            <parameter><link linkend="GClosure"><type>GClosure</type></link> *closure</parameter>,
                            <parameter><link linkend="guint"><type>guint</type></link> n_params</parameter>,
                            <parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> **params</parameter>);</programlisting>
<para>Creates a GtkExpression that calls <parameter>closure</parameter>
 when it is evaluated.
<parameter>closure</parameter>
 is called with the <parameter>this</parameter>
 object and the results of evaluating
the <parameter>params</parameter>
 expressions.</para>
<refsect3 id="gtk-closure-expression-new.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>value_type</para></entry>
<entry role="parameter_description"><para>the type of the value that this expression evaluates to</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>closure</para></entry>
<entry role="parameter_description"><para>closure to call when evaluating this expression. If closure is floating, it is adopted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>n_params</para></entry>
<entry role="parameter_description"><para>the number of params needed for evaluating <parameter>closure</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>params</para></entry>
<entry role="parameter_description"><para>expressions for each parameter. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>array</acronym> length=n_params][<acronym>transfer full</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-closure-expression-new.returns" role="returns">
<title>Returns</title>
<para> a new <link linkend="GtkExpression"><type>GtkExpression</type></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-cclosure-expression-new" role="function">
<title>gtk_cclosure_expression_new&#160;()</title>
<indexterm zone="gtk-cclosure-expression-new"><primary>gtk_cclosure_expression_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_cclosure_expression_new (<parameter><link linkend="GType"><type>GType</type></link> value_type</parameter>,
                             <parameter><link linkend="GClosureMarshal"><type>GClosureMarshal</type></link> marshal</parameter>,
                             <parameter><link linkend="guint"><type>guint</type></link> n_params</parameter>,
                             <parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> **params</parameter>,
                             <parameter><link linkend="GCallback"><type>GCallback</type></link> callback_func</parameter>,
                             <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>,
                             <parameter><link linkend="GClosureNotify"><type>GClosureNotify</type></link> user_destroy</parameter>);</programlisting>
<para>This function is a variant of <link linkend="gtk-closure-expression-new"><function>gtk_closure_expression_new()</function></link> that
creates a <link linkend="GClosure"><type>GClosure</type></link> by calling <link linkend="g-cclosure-new"><function>g_cclosure_new()</function></link> with the given
<parameter>callback_func</parameter>
, <parameter>user_data</parameter>
 and <parameter>user_destroy</parameter>
.</para>
<refsect3 id="gtk-cclosure-expression-new.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>value_type</para></entry>
<entry role="parameter_description"><para>the type of the value that this expression evaluates to</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>marshal</para></entry>
<entry role="parameter_description"><para>marshaller used for creating a closure. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>scope call</acronym>][<acronym>nullable</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>n_params</para></entry>
<entry role="parameter_description"><para>the number of params needed for evaluating <parameter>closure</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>params</para></entry>
<entry role="parameter_description"><para>expressions for each parameter. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> length=n_params][<acronym>transfer full</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>callback_func</para></entry>
<entry role="parameter_description"><para>callback used for creating a closure. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>scope notified</acronym>][<acronym>closure</acronym> user_data][<acronym>destroy</acronym> user_destroy]</emphasis></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data used for creating a closure. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>user_destroy</para></entry>
<entry role="parameter_description"><para>destroy notify for <parameter>user_data</parameter>
. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-cclosure-expression-new.returns" role="returns">
<title>Returns</title>
<para> a new <link linkend="GtkExpression"><type>GtkExpression</type></link></para>
</refsect3></refsect2>
<refsect2 id="GTK-VALUE-HOLDS-EXPRESSION:CAPS" role="macro">
<title>GTK_VALUE_HOLDS_EXPRESSION()</title>
<indexterm zone="GTK-VALUE-HOLDS-EXPRESSION:CAPS"><primary>GTK_VALUE_HOLDS_EXPRESSION</primary></indexterm>
<programlisting language="C">#define GTK_VALUE_HOLDS_EXPRESSION(value)       (G_VALUE_HOLDS ((value), GTK_TYPE_EXPRESSION))
</programlisting>
<para>Evaluates to <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>value</parameter>
 was initialized with <link linkend="GTK-TYPE-EXPRESSION:CAPS"><literal>GTK_TYPE_EXPRESSION</literal></link>.</para>
<refsect3 id="GTK-VALUE-HOLDS-EXPRESSION.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>a <link linkend="GValue"><type>GValue</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-value-set-expression" role="function">
<title>gtk_value_set_expression&#160;()</title>
<indexterm zone="gtk-value-set-expression"><primary>gtk_value_set_expression</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_value_set_expression (<parameter><link linkend="GValue"><type>GValue</type></link> *value</parameter>,
                          <parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *expression</parameter>);</programlisting>
<para>Stores the given <link linkend="GtkExpression"><type>GtkExpression</type></link> inside <parameter>value</parameter>
.</para>
<para>The <link linkend="GValue"><type>GValue</type></link> will acquire a reference to the <parameter>expression</parameter>
.</para>
<refsect3 id="gtk-value-set-expression.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>a <link linkend="GValue"><type>GValue</type></link> initialized with type <link linkend="GTK-TYPE-EXPRESSION:CAPS"><literal>GTK_TYPE_EXPRESSION</literal></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>expression</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpression"><type>GtkExpression</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-value-take-expression" role="function">
<title>gtk_value_take_expression&#160;()</title>
<indexterm zone="gtk-value-take-expression"><primary>gtk_value_take_expression</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_value_take_expression (<parameter><link linkend="GValue"><type>GValue</type></link> *value</parameter>,
                           <parameter><link linkend="GtkExpression"><type>GtkExpression</type></link> *expression</parameter>);</programlisting>
<para>Stores the given <link linkend="GtkExpression"><type>GtkExpression</type></link> inside <parameter>value</parameter>
.</para>
<para>This function transfers the ownership of the <parameter>expression</parameter>
 to the <link linkend="GValue"><type>GValue</type></link>.</para>
<refsect3 id="gtk-value-take-expression.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>a <link linkend="GValue"><type>GValue</type></link> initialized with type <link linkend="GTK-TYPE-EXPRESSION:CAPS"><literal>GTK_TYPE_EXPRESSION</literal></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>expression</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer full</acronym>][<acronym>nullable</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-value-get-expression" role="function">
<title>gtk_value_get_expression&#160;()</title>
<indexterm zone="gtk-value-get-expression"><primary>gtk_value_get_expression</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_value_get_expression (<parameter>const <link linkend="GValue"><type>GValue</type></link> *value</parameter>);</programlisting>
<para>Retrieves the <link linkend="GtkExpression"><type>GtkExpression</type></link> stored inside the given <parameter>value</parameter>
.</para>
<refsect3 id="gtk-value-get-expression.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>a <link linkend="GValue"><type>GValue</type></link> initialized with type <link linkend="GTK-TYPE-EXPRESSION:CAPS"><literal>GTK_TYPE_EXPRESSION</literal></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-value-get-expression.returns" role="returns">
<title>Returns</title>
<para>a <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>nullable</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-value-dup-expression" role="function">
<title>gtk_value_dup_expression&#160;()</title>
<indexterm zone="gtk-value-dup-expression"><primary>gtk_value_dup_expression</primary></indexterm>
<programlisting language="C"><link linkend="GtkExpression"><returnvalue>GtkExpression</returnvalue></link>&#160;*
gtk_value_dup_expression (<parameter>const <link linkend="GValue"><type>GValue</type></link> *value</parameter>);</programlisting>
<para>Retrieves the <link linkend="GtkExpression"><type>GtkExpression</type></link> stored inside the given <parameter>value</parameter>
, and acquires
a reference to it.</para>
<refsect3 id="gtk-value-dup-expression.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>value</para></entry>
<entry role="parameter_description"><para>a <link linkend="GValue"><type>GValue</type></link> initialized with type <link linkend="GTK-TYPE-EXPRESSION:CAPS"><literal>GTK_TYPE_EXPRESSION</literal></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-value-dup-expression.returns" role="returns">
<title>Returns</title>
<para>a <link linkend="GtkExpression"><type>GtkExpression</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>][<acronym>nullable</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-param-spec-expression" role="function">
<title>gtk_param_spec_expression&#160;()</title>
<indexterm zone="gtk-param-spec-expression"><primary>gtk_param_spec_expression</primary></indexterm>
<programlisting language="C"><link linkend="GParamSpec"><returnvalue>GParamSpec</returnvalue></link>&#160;*
gtk_param_spec_expression (<parameter>const <link linkend="char"><type>char</type></link> *name</parameter>,
                           <parameter>const <link linkend="char"><type>char</type></link> *nick</parameter>,
                           <parameter>const <link linkend="char"><type>char</type></link> *blurb</parameter>,
                           <parameter><link linkend="GParamFlags"><type>GParamFlags</type></link> flags</parameter>);</programlisting>
<para>Creates a new <link linkend="GParamSpec"><type>GParamSpec</type></link> instance for a property holding a <link linkend="GtkExpression"><type>GtkExpression</type></link>.</para>
<para>See <link linkend="g-param-spec-internal"><function>g_param_spec_internal()</function></link> for details on the property strings.</para>
<refsect3 id="gtk-param-spec-expression.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>canonical name of the property</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>nick</para></entry>
<entry role="parameter_description"><para>a user-readable name for the property</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>blurb</para></entry>
<entry role="parameter_description"><para>a user-readable description of the property</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>flags</para></entry>
<entry role="parameter_description"><para>flags for the property</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-param-spec-expression.returns" role="returns">
<title>Returns</title>
<para>a newly created property specification. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>

</refsect1>
<refsect1 id="GtkExpression.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="GtkExpression-struct" role="struct">
<title>GtkExpression</title>
<indexterm zone="GtkExpression-struct"><primary>GtkExpression</primary></indexterm>
<programlisting language="C">typedef struct _GtkExpression GtkExpression;</programlisting>
<para>The <literal>GtkExpression</literal> structure contains only private data.</para>
</refsect2>
<refsect2 id="GtkExpressionWatch" role="struct">
<title>GtkExpressionWatch</title>
<indexterm zone="GtkExpressionWatch"><primary>GtkExpressionWatch</primary></indexterm>
<programlisting language="C">typedef struct _GtkExpressionWatch GtkExpressionWatch;</programlisting>
</refsect2>
<refsect2 id="GtkParamSpecExpression" role="struct">
<title>GtkParamSpecExpression</title>
<indexterm zone="GtkParamSpecExpression"><primary>GtkParamSpecExpression</primary></indexterm>
<programlisting language="C">typedef struct {
} GtkParamSpecExpression;
</programlisting>
<para>A <link linkend="GParamSpec"><type>GParamSpec</type></link> for properties holding a <link linkend="GtkExpression"><type>GtkExpression</type></link>.</para>
</refsect2>

</refsect1>

</refentry>
