glib/gobject/gobject.h
changeset 18 47c74d1534e1
equal deleted inserted replaced
0:e4d67989cc36 18:47c74d1534e1
       
     1 /* GObject - GLib Type, Object, Parameter and Signal Library
       
     2  * Copyright (C) 1998-1999, 2000-2001 Tim Janik and Red Hat, Inc.
       
     3  * Portions copyright (c) 2006-2009 Nokia Corporation.  All rights reserved.
       
     4  * This library is free software; you can redistribute it and/or
       
     5  * modify it under the terms of the GNU Lesser General Public
       
     6  * License as published by the Free Software Foundation; either
       
     7  * version 2 of the License, or (at your option) any later version.
       
     8  *
       
     9  * This library is distributed in the hope that it will be useful,
       
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       
    12  * Lesser General Public License for more details.
       
    13  *
       
    14  * You should have received a copy of the GNU Lesser General
       
    15  * Public License along with this library; if not, write to the
       
    16  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
       
    17  * Boston, MA 02111-1307, USA.
       
    18  */
       
    19 #if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
       
    20 #error "Only <glib-object.h> can be included directly."
       
    21 #endif
       
    22 
       
    23 #ifndef __G_OBJECT_H__
       
    24 #define __G_OBJECT_H__
       
    25 
       
    26 #include        <gobject/gtype.h>
       
    27 #include        <gobject/gvalue.h>
       
    28 #include        <gobject/gparam.h>
       
    29 #include        <gobject/gclosure.h>
       
    30 #include        <gobject/gsignal.h>
       
    31 
       
    32 G_BEGIN_DECLS
       
    33 
       
    34 /* --- type macros --- */
       
    35 /**
       
    36  * G_TYPE_IS_OBJECT:
       
    37  * @type: Type id to check
       
    38  * 
       
    39  * Check if the passed in type id is a %G_TYPE_OBJECT or derived from it.
       
    40  * 
       
    41  * Returns: %FALSE or %TRUE, indicating whether @type is a %G_TYPE_OBJECT.
       
    42  */
       
    43 #define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
       
    44 /**
       
    45  * G_OBJECT:
       
    46  * @object: Object which is subject to casting.
       
    47  * 
       
    48  * Casts a #GObject or derived pointer into a (GObject*) pointer.
       
    49  * Depending on the current debugging level, this function may invoke
       
    50  * certain runtime checks to identify invalid casts.
       
    51  */
       
    52 #define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
       
    53 /**
       
    54  * G_OBJECT_CLASS:
       
    55  * @class: a valid #GObjectClass
       
    56  * 
       
    57  * Casts a derived #GObjectClass structure into a #GObjectClass structure.
       
    58  */
       
    59 #define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
       
    60 /**
       
    61  * G_IS_OBJECT:
       
    62  * @object: Instance to check for being a %G_TYPE_OBJECT.
       
    63  * 
       
    64  * Checks whether a valid #GTypeInstance pointer is of type %G_TYPE_OBJECT.
       
    65  */
       
    66 #define G_IS_OBJECT(object)         (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_OBJECT))
       
    67 /**
       
    68  * G_IS_OBJECT_CLASS:
       
    69  * @class: a #GObjectClass
       
    70  * 
       
    71  * Checks whether @class "is a" valid #GObjectClass structure of type
       
    72  * %G_TYPE_OBJECT or derived.
       
    73  */
       
    74 #define G_IS_OBJECT_CLASS(class)    (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_OBJECT))
       
    75 /**
       
    76  * G_OBJECT_GET_CLASS:
       
    77  * @object: a #GObject instance.
       
    78  * 
       
    79  * Get the class structure associated to a #GObject instance.
       
    80  *
       
    81  * Returns: pointer to object class structure.
       
    82  */
       
    83 #define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
       
    84 /**
       
    85  * G_OBJECT_TYPE:
       
    86  * @object: Object to return the type id for.
       
    87  * 
       
    88  * Get the type id of an object.
       
    89  * 
       
    90  * Returns: Type id of @object.
       
    91  */
       
    92 #define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
       
    93 /**
       
    94  * G_OBJECT_TYPE_NAME:
       
    95  * @object: Object to return the type name for.
       
    96  * 
       
    97  * Get the name of an object's type.
       
    98  * 
       
    99  * Returns: Type name of @object. The string is owned by the type system and 
       
   100  *  should not be freed.
       
   101  */
       
   102 #define G_OBJECT_TYPE_NAME(object)  (g_type_name (G_OBJECT_TYPE (object)))
       
   103 /**
       
   104  * G_OBJECT_CLASS_TYPE:
       
   105  * @class: a valid #GObjectClass
       
   106  * 
       
   107  * Get the type id of a class structure.
       
   108  * 
       
   109  * Returns: Type id of @class.
       
   110  */
       
   111 #define G_OBJECT_CLASS_TYPE(class)  (G_TYPE_FROM_CLASS (class))
       
   112 /**
       
   113  * G_OBJECT_CLASS_NAME:
       
   114  * @class: a valid #GObjectClass
       
   115  * 
       
   116  * Return the name of a class structure's type.
       
   117  * 
       
   118  * Returns: Type name of @class. The string is owned by the type system and 
       
   119  *  should not be freed.
       
   120  */
       
   121 #define G_OBJECT_CLASS_NAME(class)  (g_type_name (G_OBJECT_CLASS_TYPE (class)))
       
   122 /**
       
   123  * G_VALUE_HOLDS_OBJECT:
       
   124  * @value: a valid #GValue structure
       
   125  * 
       
   126  * Checks whether the given #GValue can hold values derived from type %G_TYPE_OBJECT.
       
   127  * 
       
   128  * Returns: %TRUE on success.
       
   129  */
       
   130 #define G_VALUE_HOLDS_OBJECT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_OBJECT))
       
   131 
       
   132 /* --- type macros --- */
       
   133 /**
       
   134  * G_TYPE_INITIALLY_UNOWNED:
       
   135  * 
       
   136  * The type for #GInitiallyUnowned.
       
   137  */
       
   138 #define G_TYPE_INITIALLY_UNOWNED	      (g_initially_unowned_get_type())
       
   139 /**
       
   140  * G_INITIALLY_UNOWNED:
       
   141  * @object: Object which is subject to casting.
       
   142  * 
       
   143  * Casts a #GInitiallyUnowned or derived pointer into a (GInitiallyUnowned*) 
       
   144  * pointer. Depending on the current debugging level, this function may invoke
       
   145  * certain runtime checks to identify invalid casts.
       
   146  */
       
   147 #define G_INITIALLY_UNOWNED(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnowned))
       
   148 /**
       
   149  * G_INITIALLY_UNOWNED_CLASS:
       
   150  * @class: a valid #GInitiallyUnownedClass
       
   151  * 
       
   152  * Casts a derived #GInitiallyUnownedClass structure into a
       
   153  * #GInitiallyUnownedClass structure.
       
   154  */
       
   155 #define G_INITIALLY_UNOWNED_CLASS(class)      (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnownedClass))
       
   156 /**
       
   157  * G_IS_INITIALLY_UNOWNED:
       
   158  * @object: Instance to check for being a %G_TYPE_INITIALLY_UNOWNED.
       
   159  * 
       
   160  * Checks whether a valid #GTypeInstance pointer is of type %G_TYPE_INITIALLY_UNOWNED.
       
   161  */
       
   162 #define G_IS_INITIALLY_UNOWNED(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_INITIALLY_UNOWNED))
       
   163 /**
       
   164  * G_IS_INITIALLY_UNOWNED_CLASS:
       
   165  * @class: a #GInitiallyUnownedClass
       
   166  * 
       
   167  * Checks whether @class "is a" valid #GInitiallyUnownedClass structure of type
       
   168  * %G_TYPE_INITIALLY_UNOWNED or derived.
       
   169  */
       
   170 #define G_IS_INITIALLY_UNOWNED_CLASS(class)   (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_INITIALLY_UNOWNED))
       
   171 /**
       
   172  * G_INITIALLY_UNOWNED_GET_CLASS:
       
   173  * @object: a #GInitiallyUnowned instance.
       
   174  * 
       
   175  * Get the class structure associated to a #GInitiallyUnowned instance.
       
   176  *
       
   177  * Returns: pointer to object class structure.
       
   178  */
       
   179 #define G_INITIALLY_UNOWNED_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnownedClass))
       
   180 /* GInitiallyUnowned ia a GObject with initially floating reference count */
       
   181 
       
   182 
       
   183 /* --- typedefs & structures --- */
       
   184 typedef struct _GObject                  GObject;
       
   185 typedef struct _GObjectClass             GObjectClass;
       
   186 typedef struct _GObject                  GInitiallyUnowned;
       
   187 typedef struct _GObjectClass             GInitiallyUnownedClass;
       
   188 typedef struct _GObjectConstructParam    GObjectConstructParam;
       
   189 /**
       
   190  * GObjectGetPropertyFunc:
       
   191  * @object: a #GObject
       
   192  * @property_id: the numeric id under which the property was registered with
       
   193  *  g_object_class_install_property().
       
   194  * @value: a #GValue to return the property value in
       
   195  * @pspec: the #GParamSpec describing the property
       
   196  * 
       
   197  * The type of the @get_property function of #GObjectClass. 
       
   198  */
       
   199 typedef void (*GObjectGetPropertyFunc)  (GObject      *object,
       
   200                                          guint         property_id,
       
   201                                          GValue       *value,
       
   202                                          GParamSpec   *pspec);
       
   203 /**
       
   204  * GObjectSetPropertyFunc:
       
   205  * @object: a #GObject
       
   206  * @property_id: the numeric id under which the property was registered with
       
   207  *  g_object_class_install_property().
       
   208  * @value: the new value for the property
       
   209  * @pspec: the #GParamSpec describing the property
       
   210  * 
       
   211  * The type of the @set_property function of #GObjectClass. 
       
   212  */
       
   213 typedef void (*GObjectSetPropertyFunc)  (GObject      *object,
       
   214                                          guint         property_id,
       
   215                                          const GValue *value,
       
   216                                          GParamSpec   *pspec);
       
   217 /**
       
   218  * GObjectFinalizeFunc:
       
   219  * @object: the #GObject being finalized
       
   220  * 
       
   221  * The type of the @finalize function of #GObjectClass.
       
   222  */
       
   223 typedef void (*GObjectFinalizeFunc)     (GObject      *object);
       
   224 /**
       
   225  * GWeakNotify:
       
   226  * @data: data that was provided when the weak reference was established
       
   227  * @where_the_object_was: the object being finalized
       
   228  * 
       
   229  * A #GWeakNotify function can be added to an object as a callback that gets
       
   230  * triggered when the object is finalized. Since the object is already being
       
   231  * finalized when the #GWeakNotify is called, there's not much you could do 
       
   232  * with the object, apart from e.g. using its adress as hash-index or the like. 
       
   233  */
       
   234 typedef void (*GWeakNotify)		(gpointer      data,
       
   235 					 GObject      *where_the_object_was);
       
   236 /**
       
   237  * GObject:
       
   238  * 
       
   239  * All the fields in the <structname>GObject</structname> structure are private 
       
   240  * to the #GObject implementation and should never be accessed directly.
       
   241  */
       
   242 struct  _GObject
       
   243 {
       
   244   GTypeInstance  g_type_instance;
       
   245   
       
   246   /*< private >*/
       
   247   volatile guint ref_count;
       
   248   GData         *qdata;
       
   249 };
       
   250 /**
       
   251  * GObjectClass:
       
   252  * @g_type_class: the parent class
       
   253  * @constructor: the @constructor function is called by g_object_new () to 
       
   254  *  complete the object initialization after all the construction properties are
       
   255  *  set. The first thing a @constructor implementation must do is chain up to the
       
   256  *  @constructor of the parent class. Overriding @constructor should be rarely 
       
   257  *  needed, e.g. to handle construct properties, or to implement singletons.
       
   258  * @set_property: the generic setter for all properties of this type. Should be
       
   259  *  overridden for every type with properties. Implementations of @set_property
       
   260  *  don't need to emit property change notification explicitly, this is handled
       
   261  *  by the type system.
       
   262  * @get_property: the generic getter for all properties of this type. Should be
       
   263  *  overridden for every type with properties.
       
   264  * @dispose: the @dispose function is supposed to drop all references to other 
       
   265  *  objects, but keep the instance otherwise intact, so that client method 
       
   266  *  invocations still work. It may be run multiple times (due to reference 
       
   267  *  loops). Before returning, @dispose should chain up to the @dispose method 
       
   268  *  of the parent class.
       
   269  * @finalize: instance finalization function, should finish the finalization of 
       
   270  *  the instance begun in @dispose and chain up to the @finalize method of the 
       
   271  *  parent class.
       
   272  * @dispatch_properties_changed: emits property change notification for a bunch
       
   273  *  of properties. Overriding @dispatch_properties_changed should be rarely 
       
   274  *  needed.
       
   275  * @notify: the class closure for the notify signal
       
   276  * @constructed: the @constructed function is called by g_object_new() as the
       
   277  *  final step of the object creation process.  At the point of the call, all
       
   278  *  construction properties have been set on the object.  The purpose of this
       
   279  *  call is to allow for object initialisation steps that can only be performed
       
   280  *  after construction properties have been set.  @constructed implementors
       
   281  *  should chain up to the @constructed call of their parent class to allow it
       
   282  *  to complete its initialisation.
       
   283  * 
       
   284  * The class structure for the <structname>GObject</structname> type.
       
   285  * 
       
   286  * <example>
       
   287  * <title>Implementing singletons using a constructor</title>
       
   288  * <programlisting>
       
   289  * static MySingleton *the_singleton = NULL;
       
   290  * 
       
   291  * static GObject*
       
   292  * my_singleton_constructor (GType                  type,
       
   293  *                           guint                  n_construct_params,
       
   294  *                           GObjectConstructParam *construct_params)
       
   295  * {
       
   296  *   GObject *object;
       
   297  *   
       
   298  *   if (!the_singleton)
       
   299  *     {
       
   300  *       object = G_OBJECT_CLASS (parent_class)->constructor (type,
       
   301  *                                                            n_construct_params,
       
   302  *                                                            construct_params);
       
   303  *       the_singleton = MY_SINGLETON (object);
       
   304  *     }
       
   305  *   else
       
   306  *     object = g_object_ref (G_OBJECT (the_singleton));
       
   307  * 
       
   308  *   return object;
       
   309  * }
       
   310  * </programlisting></example>
       
   311  */
       
   312 struct  _GObjectClass
       
   313 {
       
   314   GTypeClass   g_type_class;
       
   315 
       
   316   /*< private >*/
       
   317   GSList      *construct_properties;
       
   318 
       
   319   /*< public >*/
       
   320   /* seldomly overidden */
       
   321   GObject*   (*constructor)     (GType                  type,
       
   322                                  guint                  n_construct_properties,
       
   323                                  GObjectConstructParam *construct_properties);
       
   324   /* overridable methods */
       
   325   void       (*set_property)		(GObject        *object,
       
   326                                          guint           property_id,
       
   327                                          const GValue   *value,
       
   328                                          GParamSpec     *pspec);
       
   329   void       (*get_property)		(GObject        *object,
       
   330                                          guint           property_id,
       
   331                                          GValue         *value,
       
   332                                          GParamSpec     *pspec);
       
   333   void       (*dispose)			(GObject        *object);
       
   334   void       (*finalize)		(GObject        *object);
       
   335   /* seldomly overidden */
       
   336   void       (*dispatch_properties_changed) (GObject      *object,
       
   337 					     guint	   n_pspecs,
       
   338 					     GParamSpec  **pspecs);
       
   339   /* signals */
       
   340   void	     (*notify)			(GObject	*object,
       
   341 					 GParamSpec	*pspec);
       
   342 
       
   343   /* called when done constructing */
       
   344   void	     (*constructed)		(GObject	*object);
       
   345 
       
   346   /*< private >*/
       
   347   /* padding */
       
   348   gpointer	pdummy[7];
       
   349 };
       
   350 /**
       
   351  * GObjectConstructParam:
       
   352  * @pspec: the #GParamSpec of the construct parameter
       
   353  * @value: the value to set the parameter to
       
   354  * 
       
   355  * The <structname>GObjectConstructParam</structname> struct is an auxiliary 
       
   356  * structure used to hand #GParamSpec/#GValue pairs to the @constructor of
       
   357  * a #GObjectClass.
       
   358  */
       
   359 struct _GObjectConstructParam
       
   360 {
       
   361   GParamSpec *pspec;
       
   362   GValue     *value;
       
   363 };
       
   364 
       
   365 /**
       
   366  * GInitiallyUnowned:
       
   367  * 
       
   368  * All the fields in the <structname>GInitiallyUnowned</structname> structure 
       
   369  * are private to the #GInitiallyUnowned implementation and should never be 
       
   370  * accessed directly.
       
   371  */
       
   372 /**
       
   373  * GInitiallyUnownedClass:
       
   374  * 
       
   375  * The class structure for the <structname>GInitiallyUnowned</structname> type.
       
   376  */
       
   377 
       
   378 
       
   379 /* --- prototypes --- */
       
   380 IMPORT_C GType       g_initially_unowned_get_type      (void);
       
   381 IMPORT_C void        g_object_class_install_property   (GObjectClass   *oclass,
       
   382 					       guint           property_id,
       
   383 					       GParamSpec     *pspec);
       
   384 IMPORT_C GParamSpec* g_object_class_find_property      (GObjectClass   *oclass,
       
   385 					       const gchar    *property_name);
       
   386 IMPORT_C GParamSpec**g_object_class_list_properties    (GObjectClass   *oclass,
       
   387 					       guint	      *n_properties);
       
   388 IMPORT_C void        g_object_class_override_property  (GObjectClass   *oclass,
       
   389 					       guint           property_id,
       
   390 					       const gchar    *name);
       
   391 
       
   392 IMPORT_C void        g_object_interface_install_property (gpointer     g_iface,
       
   393 						 GParamSpec  *pspec);
       
   394 IMPORT_C GParamSpec* g_object_interface_find_property    (gpointer     g_iface,
       
   395 						 const gchar *property_name);
       
   396 IMPORT_C GParamSpec**g_object_interface_list_properties  (gpointer     g_iface,
       
   397 						 guint       *n_properties_p);
       
   398 
       
   399 IMPORT_C GType       g_object_get_type                 (void) G_GNUC_CONST;
       
   400 IMPORT_C gpointer    g_object_new                      (GType           object_type,
       
   401 					       const gchar    *first_property_name,
       
   402 					       ...);
       
   403 IMPORT_C gpointer    g_object_newv		      (GType           object_type,
       
   404 					       guint	       n_parameters,
       
   405 					       GParameter     *parameters);
       
   406 IMPORT_C GObject*    g_object_new_valist               (GType           object_type,
       
   407 					       const gchar    *first_property_name,
       
   408 					       va_list         var_args);
       
   409 IMPORT_C void	    g_object_set                      (gpointer	       object,
       
   410 					       const gchar    *first_property_name,
       
   411 					       ...) G_GNUC_NULL_TERMINATED;
       
   412 IMPORT_C void        g_object_get                      (gpointer        object,
       
   413 					       const gchar    *first_property_name,
       
   414 					       ...) G_GNUC_NULL_TERMINATED;
       
   415 IMPORT_C gpointer    g_object_connect                  (gpointer	       object,
       
   416 					       const gchar    *signal_spec,
       
   417 					       ...) G_GNUC_NULL_TERMINATED;
       
   418 IMPORT_C void	    g_object_disconnect               (gpointer	       object,
       
   419 					       const gchar    *signal_spec,
       
   420 					       ...) G_GNUC_NULL_TERMINATED;
       
   421 IMPORT_C void        g_object_set_valist               (GObject        *object,
       
   422 					       const gchar    *first_property_name,
       
   423 					       va_list         var_args);
       
   424 IMPORT_C void        g_object_get_valist               (GObject        *object,
       
   425 					       const gchar    *first_property_name,
       
   426 					       va_list         var_args);
       
   427 IMPORT_C void        g_object_set_property             (GObject        *object,
       
   428 					       const gchar    *property_name,
       
   429 					       const GValue   *value);
       
   430 IMPORT_C void        g_object_get_property             (GObject        *object,
       
   431 					       const gchar    *property_name,
       
   432 					       GValue         *value);
       
   433 IMPORT_C void        g_object_freeze_notify            (GObject        *object);
       
   434 IMPORT_C void        g_object_notify                   (GObject        *object,
       
   435 					       const gchar    *property_name);
       
   436 IMPORT_C void        g_object_thaw_notify              (GObject        *object);
       
   437 IMPORT_C gboolean    g_object_is_floating    	      (gpointer        object);
       
   438 IMPORT_C gpointer    g_object_ref_sink       	      (gpointer	       object);
       
   439 IMPORT_C gpointer    g_object_ref                      (gpointer        object);
       
   440 IMPORT_C void        g_object_unref                    (gpointer        object);
       
   441 IMPORT_C void	    g_object_weak_ref		      (GObject	      *object,
       
   442 					       GWeakNotify     notify,
       
   443 					       gpointer	       data);
       
   444 IMPORT_C void	    g_object_weak_unref		      (GObject	      *object,
       
   445 					       GWeakNotify     notify,
       
   446 					       gpointer	       data);
       
   447 IMPORT_C void        g_object_add_weak_pointer         (GObject        *object, 
       
   448                                                gpointer       *weak_pointer_location);
       
   449 IMPORT_C void        g_object_remove_weak_pointer      (GObject        *object, 
       
   450                                                gpointer       *weak_pointer_location);
       
   451 
       
   452 /**
       
   453  * GToggleNotify:
       
   454  * @data: Callback data passed to g_object_add_toggle_ref()
       
   455  * @object: The object on which g_object_add_toggle_ref() was called.
       
   456  * @is_last_ref: %TRUE if the toggle reference is now the
       
   457  *  last reference to the object. %FALSE if the toggle
       
   458  *  reference was the last reference and there are now other
       
   459  *  references.
       
   460  * 
       
   461  * A callback function used for notification when the state
       
   462  * of a toggle reference changes. See g_object_add_toggle_ref().
       
   463  */
       
   464 typedef void (*GToggleNotify) (gpointer      data,
       
   465 			       GObject      *object,
       
   466 			       gboolean      is_last_ref);
       
   467 
       
   468 IMPORT_C void g_object_add_toggle_ref    (GObject       *object,
       
   469 				 GToggleNotify  notify,
       
   470 				 gpointer       data);
       
   471 IMPORT_C void g_object_remove_toggle_ref (GObject       *object,
       
   472 				 GToggleNotify  notify,
       
   473 				 gpointer       data);
       
   474 
       
   475 IMPORT_C gpointer    g_object_get_qdata                (GObject        *object,
       
   476 					       GQuark          quark);
       
   477 IMPORT_C void        g_object_set_qdata                (GObject        *object,
       
   478 					       GQuark          quark,
       
   479 					       gpointer        data);
       
   480 IMPORT_C void        g_object_set_qdata_full           (GObject        *object,
       
   481 					       GQuark          quark,
       
   482 					       gpointer        data,
       
   483 					       GDestroyNotify  destroy);
       
   484 IMPORT_C gpointer    g_object_steal_qdata              (GObject        *object,
       
   485 					       GQuark          quark);
       
   486 IMPORT_C gpointer    g_object_get_data                 (GObject        *object,
       
   487 					       const gchar    *key);
       
   488 IMPORT_C void        g_object_set_data                 (GObject        *object,
       
   489 					       const gchar    *key,
       
   490 					       gpointer        data);
       
   491 IMPORT_C void        g_object_set_data_full            (GObject        *object,
       
   492 					       const gchar    *key,
       
   493 					       gpointer        data,
       
   494 					       GDestroyNotify  destroy);
       
   495 IMPORT_C gpointer    g_object_steal_data               (GObject        *object,
       
   496 					       const gchar    *key);
       
   497 IMPORT_C void        g_object_watch_closure            (GObject        *object,
       
   498 					       GClosure       *closure);
       
   499 IMPORT_C GClosure*   g_cclosure_new_object             (GCallback       callback_func,
       
   500 					       GObject	      *object);
       
   501 IMPORT_C GClosure*   g_cclosure_new_object_swap        (GCallback       callback_func,
       
   502 					       GObject	      *object);
       
   503 IMPORT_C GClosure*   g_closure_new_object              (guint           sizeof_closure,
       
   504 					       GObject        *object);
       
   505 IMPORT_C void        g_value_set_object                (GValue         *value,
       
   506 					       gpointer        v_object);
       
   507 IMPORT_C gpointer    g_value_get_object                (const GValue   *value);
       
   508 IMPORT_C gpointer    g_value_dup_object                (const GValue   *value);
       
   509 IMPORT_C gulong	    g_signal_connect_object           (gpointer	       instance,
       
   510 					       const gchar    *detailed_signal,
       
   511 					       GCallback       c_handler,
       
   512 					       gpointer	       gobject,
       
   513 					       GConnectFlags   connect_flags);
       
   514 
       
   515 /*< protected >*/
       
   516 IMPORT_C void        g_object_force_floating           (GObject        *object);
       
   517 IMPORT_C void        g_object_run_dispose	      (GObject	      *object);
       
   518 
       
   519 
       
   520 IMPORT_C void        g_value_take_object               (GValue         *value,
       
   521 					       gpointer        v_object);
       
   522 #ifndef G_DISABLE_DEPRECATED
       
   523 IMPORT_C void        g_value_set_object_take_ownership (GValue         *value,
       
   524 					       gpointer        v_object);
       
   525 #endif
       
   526 
       
   527 #if !defined(G_DISABLE_DEPRECATED) || defined(GTK_COMPILATION)
       
   528 IMPORT_C gsize	    g_object_compat_control	      (gsize	       what,
       
   529 					       gpointer	       data);
       
   530 #endif
       
   531 
       
   532 /* --- implementation macros --- */
       
   533 #define G_OBJECT_WARN_INVALID_PSPEC(object, pname, property_id, pspec) \
       
   534 G_STMT_START { \
       
   535   GObject *_object = (GObject*) (object); \
       
   536   GParamSpec *_pspec = (GParamSpec*) (pspec); \
       
   537   guint _property_id = (property_id); \
       
   538   g_warning ("%s: invalid %s id %u for \"%s\" of type `%s' in `%s'", \
       
   539              G_STRLOC, \
       
   540              (pname), \
       
   541              _property_id, \
       
   542              _pspec->name, \
       
   543              g_type_name (G_PARAM_SPEC_TYPE (_pspec)), \
       
   544              G_OBJECT_TYPE_NAME (_object)); \
       
   545 } G_STMT_END
       
   546 /**
       
   547  * G_OBJECT_WARN_INVALID_PROPERTY_ID:
       
   548  * @object: the #GObject on which set_property() or get_property() was called
       
   549  * @property_id: the numeric id of the property
       
   550  * @pspec: the #GParamSpec of the property
       
   551  * 
       
   552  * This macro should be used to emit a standard warning about unexpected 
       
   553  * properties in set_property() and get_property() implementations.
       
   554  */
       
   555 #define G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec) \
       
   556     G_OBJECT_WARN_INVALID_PSPEC ((object), "property", (property_id), (pspec))
       
   557 
       
   558 G_END_DECLS
       
   559 
       
   560 #endif /* __G_OBJECT_H__ */