<refentry id="gtk-Types">
<refmeta>
<refentrytitle>Types</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GTK Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>Types</refname><refpurpose>Handle run-time type creation.</refpurpose>
</refnamediv>

<refsynopsisdiv><title>Synopsis</title>
<synopsis>

#include &lt;gtk/gtk.h&gt;


typedef     <link linkend="GtkType">GtkType</link>;
enum        <link linkend="GtkFundamentalType">GtkFundamentalType</link>;
#define     <link linkend="GTK-CLASS-NAME-CAPS">GTK_CLASS_NAME</link>                  (class)
#define     <link linkend="GTK-CLASS-TYPE-CAPS">GTK_CLASS_TYPE</link>                  (class)
#define     <link linkend="GTK-TYPE-IS-OBJECT-CAPS">GTK_TYPE_IS_OBJECT</link>              (type)
#define     <link linkend="GTK-TYPE-FUNDAMENTAL-LAST-CAPS">GTK_TYPE_FUNDAMENTAL_LAST</link>
#define     <link linkend="GTK-TYPE-FUNDAMENTAL-MAX-CAPS">GTK_TYPE_FUNDAMENTAL_MAX</link>
#define     <link linkend="GTK-STRUCT-OFFSET-CAPS">GTK_STRUCT_OFFSET</link>
#define     <link linkend="GTK-CHECK-CAST-CAPS">GTK_CHECK_CAST</link>
#define     <link linkend="GTK-CHECK-CLASS-CAST-CAPS">GTK_CHECK_CLASS_CAST</link>
#define     <link linkend="GTK-CHECK-TYPE-CAPS">GTK_CHECK_TYPE</link>
#define     <link linkend="GTK-CHECK-CLASS-TYPE-CAPS">GTK_CHECK_CLASS_TYPE</link>
#define     <link linkend="GTK-CHECK-GET-CLASS-CAPS">GTK_CHECK_GET_CLASS</link>
#define     <link linkend="GTK-FUNDAMENTAL-TYPE-CAPS">GTK_FUNDAMENTAL_TYPE</link>
#define     <link linkend="GTK-SIGNAL-FUNC-CAPS">GTK_SIGNAL_FUNC</link>                 (f)
typedef     <link linkend="GtkClassInitFunc">GtkClassInitFunc</link>;
typedef     <link linkend="GtkObjectInitFunc">GtkObjectInitFunc</link>;
void        (<link linkend="GtkSignalFunc">*GtkSignalFunc</link>)                (void);
<link linkend="gboolean">gboolean</link>    (<link linkend="GtkFunction">*GtkFunction</link>)                  (<link linkend="gpointer">gpointer</link> data);
void        (<link linkend="GtkDestroyNotify">*GtkDestroyNotify</link>)             (<link linkend="gpointer">gpointer</link> data);
void        (<link linkend="GtkCallbackMarshal">*GtkCallbackMarshal</link>)           (<link linkend="GtkObject">GtkObject</link> *object,
                                             <link linkend="gpointer">gpointer</link> data,
                                             <link linkend="guint">guint</link> n_args,
                                             <link linkend="GtkArg">GtkArg</link> *args);
