Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
gtypemodule.h File Reference
#include <gobject/gobject.h>
#include <gobject/genums.h>

Go to the source code of this file.

Data Structures

struct  _GTypeModule
 
struct  _GTypeModuleClass
 

Macros

#define G_TYPE_TYPE_MODULE   (g_type_module_get_type ())
 
#define G_TYPE_MODULE(module)   (G_TYPE_CHECK_INSTANCE_CAST ((module), G_TYPE_TYPE_MODULE, GTypeModule))
 
#define G_TYPE_MODULE_CLASS(class)   (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TYPE_MODULE, GTypeModuleClass))
 
#define G_IS_TYPE_MODULE(module)   (G_TYPE_CHECK_INSTANCE_TYPE ((module), G_TYPE_TYPE_MODULE))
 
#define G_IS_TYPE_MODULE_CLASS(class)   (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TYPE_MODULE))
 
#define G_TYPE_MODULE_GET_CLASS(module)   (G_TYPE_INSTANCE_GET_CLASS ((module), G_TYPE_TYPE_MODULE, GTypeModuleClass))
 
#define G_DEFINE_DYNAMIC_TYPE(TN, t_n, T_P)   G_DEFINE_DYNAMIC_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
 
#define G_DEFINE_DYNAMIC_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, flags, CODE)
 
#define G_IMPLEMENT_INTERFACE_DYNAMIC(TYPE_IFACE, iface_init)
 
#define G_ADD_PRIVATE_DYNAMIC(TypeName)
 

Typedefs

typedef typedefG_BEGIN_DECLS struct _GTypeModule GTypeModule
 
typedef struct _GTypeModuleClass GTypeModuleClass
 

Functions

GOBJECT_AVAILABLE_IN_ALL GType g_type_module_get_type (void) G_GNUC_CONST
 
GOBJECT_AVAILABLE_IN_ALL gboolean g_type_module_use (GTypeModule *module)
 
GOBJECT_AVAILABLE_IN_ALL void g_type_module_unuse (GTypeModule *module)
 
GOBJECT_AVAILABLE_IN_ALL void g_type_module_set_name (GTypeModule *module, const gchar *name)
 
GOBJECT_AVAILABLE_IN_ALL GType g_type_module_register_type (GTypeModule *module, GType parent_type, const gchar *type_name, const GTypeInfo *type_info, GTypeFlags flags)
 
GOBJECT_AVAILABLE_IN_ALL void g_type_module_add_interface (GTypeModule *module, GType instance_type, GType interface_type, const GInterfaceInfo *interface_info)
 
GOBJECT_AVAILABLE_IN_ALL GType g_type_module_register_enum (GTypeModule *module, const gchar *name, const GEnumValue *const_static_values)
 
GOBJECT_AVAILABLE_IN_ALL GType g_type_module_register_flags (GTypeModule *module, const gchar *name, const GFlagsValue *const_static_values)
 

Macro Definition Documentation

◆ G_ADD_PRIVATE_DYNAMIC

#define G_ADD_PRIVATE_DYNAMIC ( TypeName)
Value:
{ \
TypeName##_private_offset = sizeof (TypeName##Private); \
}

G_ADD_PRIVATE_DYNAMIC: @TypeName: the name of the type in CamelCase

A convenience macro to ease adding private data to instances of a new dynamic type in the @_C_ section of G_DEFINE_DYNAMIC_TYPE_EXTENDED().

See G_ADD_PRIVATE() for details, it is similar but for static types.

Note that this macro can only be used together with the G_DEFINE_DYNAMIC_TYPE_EXTENDED macros, since it depends on variable names from that macro.

Since: 2.38

Definition at line 260 of file gtypemodule.h.

260#define G_ADD_PRIVATE_DYNAMIC(TypeName) { \
261 TypeName##_private_offset = sizeof (TypeName##Private); \
262}

◆ G_DEFINE_DYNAMIC_TYPE

#define G_DEFINE_DYNAMIC_TYPE ( TN,
t_n,
T_P )   G_DEFINE_DYNAMIC_TYPE_EXTENDED (TN, t_n, T_P, 0, {})

G_DEFINE_DYNAMIC_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 dynamic 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() and a static *_register_type() functions for use in your module_init().

