Class
GObjectTypeModule
since: 2.0
Description
abstract class GObject.TypeModule : GObject.Object
implements GObject.TypePlugin {
use_count: guint,
type_infos: GSList*,
interface_infos: GSList*,
name: gchar*
}
GTypeModule provides a simple implementation of the GTypePlugin
interface.
The model of GTypeModule is a dynamically loaded module which
implements some number of types and interface implementations.
When the module is loaded, it registers its types and interfaces
using g_type_module_register_type() and
g_type_module_add_interface().
As long as any instances of these types and interface implementations
are in use, the module is kept loaded. When the types and interfaces
are gone, the module may be unloaded. If the types and interfaces
become used again, the module will be reloaded. Note that the last
reference cannot be released from within the module code, since that
would lead to the caller’s code being unloaded before g_object_unref()
returns to it.
Keeping track of whether the module should be loaded or not is done by
using a use count - it starts at zero, and whenever it is greater than
zero, the module is loaded. The use count is maintained internally by
the type system, but also can be explicitly controlled by
g_type_module_use() and g_type_module_unuse().
Typically, when loading a module for the first type, g_type_module_use()
will be used to load it so that it can initialize its types. At some later
point, when the module no longer needs to be loaded except for the type
implementations it contains, g_type_module_unuse() is called.
GTypeModule does not actually provide any implementation of module
loading and unloading. To create a particular module type you must
derive from GTypeModule and implement the load and unload functions
in GTypeModuleClass.
Available since: 2.0
Instance methods
g_type_module_add_interface
Registers an additional interface for a type, whose interface lives in the given type plugin. If the interface was already registered for the type in this plugin, nothing will be done.
since: 2.0
g_type_module_register_enum
Looks up or registers an enumeration that is implemented with a particular
type plugin. If a type with name type_name was previously registered,
the GType identifier for the type is returned, otherwise the type
is newly registered, and the resulting GType identifier returned.
since: 2.6
g_type_module_register_flags
Looks up or registers a flags type that is implemented with a particular
type plugin. If a type with name type_name was previously registered,
the GType identifier for the type is returned, otherwise the type
is newly registered, and the resulting GType identifier returned.
since: 2.6
g_type_module_register_type
Looks up or registers a type that is implemented with a particular
type plugin. If a type with name type_name was previously registered,
the GType identifier for the type is returned, otherwise the type
is newly registered, and the resulting GType identifier returned.
since: 2.0
g_type_module_unuse
Decreases the use count of a GTypeModule by one. If the
result is zero, the module will be unloaded. (However, the
GTypeModule will not be freed, and types associated with the
GTypeModule are not unregistered. Once a GTypeModule is
initialized, it must exist forever.)
since: 2.0
g_type_module_use
Increases the use count of a GTypeModule by one. If the
use count was zero before, the plugin will be loaded.
If loading the plugin fails, the use count is reset to
its prior value.
since: 2.0
Methods inherited from GTypePlugin (4)
g_type_plugin_complete_interface_info
Calls the complete_interface_info function from the
GTypePluginClass of plugin. There should be no need to use this
function outside of the GObject type system itself.
since: 2.0
g_type_plugin_complete_type_info
Calls the complete_type_info function from the GTypePluginClass of plugin.
There should be no need to use this function outside of the GObject
type system itself.
since: 2.0
g_type_plugin_unuse
Calls the unuse_plugin function from the GTypePluginClass of
plugin. There should be no need to use this function outside of
the GObject type system itself.
since: 2.0
g_type_plugin_use
Calls the use_plugin function from the GTypePluginClass of
plugin. There should be no need to use this function outside of
the GObject type system itself.
since: 2.0
Signals
Signals inherited from GObject (1)
GObject::notify
The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.
since: 2.0
Class structure
struct GObjectTypeModuleClass {
GObjectClass parent_class;
gboolean (* load) (
GTypeModule* module
);
void (* unload) (
GTypeModule* module
);
void (* reserved1) (
void
);
void (* reserved2) (
void
);
void (* reserved3) (
void
);
void (* reserved4) (
void
);
}
In order to implement dynamic loading of types based on GTypeModule,
the load and unload functions in GTypeModuleClass must be implemented.
Class members
parent_class: GObjectClassThe parent class.
load: gboolean (* load) ( GTypeModule* module )Loads the module and registers one or more types using g_type_module_register_type().
unload: void (* unload) ( GTypeModule* module )Unloads the module.
reserved1: void (* reserved1) ( void )- No description available.
reserved2: void (* reserved2) ( void )- No description available.
reserved3: void (* reserved3) ( void )- No description available.
reserved4: void (* reserved4) ( void )- No description available.
Virtual methods
GObject.TypeModuleClass.load
Loads the module and registers one or more types using g_type_module_register_type().
since: 2.0