typedef     <link linkend="GtkSignalMarshaller">GtkSignalMarshaller</link>;
typedef     <link linkend="GtkTypeObject">GtkTypeObject</link>;
struct      <link linkend="GtkArg">GtkArg</link>;
#define     <link linkend="GTK-VALUE-CHAR-CAPS">GTK_VALUE_CHAR</link>                  (a)
#define     <link linkend="GTK-VALUE-UCHAR-CAPS">GTK_VALUE_UCHAR</link>                 (a)
#define     <link linkend="GTK-VALUE-BOOL-CAPS">GTK_VALUE_BOOL</link>                  (a)
#define     <link linkend="GTK-VALUE-INT-CAPS">GTK_VALUE_INT</link>                   (a)
#define     <link linkend="GTK-VALUE-UINT-CAPS">GTK_VALUE_UINT</link>                  (a)
#define     <link linkend="GTK-VALUE-LONG-CAPS">GTK_VALUE_LONG</link>                  (a)
#define     <link linkend="GTK-VALUE-ULONG-CAPS">GTK_VALUE_ULONG</link>                 (a)
#define     <link linkend="GTK-VALUE-FLOAT-CAPS">GTK_VALUE_FLOAT</link>                 (a)
#define     <link linkend="GTK-VALUE-DOUBLE-CAPS">GTK_VALUE_DOUBLE</link>                (a)
#define     <link linkend="GTK-VALUE-STRING-CAPS">GTK_VALUE_STRING</link>                (a)
#define     <link linkend="GTK-VALUE-ENUM-CAPS">GTK_VALUE_ENUM</link>                  (a)
#define     <link linkend="GTK-VALUE-FLAGS-CAPS">GTK_VALUE_FLAGS</link>                 (a)
#define     <link linkend="GTK-VALUE-BOXED-CAPS">GTK_VALUE_BOXED</link>                 (a)
#define     <link linkend="GTK-VALUE-POINTER-CAPS">GTK_VALUE_POINTER</link>               (a)
#define     <link linkend="GTK-VALUE-OBJECT-CAPS">GTK_VALUE_OBJECT</link>                (a)
#define     <link linkend="GTK-VALUE-SIGNAL-CAPS">GTK_VALUE_SIGNAL</link>                (a)
#define     <link linkend="GTK-RETLOC-CHAR-CAPS">GTK_RETLOC_CHAR</link>                 (a)
#define     <link linkend="GTK-RETLOC-UCHAR-CAPS">GTK_RETLOC_UCHAR</link>                (a)
#define     <link linkend="GTK-RETLOC-BOOL-CAPS">GTK_RETLOC_BOOL</link>                 (a)
#define     <link linkend="GTK-RETLOC-INT-CAPS">GTK_RETLOC_INT</link>                  (a)
#define     <link linkend="GTK-RETLOC-UINT-CAPS">GTK_RETLOC_UINT</link>                 (a)
#define     <link linkend="GTK-RETLOC-LONG-CAPS">GTK_RETLOC_LONG</link>                 (a)
#define     <link linkend="GTK-RETLOC-ULONG-CAPS">GTK_RETLOC_ULONG</link>                (a)
#define     <link linkend="GTK-RETLOC-FLOAT-CAPS">GTK_RETLOC_FLOAT</link>                (a)
#define     <link linkend="GTK-RETLOC-DOUBLE-CAPS">GTK_RETLOC_DOUBLE</link>               (a)
#define     <link linkend="GTK-RETLOC-STRING-CAPS">GTK_RETLOC_STRING</link>               (a)
#define     <link linkend="GTK-RETLOC-ENUM-CAPS">GTK_RETLOC_ENUM</link>                 (a)
#define     <link linkend="GTK-RETLOC-FLAGS-CAPS">GTK_RETLOC_FLAGS</link>                (a)
#define     <link linkend="GTK-RETLOC-BOXED-CAPS">GTK_RETLOC_BOXED</link>                (a)
#define     <link linkend="GTK-RETLOC-POINTER-CAPS">GTK_RETLOC_POINTER</link>              (a)
#define     <link linkend="GTK-RETLOC-OBJECT-CAPS">GTK_RETLOC_OBJECT</link>               (a)
struct      <link linkend="GtkTypeInfo">GtkTypeInfo</link>;
typedef     <link linkend="GtkTypeClass">GtkTypeClass</link>;
typedef     <link linkend="GtkEnumValue">GtkEnumValue</link>;
typedef     <link linkend="GtkFlagValue">GtkFlagValue</link>;
void        <link linkend="gtk-type-init">gtk_type_init</link>                   (<link linkend="GTypeDebugFlags">GTypeDebugFlags</link> debug_flags);
<link linkend="GtkType">GtkType</link>     <link linkend="gtk-type-unique">gtk_type_unique</link>                 (<link linkend="GtkType">GtkType</link> parent_type,
                                             const <link linkend="GtkTypeInfo">GtkTypeInfo</link> *gtkinfo);
#define     <link linkend="gtk-type-name">gtk_type_name</link>                   (type)
#define     <link linkend="gtk-type-from-name">gtk_type_from_name</link>              (name)
#define     <link linkend="gtk-type-parent">gtk_type_parent</link>                 (type)
<link linkend="gpointer">gpointer</link>    <link linkend="gtk-type-class">gtk_type_class</link>                  (<link linkend="GtkType">GtkType</link> type);
<link linkend="gpointer">gpointer</link>    <link linkend="gtk-type-new">gtk_type_new</link>                    (<link linkend="GtkType">GtkType</link> type);
#define     <link linkend="gtk-type-is-a">gtk_type_is_a</link>                   (type, is_a_type)
<link linkend="GtkEnumValue">GtkEnumValue</link>* <link linkend="gtk-type-enum-get-values">gtk_type_enum_get_values</link>      (<link linkend="GtkType">GtkType</link> enum_type);
<link linkend="GtkFlagValue">GtkFlagValue</link>* <link linkend="gtk-type-flags-get-values">gtk_type_flags_get_values</link>     (<link linkend="GtkType">GtkType</link> flags_type);
<link linkend="GtkEnumValue">GtkEnumValue</link>* <link linkend="gtk-type-enum-find-value">gtk_type_enum_find_value</link>      (<link linkend="GtkType">GtkType</link> enum_type,
                                             const <link linkend="gchar">gchar</link> *value_name);
<link linkend="GtkFlagValue">GtkFlagValue</link>* <link linkend="gtk-type-flags-find-value">gtk_type_flags_find_value</link>     (<link linkend="GtkType">GtkType</link> flags_type,
                                             const <link linkend="gchar">gchar</link> *value_name);

</synopsis>
</refsynopsisdiv>





<refsect1>
<title>Description</title>
<para>
The GTK+ type system is extensible.  Because of that, types have to be
managed at runtime.
</para>
</refsect1>

<refsect1>
<title>Details</title>
<refsect2>
<title><anchor id="GtkType">GtkType</title>
<programlisting>typedef GType			GtkType;
</programlisting>
<para>
<link linkend="GtkType">GtkType</link> is unique integer identifying the type.  The guts of the
information about the type is held in a private struct named
<link linkend="GtkTypeNode">GtkTypeNode</link>.
</para></refsect2>
<refsect2>
<title><anchor id="GtkFundamentalType">enum GtkFundamentalType</title>
<programlisting>typedef enum	/*&lt; skip &gt;*/
{
  GTK_TYPE_INVALID	= G_TYPE_INVALID,
  GTK_TYPE_NONE		= G_TYPE_NONE,
  GTK_TYPE_ENUM		= G_TYPE_ENUM,
  GTK_TYPE_FLAGS	= G_TYPE_FLAGS,

  /* GtkArg types */
  GTK_TYPE_CHAR		= G_TYPE_CHAR,
  GTK_TYPE_UCHAR	= G_TYPE_UCHAR,
  GTK_TYPE_BOOL		= G_TYPE_BOOLEAN,
  GTK_TYPE_INT		= G_TYPE_INT,
  GTK_TYPE_UINT		= G_TYPE_UINT,
  GTK_TYPE_LONG		= G_TYPE_LONG,
  GTK_TYPE_ULONG	= G_TYPE_ULONG,
  GTK_TYPE_FLOAT	= G_TYPE_FLOAT,
  GTK_TYPE_DOUBLE	= G_TYPE_DOUBLE,
  GTK_TYPE_STRING	= G_TYPE_STRING,
  GTK_TYPE_BOXED	= G_TYPE_BOXED,
  GTK_TYPE_POINTER	= G_TYPE_POINTER
} GtkFundamentalType;
</programlisting>
<warning>
<para>
<literal>GtkFundamentalType</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
<link linkend="GtkFundamentalType">GtkFundamentalType</link> is an enumerated type which lists all the possible
fundamental types (e.g. <type>char</type>, <type>uchar</type>, <type>int</type>,
<type>long</type>, <type>float</type>, etc).
</para></refsect2>
<refsect2>
<title><anchor id="GTK-CLASS-NAME-CAPS">GTK_CLASS_NAME()</title>
<programlisting>#define GTK_CLASS_NAME(class)		(g_type_name (G_TYPE_FROM_CLASS (class)))
</programlisting>
<warning>
<para>
<literal>GTK_CLASS_NAME</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Returns the type name of <parameter>class</parameter>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>class</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkTypeClass">GtkTypeClass</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-CLASS-TYPE-CAPS">GTK_CLASS_TYPE()</title>
<programlisting>#define GTK_CLASS_TYPE(class)		(G_TYPE_FROM_CLASS (class))
</programlisting>
<warning>
<para>
<literal>GTK_CLASS_TYPE</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Returns the type of <parameter>class</parameter>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>class</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkTypeClass">GtkTypeClass</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-TYPE-IS-OBJECT-CAPS">GTK_TYPE_IS_OBJECT()</title>
<programlisting>#define GTK_TYPE_IS_OBJECT(type)	(g_type_is_a ((type), GTK_TYPE_OBJECT))
</programlisting>
<warning>
<para>
<literal>GTK_TYPE_IS_OBJECT</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Returns <literal>TRUE</literal> if <parameter>type</parameter> is a <literal>GTK_TYPE_OBJECT</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-TYPE-FUNDAMENTAL-LAST-CAPS">GTK_TYPE_FUNDAMENTAL_LAST</title>
<programlisting>#define	GTK_TYPE_FUNDAMENTAL_LAST        (G_TYPE_LAST_RESERVED_FUNDAMENTAL - 1)
</programlisting>
<warning>
<para>
<literal>GTK_TYPE_FUNDAMENTAL_LAST</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
The highest-numbered structured or flat enumerated type value.
</para></refsect2>
<refsect2>
<title><anchor id="GTK-TYPE-FUNDAMENTAL-MAX-CAPS">GTK_TYPE_FUNDAMENTAL_MAX</title>
<programlisting>#define	GTK_TYPE_FUNDAMENTAL_MAX         (G_TYPE_FUNDAMENTAL_MAX)
</programlisting>
<warning>
<para>
<literal>GTK_TYPE_FUNDAMENTAL_MAX</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
The maximum fundamental enumerated type value.
</para></refsect2>
<refsect2>
<title><anchor id="GTK-STRUCT-OFFSET-CAPS">GTK_STRUCT_OFFSET</title>
<programlisting>#define GTK_STRUCT_OFFSET	G_STRUCT_OFFSET
</programlisting>
<warning>
<para>
<literal>GTK_STRUCT_OFFSET</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Use in place of <function><link linkend="offsetof">offsetof</link>()</function>, which is used if it exists.
</para></refsect2>
<refsect2>
<title><anchor id="GTK-CHECK-CAST-CAPS">GTK_CHECK_CAST</title>
<programlisting>#define	GTK_CHECK_CAST		G_TYPE_CHECK_INSTANCE_CAST
</programlisting>
<para>
Casts the object in <parameter>tobj</parameter> into <parameter>cast</parameter>.  If <literal>G_DISABLE_CAST_CHECKS</literal> is
defined, just cast it.  Otherwise, check to see if we can cast <parameter>tobj</parameter>
into a <parameter>cast</parameter>.
</para></refsect2>
<refsect2>
<title><anchor id="GTK-CHECK-CLASS-CAST-CAPS">GTK_CHECK_CLASS_CAST</title>
<programlisting>#define	GTK_CHECK_CLASS_CAST	G_TYPE_CHECK_CLASS_CAST
</programlisting>
<para>
Casts the object in <parameter>tobj</parameter> into <parameter>cast</parameter>.  If <literal>G_DISABLE_CAST_CHECKS</literal> is
defined, just cast it.  Otherwise, check to see if we can cast <parameter>tobj</parameter>
into a <parameter>cast</parameter>.
</para></refsect2>
<refsect2>
<title><anchor id="GTK-CHECK-TYPE-CAPS">GTK_CHECK_TYPE</title>
<programlisting>#define	GTK_CHECK_TYPE		G_TYPE_CHECK_INSTANCE_TYPE
</programlisting>
<para>
Determines whether <parameter>type_object</parameter> is a type of <parameter>otype</parameter>.
</para></refsect2>
<refsect2>
<title><anchor id="GTK-CHECK-CLASS-TYPE-CAPS">GTK_CHECK_CLASS_TYPE</title>
<programlisting>#define	GTK_CHECK_CLASS_TYPE	G_TYPE_CHECK_CLASS_TYPE
</programlisting>
<para>
Determines whether <parameter>type_class</parameter> is a type of <parameter>otype</parameter>.
</para></refsect2>
<refsect2>
<title><anchor id="GTK-CHECK-GET-CLASS-CAPS">GTK_CHECK_GET_CLASS</title>
<programlisting>#define GTK_CHECK_GET_CLASS	G_TYPE_INSTANCE_GET_CLASS
</programlisting>
<para>
Gets the class of <parameter>tobj</parameter>.
</para></refsect2>
<refsect2>
<title><anchor id="GTK-FUNDAMENTAL-TYPE-CAPS">GTK_FUNDAMENTAL_TYPE</title>
<programlisting>#define	GTK_FUNDAMENTAL_TYPE	G_TYPE_FUNDAMENTAL
</programlisting>
<warning>
<para>
<literal>GTK_FUNDAMENTAL_TYPE</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Converts a GTK+ type into a fundamental type.
</para></refsect2>
<refsect2>
<title><anchor id="GTK-SIGNAL-FUNC-CAPS">GTK_SIGNAL_FUNC()</title>
<programlisting>#define GTK_SIGNAL_FUNC(f)	    ((GtkSignalFunc) (f))
</programlisting>
<para>
Just a macroized cast into a <link linkend="GtkSignalFunc">GtkSignalFunc</link>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>f</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GtkClassInitFunc">GtkClassInitFunc</title>
<programlisting>typedef GBaseInitFunc		GtkClassInitFunc;
</programlisting>
<warning>
<para>
<literal>GtkClassInitFunc</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Defines a function pointer.
</para></refsect2>
<refsect2>
<title><anchor id="GtkObjectInitFunc">GtkObjectInitFunc</title>
<programlisting>typedef GInstanceInitFunc	GtkObjectInitFunc;
</programlisting>
<warning>
<para>
<literal>GtkObjectInitFunc</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Defines a function pointer.
</para></refsect2>
<refsect2>
<title><anchor id="GtkSignalFunc">GtkSignalFunc ()</title>
<programlisting>void        (*GtkSignalFunc)                (void);</programlisting>
<para>
Defines a function pointer.
</para></refsect2>
<refsect2>
<title><anchor id="GtkFunction">GtkFunction ()</title>
<programlisting><link linkend="gboolean">gboolean</link>    (*GtkFunction)                  (<link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
Defines a function pointer.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry><link linkend="gpointer">gpointer</link>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry><link linkend="gint">gint</link>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GtkDestroyNotify">GtkDestroyNotify ()</title>
<programlisting>void        (*GtkDestroyNotify)             (<link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
Defines a function pointer.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry><link linkend="gpointer">gpointer</link>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GtkCallbackMarshal">GtkCallbackMarshal ()</title>
<programlisting>void        (*GtkCallbackMarshal)           (<link linkend="GtkObject">GtkObject</link> *object,
                                             <link linkend="gpointer">gpointer</link> data,
                                             <link linkend="guint">guint</link> n_args,
                                             <link linkend="GtkArg">GtkArg</link> *args);</programlisting>
<para>
Defines a function pointer.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>object</parameter>&nbsp;:</entry>
<entry><link linkend="GtkObject">GtkObject</link>*
</entry></row>
<row><entry align="right"><parameter>data</parameter>&nbsp;:</entry>
<entry><link linkend="gpointer">gpointer</link>
</entry></row>
<row><entry align="right"><parameter>n_args</parameter>&nbsp;:</entry>
<entry><link linkend="guint">guint</link>
</entry></row>
<row><entry align="right"><parameter>args</parameter>&nbsp;:</entry>
<entry><link linkend="GtkArg">GtkArg</link>*


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GtkSignalMarshaller">GtkSignalMarshaller</title>
<programlisting>typedef GSignalCMarshaller          GtkSignalMarshaller;
</programlisting>
<warning>
<para>
<literal>GtkSignalMarshaller</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Defines a function pointer.
</para></refsect2>
<refsect2>
<title><anchor id="GtkTypeObject">GtkTypeObject</title>
<programlisting>typedef GTypeInstance		GtkTypeObject;
</programlisting>
<warning>
<para>
<literal>GtkTypeObject</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
A <link linkend="GtkTypeObject">GtkTypeObject</link> defines the minimum structure requirements
for type instances. Type instances returned from <link linkend="gtk-type-new">gtk_type_new</link>()
and initialized through a <link linkend="GtkObjectInitFunc">GtkObjectInitFunc</link> need to directly inherit
from this structure or at least copy its fields one by one.
</para></refsect2>
<refsect2>
<title><anchor id="GtkArg">struct GtkArg</title>
<programlisting>struct GtkArg
{
  GtkType type;
  gchar *name;
  
  /* this union only defines the required storage types for
   * the possibile values, thus there is no gint enum_data field,
   * because that would just be a mere alias for gint int_data.
   * use the GTK_VALUE_*() and GTK_RETLOC_*() macros to access
   * the discrete memebers.
   */
  union {
    /* flat values */
    gchar char_data;
    guchar uchar_data;
    gboolean bool_data;
    gint int_data;
    guint uint_data;
    glong long_data;
    gulong ulong_data;
    gfloat float_data;
    gdouble double_data;
    gchar *string_data;
    GtkObject *object_data;
    gpointer pointer_data;
    
    /* structured values */
    struct {
      GtkSignalFunc f;
      gpointer d;
    } signal_data;
  } d;
};
</programlisting>
<warning>
<para>
<literal>GtkArg</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
This is a structure that we use to pass in typed values (and names).
</para></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-CHAR-CAPS">GTK_VALUE_CHAR()</title>
<programlisting>#define GTK_VALUE_CHAR(a)	((a).d.char_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_CHAR</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_CHAR</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-UCHAR-CAPS">GTK_VALUE_UCHAR()</title>
<programlisting>#define GTK_VALUE_UCHAR(a)	((a).d.uchar_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_UCHAR</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_UCHAR</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-BOOL-CAPS">GTK_VALUE_BOOL()</title>
<programlisting>#define GTK_VALUE_BOOL(a)	((a).d.bool_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_BOOL</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_BOOL</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-INT-CAPS">GTK_VALUE_INT()</title>
<programlisting>#define GTK_VALUE_INT(a)	((a).d.int_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_INT</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_INT</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-UINT-CAPS">GTK_VALUE_UINT()</title>
<programlisting>#define GTK_VALUE_UINT(a)	((a).d.uint_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_UINT</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_UINT</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-LONG-CAPS">GTK_VALUE_LONG()</title>
<programlisting>#define GTK_VALUE_LONG(a)	((a).d.long_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_LONG</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_LONG</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-ULONG-CAPS">GTK_VALUE_ULONG()</title>
<programlisting>#define GTK_VALUE_ULONG(a)	((a).d.ulong_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_ULONG</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_ULONG</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-FLOAT-CAPS">GTK_VALUE_FLOAT()</title>
<programlisting>#define GTK_VALUE_FLOAT(a)	((a).d.float_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_FLOAT</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_FLOAT</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-DOUBLE-CAPS">GTK_VALUE_DOUBLE()</title>
<programlisting>#define GTK_VALUE_DOUBLE(a)	((a).d.double_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_DOUBLE</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_DOUBLE</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-STRING-CAPS">GTK_VALUE_STRING()</title>
<programlisting>#define GTK_VALUE_STRING(a)	((a).d.string_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_STRING</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_STRING</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-ENUM-CAPS">GTK_VALUE_ENUM()</title>
<programlisting>#define GTK_VALUE_ENUM(a)	((a).d.int_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_ENUM</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_ENUM</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-FLAGS-CAPS">GTK_VALUE_FLAGS()</title>
<programlisting>#define GTK_VALUE_FLAGS(a)	((a).d.uint_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_FLAGS</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_FLAGS</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-BOXED-CAPS">GTK_VALUE_BOXED()</title>
<programlisting>#define GTK_VALUE_BOXED(a)	((a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_BOXED</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_BOXED</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-POINTER-CAPS">GTK_VALUE_POINTER()</title>
<programlisting>#define GTK_VALUE_POINTER(a)	((a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_POINTER</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_POINTER</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-OBJECT-CAPS">GTK_VALUE_OBJECT()</title>
<programlisting>#define GTK_VALUE_OBJECT(a)	((a).d.object_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_OBJECT</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_OBJECT</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-VALUE-SIGNAL-CAPS">GTK_VALUE_SIGNAL()</title>
<programlisting>#define GTK_VALUE_SIGNAL(a)	((a).d.signal_data)
</programlisting>
<warning>
<para>
<literal>GTK_VALUE_SIGNAL</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the value of a <link linkend="GtkArg">GtkArg</link> whose <link linkend="GtkType">GtkType</link> is <literal>GTK_TYPE_SIGNAL</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-CHAR-CAPS">GTK_RETLOC_CHAR()</title>
<programlisting>#define GTK_RETLOC_CHAR(a)	((gchar*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_CHAR</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_CHAR</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-UCHAR-CAPS">GTK_RETLOC_UCHAR()</title>
<programlisting>#define GTK_RETLOC_UCHAR(a)	((guchar*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_UCHAR</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_UCHAR</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-BOOL-CAPS">GTK_RETLOC_BOOL()</title>
<programlisting>#define GTK_RETLOC_BOOL(a)	((gboolean*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_BOOL</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_BOOL</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-INT-CAPS">GTK_RETLOC_INT()</title>
<programlisting>#define GTK_RETLOC_INT(a)	((gint*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_INT</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_INT</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-UINT-CAPS">GTK_RETLOC_UINT()</title>
<programlisting>#define GTK_RETLOC_UINT(a)	((guint*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_UINT</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_UINT</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-LONG-CAPS">GTK_RETLOC_LONG()</title>
<programlisting>#define GTK_RETLOC_LONG(a)	((glong*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_LONG</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_LONG</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-ULONG-CAPS">GTK_RETLOC_ULONG()</title>
<programlisting>#define GTK_RETLOC_ULONG(a)	((gulong*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_ULONG</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_ULONG</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-FLOAT-CAPS">GTK_RETLOC_FLOAT()</title>
<programlisting>#define GTK_RETLOC_FLOAT(a)	((gfloat*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_FLOAT</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_FLOAT</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-DOUBLE-CAPS">GTK_RETLOC_DOUBLE()</title>
<programlisting>#define GTK_RETLOC_DOUBLE(a)	((gdouble*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_DOUBLE</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_DOUBLE</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-STRING-CAPS">GTK_RETLOC_STRING()</title>
<programlisting>#define GTK_RETLOC_STRING(a)	((gchar**)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_STRING</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_STRING</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-ENUM-CAPS">GTK_RETLOC_ENUM()</title>
<programlisting>#define GTK_RETLOC_ENUM(a)	((gint*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_ENUM</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_ENUM</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-FLAGS-CAPS">GTK_RETLOC_FLAGS()</title>
<programlisting>#define GTK_RETLOC_FLAGS(a)	((guint*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_FLAGS</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_FLAGS</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-BOXED-CAPS">GTK_RETLOC_BOXED()</title>
<programlisting>#define GTK_RETLOC_BOXED(a)	((gpointer*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_BOXED</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_BOXED</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-POINTER-CAPS">GTK_RETLOC_POINTER()</title>
<programlisting>#define GTK_RETLOC_POINTER(a)	((gpointer*)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_POINTER</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_POINTER</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GTK-RETLOC-OBJECT-CAPS">GTK_RETLOC_OBJECT()</title>
<programlisting>#define GTK_RETLOC_OBJECT(a)	((GtkObject**)	(a).d.pointer_data)
</programlisting>
<warning>
<para>
<literal>GTK_RETLOC_OBJECT</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If the <link linkend="GtkArg">GtkArg</link> contains a pointer to the value, this macro will be a pointer to a <literal>GTK_TYPE_OBJECT</literal>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>a</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkArg">GtkArg</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="GtkTypeInfo">struct GtkTypeInfo</title>
<programlisting>struct GtkTypeInfo
{
  gchar			*type_name;
  guint			 object_size;
  guint			 class_size;
  GtkClassInitFunc	 class_init_func;
  GtkObjectInitFunc	 object_init_func;
  gpointer		 reserved_1;
  gpointer		 reserved_2;
  GtkClassInitFunc	 base_class_init_func;
};
</programlisting>
<warning>
<para>
<literal>GtkTypeInfo</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Holds information about the type.  <link linkend="gtk-type-name">gtk_type_name</link>() returns the name.
<parameter>object_size</parameter> is somehow set to the number of bytes that an instance of
the object will occupy.  <parameter>class_init_func</parameter> holds the type's
initialization function.  <parameter>object_init_func</parameter> holds the initialization
function for an instance of the object.  <parameter>reserved_1</parameter> is used for
<link linkend="GtkEnumValue">GtkEnumValue</link> to hold the enumerated values.
</para></refsect2>
<refsect2>
<title><anchor id="GtkTypeClass">GtkTypeClass</title>
<programlisting>typedef GTypeClass		GtkTypeClass;
</programlisting>
<warning>
<para>
<literal>GtkTypeClass</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
The base structure for a GTK+ type. Every type inherits this as a base structure.
</para></refsect2>
<refsect2>
<title><anchor id="GtkEnumValue">GtkEnumValue</title>
<programlisting>typedef GEnumValue  GtkEnumValue;
</programlisting>
<warning>
<para>
<literal>GtkEnumValue</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
A structure which contains a single enum value, and its name, and it's
nickname.
</para></refsect2>
<refsect2>
<title><anchor id="GtkFlagValue">GtkFlagValue</title>
<programlisting>typedef GFlagsValue GtkFlagValue;
</programlisting>
<warning>
<para>
<literal>GtkFlagValue</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="gtk-type-init">gtk_type_init ()</title>
<programlisting>void        gtk_type_init                   (<link linkend="GTypeDebugFlags">GTypeDebugFlags</link> debug_flags);</programlisting>
<warning>
<para>
<literal>gtk_type_init</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Initializes the data structures associated with GTK+ types.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>debug_flags</parameter>&nbsp;:</entry>
<entry>


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-unique">gtk_type_unique ()</title>
<programlisting><link linkend="GtkType">GtkType</link>     gtk_type_unique                 (<link linkend="GtkType">GtkType</link> parent_type,
                                             const <link linkend="GtkTypeInfo">GtkTypeInfo</link> *gtkinfo);</programlisting>
<warning>
<para>
<literal>gtk_type_unique</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Creates a new, unique type.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>parent_type</parameter>&nbsp;:</entry>
<entry>if zero, a fundamental type is created.
</entry></row>
<row><entry align="right"><parameter>gtkinfo</parameter>&nbsp;:</entry>
<entry>
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>the new <link linkend="GtkType">GtkType</link>.
</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-name">gtk_type_name()</title>
<programlisting>#define	gtk_type_name(type)		 g_type_name (type)
</programlisting>
<warning>
<para>
<literal>gtk_type_name</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Returns a pointer to the name of a type, or <literal>NULL</literal> if it has none.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>a pointer to the name of a type, or <literal>NULL</literal> if it has none.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-from-name">gtk_type_from_name()</title>
<programlisting>#define	gtk_type_from_name(name)	 g_type_from_name (name)
</programlisting>
<warning>
<para>
<literal>gtk_type_from_name</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Gets the internal representation of a type, given its name.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>name</parameter>&nbsp;:</entry>
<entry>the name of a GTK+ type
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>a <link linkend="GtkType">GtkType</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-parent">gtk_type_parent()</title>
<programlisting>#define	gtk_type_parent(type)		 g_type_parent (type)
</programlisting>
<warning>
<para>
<literal>gtk_type_parent</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Returns the parent type of a <link linkend="GtkType">GtkType</link>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>the <link linkend="GtkType">GtkType</link> of the parent.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-class">gtk_type_class ()</title>
<programlisting><link linkend="gpointer">gpointer</link>    gtk_type_class                  (<link linkend="GtkType">GtkType</link> type);</programlisting>
<para>
Returns a pointer pointing to the class of <parameter>type</parameter> or <literal>NULL</literal> if there was
any trouble identifying <parameter>type</parameter>.  Initializes the class if necessary.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>pointer to the class.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-new">gtk_type_new ()</title>
<programlisting><link linkend="gpointer">gpointer</link>    gtk_type_new                    (<link linkend="GtkType">GtkType</link> type);</programlisting>
<warning>
<para>
<literal>gtk_type_new</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Creates a new object of a given type, and return a pointer to it.
Returns <literal>NULL</literal> if you give it an invalid type.  It allocates the object
out of the type's memory chunk if there is a memory chunk.  The object
has all the proper initializers called.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>pointer to a <link linkend="GtkTypeObject">GtkTypeObject</link>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-is-a">gtk_type_is_a()</title>
<programlisting>#define	gtk_type_is_a(type, is_a_type)	 g_type_is_a ((type), (is_a_type))
</programlisting>
<warning>
<para>
<literal>gtk_type_is_a</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Looks in the type hierarchy to see if <parameter>type</parameter> has <parameter>is_a_type</parameter> among its
ancestors.  Do so with a simple lookup, not a loop.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><parameter>is_a_type</parameter>&nbsp;:</entry>
<entry>another <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry><literal>TRUE</literal> if <parameter>type</parameter> is a <parameter>is_a_type</parameter>.


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-enum-get-values">gtk_type_enum_get_values ()</title>
<programlisting><link linkend="GtkEnumValue">GtkEnumValue</link>* gtk_type_enum_get_values      (<link linkend="GtkType">GtkType</link> enum_type);</programlisting>
<warning>
<para>
<literal>gtk_type_enum_get_values</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If <parameter>enum_type</parameter> has values, then return a pointer to all of them.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>enum_type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry><link linkend="GtkEnumValue">GtkEnumValue</link>*


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-flags-get-values">gtk_type_flags_get_values ()</title>
<programlisting><link linkend="GtkFlagValue">GtkFlagValue</link>* gtk_type_flags_get_values     (<link linkend="GtkType">GtkType</link> flags_type);</programlisting>
<warning>
<para>
<literal>gtk_type_flags_get_values</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
If <parameter>flags_type</parameter> has values, then return a pointer to all of them.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>flags_type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry><link linkend="GtkFlagValue">GtkFlagValue</link>*


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-enum-find-value">gtk_type_enum_find_value ()</title>
<programlisting><link linkend="GtkEnumValue">GtkEnumValue</link>* gtk_type_enum_find_value      (<link linkend="GtkType">GtkType</link> enum_type,
                                             const <link linkend="gchar">gchar</link> *value_name);</programlisting>
<warning>
<para>
<literal>gtk_type_enum_find_value</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Returns a pointer to one of <parameter>enum_type</parameter>'s <link linkend="GtkEnumValues">GtkEnumValues</link>'s whose name (or nickname) matches <parameter>value_name</parameter>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>enum_type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><parameter>value_name</parameter>&nbsp;:</entry>
<entry>the name to look for.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry><link linkend="GtkEnumValue">GtkEnumValue</link>*


</entry></row>
</tbody></tgroup></informaltable></refsect2>
<refsect2>
<title><anchor id="gtk-type-flags-find-value">gtk_type_flags_find_value ()</title>
<programlisting><link linkend="GtkFlagValue">GtkFlagValue</link>* gtk_type_flags_find_value     (<link linkend="GtkType">GtkType</link> flags_type,
                                             const <link linkend="gchar">gchar</link> *value_name);</programlisting>
<warning>
<para>
<literal>gtk_type_flags_find_value</literal> is deprecated and should not be used in newly-written code.
</para>
</warning>
<para>
Returns a pointer to one of <parameter>flag_type</parameter>'s <link linkend="GtkFlagValue">GtkFlagValue</link>'s whose name (or nickname) matches <parameter>value_name</parameter>.
</para><informaltable pgwide="1" frame="none" role="params">
<tgroup cols="2">
<colspec colwidth="2*">
<colspec colwidth="8*">
<tbody>
<row><entry align="right"><parameter>flags_type</parameter>&nbsp;:</entry>
<entry>a <link linkend="GtkType">GtkType</link>.
</entry></row>
<row><entry align="right"><parameter>value_name</parameter>&nbsp;:</entry>
<entry>the name to look for.
</entry></row>
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry><link linkend="GtkFlagValue">GtkFlagValue</link>*
</entry></row>
</tbody></tgroup></informaltable></refsect2>

</refsect1>




</refentry>