See G_DEFINE_DYNAMIC_TYPE_EXTENDED() for an example.

Since: 2.14

Definition at line 100 of file gtypemodule.h.

◆ G_DEFINE_DYNAMIC_TYPE_EXTENDED

#define G_DEFINE_DYNAMIC_TYPE_EXTENDED ( TypeName,
type_name,
TYPE_PARENT,
flags,
CODE )

G_DEFINE_DYNAMIC_TYPE_EXTENDED: @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_module_register_type() @CODE: Custom code that gets inserted in the *_get_type() function.

A more general version of G_DEFINE_DYNAMIC_TYPE() which allows to specify GTypeFlags and custom code.

|[ G_DEFINE_DYNAMIC_TYPE_EXTENDED (GtkGadget, gtk_gadget, GTK_TYPE_THING, 0, G_IMPLEMENT_INTERFACE_DYNAMIC (TYPE_GIZMO, gtk_gadget_gizmo_init)); ]|

expands to

|[ static void gtk_gadget_init (GtkGadget *self); static void gtk_gadget_class_init (GtkGadgetClass *klass); static void gtk_gadget_class_finalize (GtkGadgetClass *klass);

static gpointer gtk_gadget_parent_class = NULL; static GType gtk_gadget_type_id = 0;

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) { return gtk_gadget_type_id; }

