⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtype.h

📁 windows平台下开发gtk程序所需要的库和头文件等
💻 H
📖 第 1 页 / 共 4 页
字号:
 *    return g_strdup_printf ("string location passed as NULL"); *  if (collect_flags & G_VALUE_NOCOPY_CONTENTS) *    *string_p = value->data[0].v_pointer; *  else *    *string_p = g_strdup (value->data[0].v_pointer); *  ]| *  And an illustrative version of lcopy_value() for *  reference-counted types: *  |[ *  GObject **object_p = collect_values[0].v_pointer; *  if (!object_p) *    return g_strdup_printf ("object location passed as NULL"); *  if (!value->data[0].v_pointer) *    *object_p = NULL; *  else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) // always honour *    *object_p = value->data[0].v_pointer; *  else *    *object_p = g_object_ref (value->data[0].v_pointer); *  return NULL; *  ]| *  * The #GTypeValueTable provides the functions required by the #GValue implementation, * to serve as a container for values of a type. */struct _GTypeValueTable{  void     (*value_init)         (GValue       *value);  void     (*value_free)         (GValue       *value);  void     (*value_copy)         (const GValue *src_value,				  GValue       *dest_value);  /* varargs functionality (optional) */  gpointer (*value_peek_pointer) (const GValue *value);  gchar	    *collect_format;  gchar*   (*collect_value)      (GValue       *value,				  guint         n_collect_values,				  GTypeCValue  *collect_values,				  guint		collect_flags);  gchar	    *lcopy_format;  gchar*   (*lcopy_value)        (const GValue *value,				  guint         n_collect_values,				  GTypeCValue  *collect_values,				  guint		collect_flags);};GType g_type_register_static		(GType			     parent_type,					 const gchar		    *type_name,					 const GTypeInfo	    *info,					 GTypeFlags		     flags);GType g_type_register_static_simple     (GType                       parent_type,					 const gchar                *type_name,					 guint                       class_size,					 GClassInitFunc              class_init,					 guint                       instance_size,					 GInstanceInitFunc           instance_init,					 GTypeFlags	             flags);  GType g_type_register_dynamic		(GType			     parent_type,					 const gchar		    *type_name,					 GTypePlugin		    *plugin,					 GTypeFlags		     flags);GType g_type_register_fundamental	(GType			     type_id,					 const gchar		    *type_name,					 const GTypeInfo	    *info,					 const GTypeFundamentalInfo *finfo,					 GTypeFlags		     flags);void  g_type_add_interface_static	(GType			     instance_type,					 GType			     interface_type,					 const GInterfaceInfo	    *info);void  g_type_add_interface_dynamic	(GType			     instance_type,					 GType			     interface_type,					 GTypePlugin		    *plugin);void  g_type_interface_add_prerequisite (GType			     interface_type,					 GType			     prerequisite_type);GType*g_type_interface_prerequisites    (GType                       interface_type,					 guint                      *n_prerequisites);void     g_type_class_add_private       (gpointer                    g_class,                                         gsize                       private_size);gpointer g_type_instance_get_private    (GTypeInstance              *instance,                                         GType                       private_type);/* --- GType boilerplate --- *//** * G_DEFINE_TYPE: * @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. *  * 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. *  * Since: 2.4 */#define G_DEFINE_TYPE(TN, t_n, T_P)			    G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})/** * G_DEFINE_TYPE_WITH_CODE: * @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. *  * 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. *  * Since: 2.4 */#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()/** * G_DEFINE_ABSTRACT_TYPE: * @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. *  * A convenience macro for type implementations.  * Similar to G_DEFINE_TYPE(), but defines an abstract type.  * See G_DEFINE_TYPE_EXTENDED() for an example. *  * Since: 2.4 */#define G_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P)		    G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})/** * G_DEFINE_ABSTRACT_TYPE_WITH_CODE: * @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. *  * 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. *  * Since: 2.4 */#define G_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()/** * G_DEFINE_TYPE_EXTENDED: * @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. * @_f_: #GTypeFlags to pass to g_type_register_static() * @_C_: Custom code that gets inserted in the *_get_type() function. *  * The most general convenience macro for type implementations, on which  * G_DEFINE_TYPE(), etc are based.  *  * |[ * G_DEFINE_TYPE_EXTENDED (GtkGadget,  *                         gtk_gadget,  *                         GTK_TYPE_WIDGET, *                         0,  *                         G_IMPLEMENT_INTERFACE (TYPE_GIZMO,  *                                                gtk_gadget_gizmo_init)); * ]| * expands to * |[ * 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;  * } * ]| * 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. *  * Since: 2.4 */#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()/** * G_IMPLEMENT_INTERFACE: * @TYPE_IFACE: The #GType of the interface to add * @iface_init: The interface init function *  * 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. *  * Note that this macro can only be used together with the G_DEFINE_TYPE_* * macros, since it depends on variable names from those macros. *  * Since: 2.4 */#define G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init)       { \  const GInterfaceInfo g_implement_interface_info = { \    (GInterfaceInitFunc) iface_init, NULL, NULL \  }; \  g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \}#define _G_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \\static void     type_name##_init              (TypeName        *self); \static void     type_name##_class_init        (TypeName##Class *klass); \static gpointer type_name##_parent_class = NULL; \static void     type_name##_class_intern_init (gpointer klass) \{ \  type_name##_parent_class = g_type_class_peek_parent (klass); \  type_name##_class_init ((TypeName##Class*) klass); \} \\GType \type_name##_get_type (void) \{ \  static volatile gsize g_define_type_id__volatile = 0; \  if (g_once_init_enter (&g_define_type_id__volatile))  \    { \      GType g_define_type_id = \        g_type_register_static_simple (TYPE_PARENT, \                                       g_intern_static_string (#TypeName), \                                       sizeof (TypeName##Class), \                                       (GClassInitFunc) type_name##_class_intern_init, \                                       sizeof (TypeName), \                                       (GInstanceInitFunc) type_name##_init, \                                       (GTypeFlags) flags); \      { /* custom code follows */#define _G_DEFINE_TYPE_EXTENDED_END()	\        /* following custom code */	\      }					\      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \    }					\  return g_define_type_id__volatile;	\} /* closes type_name##_get_type() *//* --- protected (for fundamental type implementations) --- */GTypePlugin*	 g_type_get_plugin		(GType		     type);GTypePlugin*	 g_type_interface_get_plugin	(GType		     instance_type,						 GType               interface_type);GType		 g_type_fundamental_next	(void);GType		 g_type_fundamental		(GType		     type_id);GTypeInstance*   g_type_create_instance         (GType               type);void             g_type_free_instance           (GTypeInstance      *instance);void		 g_type_add_class_cache_func    (gpointer	     cache_data,						 GTypeClassCacheFunc cache_func);void		 g_type_remove_class_cache_func (gpointer	     cache_data,						 GTypeClassCacheFunc cache_func);void             g_type_class_unref_uncached    (gpointer            g_class);void             g_type_add_interface_check     (gpointer	         check_data,						 GTypeInterfaceCheckFunc check_func);void             g_type_remove_interface_check  (gpointer	         check_data,						 GTypeInterfaceCheckFunc check_func);GTypeValueTable* g_type_value_table_peek        (GType		     type);/*< private >*/gboolean	 g_type_check_instance          (GTypeInstance      *instance) G_GNUC_PURE;GTypeInstance*   g_type_check_instance_cast     (GTypeInstance      *instance,						 GType               iface_type);gboolean         g_type_check_instance_is_a	(GTypeInstance      *instance,						 GType               iface_type) G_GNUC_PURE;GTypeClass*      g_type_check_class_cast        (GTypeClass         *g_class,						 GType               is_a_type);gboolean         g_type_check_class_is_a        (GTypeClass         *g_class,						 GType               is_a_type) G_GNUC_PURE;gboolean	 g_type_check_is_value_type     (GType		     type) G_GNUC_CONST;gboolean	 g_type_check_value             (GValue		    *value) G_GNUC_PURE;gboolean	 g_type_check_value_holds	(GValue		    *value,						 GType		     type) G_GNUC_PURE;gboolean         g_type_test_flags              (GType               type,						 guint               flags) G_GNUC_CONST;/* --- debugging functions --- */G_CONST_RETURN gchar* g_type_name_from_instance	(GTypeInstance	*instance);G_CONST_RETURN gchar* g_type_name_from_class	(GTypeClass	*g_class);/* --- internal functions --- */G_GNUC_INTERNAL void    g_value_c_init          (void); /* sync with gvalue.c */G_GNUC_INTERNAL void    g_value_types_init      (void); /* sync with gvaluetypes.c */G_GNUC_INTERNAL void    g_enum_types_init       (void); /* sync with genums.c */G_GNUC_INTERNAL void    g_param_type_init       (void); /* sync with gparam.c */G_GNUC_INTERNAL void    g_boxed_type_init       (void); /* sync with gboxed.c */G_GNUC_INTERNAL void    g_object_type_init      (void); /* sync with gobject.c */G_GNUC_INTERNAL void    g_param_spec_types_init (void); /* sync with gparamspecs.c */G_GNUC_INTERNAL void    g_value_transforms_init (void); /* sync with gvaluetransform.c */G_GNUC_INTERNAL void    g_signal_init           (void); /* sync with gsignal.c *//* --- implementation bits --- */#ifndef G_DISABLE_CAST_CHECKS#  define _G_TYPE_CIC(ip, gt, ct) \    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))#  define _G_TYPE_CCC(cp, gt, ct) \    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))#else /* G_DISABLE_CAST_CHECKS */#  define _G_TYPE_CIC(ip, gt, ct)       ((ct*) ip)#  define _G_TYPE_CCC(cp, gt, ct)       ((ct*) cp)#endif /* G_DISABLE_CAST_CHECKS */#define _G_TYPE_CHI(ip)			(g_type_check_instance ((GTypeInstance*) ip))#define _G_TYPE_CHV(vl)			(g_type_check_value ((GValue*) vl))#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))#ifdef	__GNUC__#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \  if (__inst && __inst->g_class && __inst->g_class->g_type == __t) \    __r = TRUE; \  else \    __r = g_type_check_instance_is_a (__inst, __t); \  __r; \}))#  define _G_TYPE_CCT(cp, gt)             (G_GNUC_EXTENSION ({ \  GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \  if (__class && __class->g_type == __t) \    __r = TRUE; \  else \    __r = g_type_check_class_is_a (__class, __t); \  __r; \}))#  define _G_TYPE_CVH(vl, gt)             (G_GNUC_EXTENSION ({ \  GValue *__val = (GValue*) vl; GType __t = gt; gboolean __r; \  if (__val && __val->g_type == __t) \    __r = TRUE; \  else \    __r = g_type_check_value_holds (__val, __t); \  __r; \}))#else  /* !__GNUC__ */#  define _G_TYPE_CIT(ip, gt)             (g_type_check_instance_is_a ((GTypeInstance*) ip, gt))#  define _G_TYPE_CCT(cp, gt)             (g_type_check_class_is_a ((GTypeClass*) cp, gt))#  define _G_TYPE_CVH(vl, gt)             (g_type_check_value_holds ((GValue*) vl, gt))#endif /* !__GNUC__ *//** * G_TYPE_FLAG_RESERVED_ID_BIT: *  * A bit in the type number that's supposed to be left untouched. */#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))extern GTypeDebugFlags			_g_type_debug_flags;G_END_DECLS#endif /* __G_TYPE_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -