+ %NULL if there is no #GTypeValueTable associated with @type.
+
+
+<!-- ##### MACRO G_DEFINE_TYPE ##### -->
+<para>
+A convenience macro for type implementations, which declares a
+class initialization function, an instance initialization function (see #GTypeInfo for information about
+these) and a static variable named @t_n<!-- -->_parent_class pointing to the parent class. Furthermore, it defines
+a *_get_type() function. See G_DEFINE_TYPE_EXTENDED() for an example.
+</para>
+
+@TN: The name of the new type, in Camel case.
+@t_n: The name of the new type, in lowercase, with words
+ separated by '_'.
+@T_P: The #GType of the parent type.
+@Since: 2.4
+
+
+<!-- ##### MACRO G_DEFINE_TYPE_WITH_CODE ##### -->
+<para>
+A convenience macro for type implementations.
+Similar to G_DEFINE_TYPE(), but allows to insert custom code into the
+*_get_type() function, e.g. interface implementations via G_IMPLEMENT_INTERFACE().
+See G_DEFINE_TYPE_EXTENDED() for an example.
+</para>
+
+@TN: The name of the new type, in Camel case.
+@t_n: The name of the new type in lowercase, with words separated by '_'.
+@T_P: The #GType of the parent type.
+@_C_: Custom code that gets inserted in the *_get_type() function.
+@Since: 2.4
+
+
+<!-- ##### MACRO G_DEFINE_ABSTRACT_TYPE ##### -->
+<para>
+A convenience macro for type implementations.
+Similar to G_DEFINE_TYPE(), but defines an abstract type.
+See G_DEFINE_TYPE_EXTENDED() for an example.
+</para>
+
+@TN: The name of the new type, in Camel case.
+@t_n: The name of the new type, in lowercase, with words
+ separated by '_'.
+@T_P: The #GType of the parent type.
+@Since: 2.4
+
+
+<!-- ##### MACRO G_DEFINE_ABSTRACT_TYPE_WITH_CODE ##### -->
+<para>
+A convenience macro for type implementations.
+Similar to G_DEFINE_TYPE_WITH_CODE(), but defines an abstract type and allows to
+insert custom code into the *_get_type() function, e.g. interface implementations
+via G_IMPLEMENT_INTERFACE(). See G_DEFINE_TYPE_EXTENDED() for an example.
+</para>
+
+@TN: The name of the new type, in Camel case.
+@t_n: The name of the new type, in lowercase, with words
+ separated by '_'.
+@T_P: The #GType of the parent type.
+@_C_: Custom code that gets inserted in the @type_name_get_type() function.
+@Since: 2.4
+
+
+<!-- ##### MACRO G_IMPLEMENT_INTERFACE ##### -->
+<para>
+A convenience macro to ease interface addition in the @_C_ section
+of G_DEFINE_TYPE_WITH_CODE() or G_DEFINE_ABSTRACT_TYPE_WITH_CODE().
+See G_DEFINE_TYPE_EXTENDED() for an example.
+</para>
+<para>
+Note that this macro can only be used together with the G_DEFINE_TYPE_*
+macros, since it depends on variable names from those macros.
+</para>
+
+@TYPE_IFACE: The #GType of the interface to add
+@iface_init: The interface init function
+@Since: 2.4
+
+
+<!-- ##### MACRO G_DEFINE_TYPE_EXTENDED ##### -->
+<para>
+The most general convenience macro for type implementations, on which
+G_DEFINE_TYPE(), etc are based.
+</para>
+<informalexample><programlisting>
+G_DEFINE_TYPE_EXTENDED (GtkGadget,
+ gtk_gadget,
+ GTK_TYPE_WIDGET,
+ 0,
+ G_IMPLEMENT_INTERFACE (TYPE_GIZMO,
+ gtk_gadget_gizmo_init));
+</programlisting>
+expands to
+<programlisting>
+static void gtk_gadget_init (GtkGadget *self);
+static void gtk_gadget_class_init (GtkGadgetClass *klass);
+static gpointer gtk_gadget_parent_class = NULL;
+static void gtk_gadget_class_intern_init (gpointer klass)
+{
+ gtk_gadget_parent_class = g_type_class_peek_parent (klass);
+ gtk_gadget_class_init ((GtkGadgetClass*) klass);
+}
+<!-- -->
+GType
+gtk_gadget_get_type (void)
+{
+ static GType g_define_type_id = 0;
+ if (G_UNLIKELY (g_define_type_id == 0))
+ {
+ static const GTypeInfo g_define_type_info = {
+ sizeof (GtkGadgetClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) gtk_gadget_class_intern_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (GtkGadget),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) gtk_gadget_init,
+ };
+ g_define_type_id = g_type_register_static (GTK_TYPE_WIDGET, "GtkGadget", &g_define_type_info, 0);
+ {
+ static const GInterfaceInfo g_implement_interface_info = {
+ (GInterfaceInitFunc) gtk_gadget_gizmo_init
+ };
+ g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &g_implement_interface_info);
+ }
+ }
+ return g_define_type_id;
+}
+</programlisting>
+The only pieces which have to be manually provided are the definitions of the
+instance and class structure and the definitions of the instance and class
+init functions.
+</informalexample>
+
+@TypeName: The name of the new type, in Camel case.
+@type_name: The name of the new type, in lowercase, with words
+ separated by '_'.
+@TYPE_PARENT: The #GType of the parent type.
+@flags: #GTypeFlags to pass to g_type_register_static()
+@CODE: Custom code that gets inserted in the *_get_type() function.
+@Since: 2.4
+
+
+<!-- ##### MACRO G_TYPE_INVALID ##### -->
+<para>
+An invalid #GType, used as error return value in some functions which return
+a #GType.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_NONE ##### -->
+<para>
+A fundamental type which is used as a replacement for the C
+<literal>void</literal> return type.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_INTERFACE ##### -->
+<para>
+The fundamental type from which all interfaces are derived.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_CHAR ##### -->
+<para>
+The fundamental type corresponding to #gchar.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_UCHAR ##### -->
+<para>
+The fundamental type corresponding to #guchar.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_BOOLEAN ##### -->
+<para>
+The fundamental type corresponding to #gboolean.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_INT ##### -->
+<para>
+The fundamental type corresponding to #gint.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_UINT ##### -->
+<para>
+The fundamental type corresponding to #guint.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_LONG ##### -->
+<para>
+The fundamental type corresponding to #glong.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_ULONG ##### -->
+<para>
+The fundamental type corresponding to #gulong.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_INT64 ##### -->
+<para>
+The fundamental type corresponding to #gint64.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_UINT64 ##### -->
+<para>
+The fundamental type corresponding to #guint64.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_ENUM ##### -->
+<para>
+The fundamental type from which all enumeration types are derived.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_FLAGS ##### -->
+<para>
+The fundamental type from which all flags types are derived.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_FLOAT ##### -->
+<para>
+The fundamental type corresponding to #gfloat.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_DOUBLE ##### -->
+<para>
+The fundamental type corresponding to #gdouble.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_STRING ##### -->
+<para>
+The fundamental type corresponding to nul-terminated C strings.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_POINTER ##### -->
+<para>
+The fundamental type corresponding to #gpointer.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_BOXED ##### -->
+<para>
+The fundamental type from which all boxed types are derived.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_PARAM ##### -->
+<para>
+The fundamental type from which all #GParamSpec types are derived.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_OBJECT ##### -->
+<para>
+The fundamental type for #GObject.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_RESERVED_GLIB_FIRST ##### -->
+<para>
+First fundamental type number to create a new fundamental type id with
+G_TYPE_MAKE_FUNDAMENTAL() reserved for GLib.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_RESERVED_GLIB_LAST ##### -->
+<para>
+Last fundamental type number reserved for GLib.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_RESERVED_BSE_FIRST ##### -->
+<para>
+First fundamental type number to create a new fundamental type id with
+G_TYPE_MAKE_FUNDAMENTAL() reserved for BSE.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_RESERVED_BSE_LAST ##### -->
+<para>
+Last fundamental type number reserved for BSE.
+</para>
+
+
+
+<!-- ##### MACRO G_TYPE_RESERVED_USER_FIRST ##### -->
+<para>
+First available fundamental type number to create new fundamental
+type id with G_TYPE_MAKE_FUNDAMENTAL().
+</para>
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("../gobject-docs.sgml" "book" "refsect2" "")
+End:
+-->
+