static void gtk_gadget_register_type (GTypeModule *type_module) { const GTypeInfo g_define_type_info = { sizeof (GtkGadgetClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gtk_gadget_class_intern_init, (GClassFinalizeFunc) gtk_gadget_class_finalize, NULL, // class_data sizeof (GtkGadget), 0, // n_preallocs (GInstanceInitFunc) gtk_gadget_init, NULL // value_table }; gtk_gadget_type_id = g_type_module_register_type (type_module, GTK_TYPE_THING, "GtkGadget", &g_define_type_info, (GTypeFlags) flags); { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc) gtk_gadget_gizmo_init }; g_type_module_add_interface (type_module, g_define_type_id, TYPE_GIZMO, &g_implement_interface_info); } } ]|

Since: 2.14

Definition at line 175 of file gtypemodule.h.

175#define G_DEFINE_DYNAMIC_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, flags, CODE) \
176static void type_name##_init (TypeName *self); \
177static void type_name##_class_init (TypeName##Class *klass); \
178static void type_name##_class_finalize (TypeName##Class *klass); \
179static gpointer type_name##_parent_class = NULL; \
180static GType type_name##_type_id = 0; \
181static gint TypeName##_private_offset; \
182\
183_G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \
184\
185G_GNUC_UNUSED \
186static inline gpointer \
187type_name##_get_instance_private (TypeName *self) \
188{ \
189 return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
190} \
191\
192GType \
193type_name##_get_type (void) \
194{ \
195 return type_name##_type_id; \
196} \
197static void \
198type_name##_register_type (GTypeModule *type_module) \
199{ \
200 GType g_define_type_id G_GNUC_UNUSED; \
201 const GTypeInfo g_define_type_info = { \
202 sizeof (TypeName##Class), \
203 (GBaseInitFunc) NULL, \
204 (GBaseFinalizeFunc) NULL, \
205 (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
206 (GClassFinalizeFunc)(void (*)(void)) type_name##_class_finalize, \
207 NULL, /* class_data */ \
208 sizeof (TypeName), \
209 0, /* n_preallocs */ \
210 (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
211 NULL /* value_table */ \
212 }; \
213 type_name##_type_id = g_type_module_register_type (type_module, \
214 TYPE_PARENT, \
215 #TypeName, \
216 &g_define_type_info, \
217 (GTypeFlags) flags); \
218 g_define_type_id = type_name##_type_id; \
219 { CODE ; } \
220}

◆ G_IMPLEMENT_INTERFACE_DYNAMIC

#define G_IMPLEMENT_INTERFACE_DYNAMIC ( TYPE_IFACE,
iface_init )
Value:
{ \
const GInterfaceInfo g_implement_interface_info = { \
(GInterfaceInitFunc)(void (*)(void)) iface_init, NULL, NULL \
}; \
g_type_module_add_interface (type_module, g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
}
#define NULL
Definition gmacros.h:924
void(* GInterfaceInitFunc)(gpointer g_iface, gpointer iface_data)
Definition gtype.h:998

G_IMPLEMENT_INTERFACE_DYNAMIC: @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_DYNAMIC_TYPE_EXTENDED().

See G_DEFINE_DYNAMIC_TYPE_EXTENDED() for an example.

Note that this macro can only be used together with the G_DEFINE_DYNAMIC_TYPE_EXTENDED macros, since it depends on variable names from that macro.

Since: 2.24

Definition at line 238 of file gtypemodule.h.

238#define G_IMPLEMENT_INTERFACE_DYNAMIC(TYPE_IFACE, iface_init) { \
239 const GInterfaceInfo g_implement_interface_info = { \
240 (GInterfaceInitFunc)(void (*)(void)) iface_init, NULL, NULL \
241 }; \
242 g_type_module_add_interface (type_module, g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
243}

◆ G_IS_TYPE_MODULE

#define G_IS_TYPE_MODULE ( module)    (G_TYPE_CHECK_INSTANCE_TYPE ((module), G_TYPE_TYPE_MODULE))

Definition at line 37 of file gtypemodule.h.

◆ G_IS_TYPE_MODULE_CLASS

#define G_IS_TYPE_MODULE_CLASS ( class)    (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TYPE_MODULE))

Definition at line 38 of file gtypemodule.h.

◆ G_TYPE_MODULE

#define G_TYPE_MODULE ( module)    (G_TYPE_CHECK_INSTANCE_CAST ((module), G_TYPE_TYPE_MODULE, GTypeModule))

Definition at line 35 of file gtypemodule.h.

◆ G_TYPE_MODULE_CLASS

#define G_TYPE_MODULE_CLASS ( class)    (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TYPE_MODULE, GTypeModuleClass))

Definition at line 36 of file gtypemodule.h.

◆ G_TYPE_MODULE_GET_CLASS

#define G_TYPE_MODULE_GET_CLASS ( module)    (G_TYPE_INSTANCE_GET_CLASS ((module), G_TYPE_TYPE_MODULE, GTypeModuleClass))

Definition at line 39 of file gtypemodule.h.

◆ G_TYPE_TYPE_MODULE

#define G_TYPE_TYPE_MODULE   (g_type_module_get_type ())

Definition at line 34 of file gtypemodule.h.

Typedef Documentation

◆ GTypeModule

typedef typedefG_BEGIN_DECLS struct _GTypeModule GTypeModule

Definition at line 31 of file gtypemodule.h.

◆ GTypeModuleClass

Definition at line 32 of file gtypemodule.h.

Function Documentation

◆ g_type_module_add_interface()

GOBJECT_AVAILABLE_IN_ALL void g_type_module_add_interface ( GTypeModule * module,
GType instance_type,
GType interface_type,
const GInterfaceInfo * interface_info )

◆ g_type_module_get_type()

GOBJECT_AVAILABLE_IN_ALL GType g_type_module_get_type ( void )

◆ g_type_module_register_enum()

GOBJECT_AVAILABLE_IN_ALL GType g_type_module_register_enum ( GTypeModule * module,
const gchar * name,
const GEnumValue * const_static_values )

◆ g_type_module_register_flags()

GOBJECT_AVAILABLE_IN_ALL GType g_type_module_register_flags ( GTypeModule * module,
const gchar * name,
const GFlagsValue * const_static_values )

◆ g_type_module_register_type()

GOBJECT_AVAILABLE_IN_ALL GType g_type_module_register_type ( GTypeModule * module,
GType parent_type,
const gchar * type_name,
const GTypeInfo * type_info,
GTypeFlags flags )

◆ g_type_module_set_name()

GOBJECT_AVAILABLE_IN_ALL void g_type_module_set_name ( GTypeModule * module,
const gchar * name )

◆ g_type_module_unuse()

GOBJECT_AVAILABLE_IN_ALL void g_type_module_unuse ( GTypeModule * module)

◆ g_type_module_use()

GOBJECT_AVAILABLE_IN_ALL gboolean g_type_module_use ( GTypeModule * module)