GObject.TypePlugin¶
| Implementations: | |
|---|---|
| GObject.TypeModule | |
Methods¶
| complete_interface_info(instance_type, interface_type, info) | |
| complete_type_info(g_type, info, value_table) | |
| unuse() | |
| use() | 
Virtual Methods¶
None
Properties¶
None
Signals¶
None
Fields¶
None
Class Details¶
- 
class GObject.TypePlugin¶
- Bases: - GObject.GInterface- The - GObject.Objecttype system supports dynamic loading of types. The- GObject.TypePlugininterface is used to handle the lifecycle of dynamically loaded types. It goes as follows:- The type is initially introduced (usually upon loading the module the first time, or by your main application that knows what modules introduces what types), like this: - new_type_id = g_type_register_dynamic (parent_type_id, "TypeName", new_type_plugin, type_flags); - where new_type_plugin is an implementation of the - GObject.TypePlugininterface.- The type’s implementation is referenced, e.g. through - GObject.TypeClass.ref() or through g_type_create_instance() (this is being called by g_object_new()) or through one of the above done on a type derived from new_type_id.- This causes the type system to load the type’s implementation by calling - GObject.TypePlugin.use() and- GObject.TypePlugin.complete_type_info() on new_type_plugin.- At some point the type’s implementation isn’t required anymore, e.g. after - GObject.TypeClass.unref() or- GObject.type_free_instance() (called when the reference count of an instance drops to zero).- This causes the type system to throw away the information retrieved from - GObject.TypePlugin.complete_type_info() and then it calls- GObject.TypePlugin.unuse() on new_type_plugin.- Things may repeat from the second step. - So basically, you need to implement a - GObject.TypePlugintype that carries a use_count, once use_count goes from zero to one, you need to load the implementation to successfully handle the upcoming- GObject.TypePlugin.complete_type_info() call. Later, maybe after succeeding use/unuse calls, once use_count drops to zero, you can unload the implementation again. The type system makes sure to call- GObject.TypePlugin.use() and- GObject.TypePlugin.complete_type_info() again when the type is needed again.- GObject.TypeModuleis an implementation of- GObject.TypePluginthat already implements most of this except for the actual module loading and unloading. It even handles multiple registered types per module.- 
complete_interface_info(instance_type, interface_type, info)[source]¶
- Parameters: - instance_type (GObject.GType) – theGObject.GTypeof an instantiable type to which the interface is added
- interface_type (GObject.GType) – theGObject.GTypeof the interface whose info is completed
- info (GObject.InterfaceInfo) – theGObject.InterfaceInfoto fill in
 - Calls the complete_interface_info function from the - GObject.TypePluginClassof self. There should be no need to use this function outside of the- GObject.Objecttype system itself.
- instance_type (
 - 
complete_type_info(g_type, info, value_table)[source]¶
- Parameters: - g_type (GObject.GType) – theGObject.GTypewhose info is completed
- info (GObject.TypeInfo) – theGObject.TypeInfostruct to fill in
- value_table (GObject.TypeValueTable) – theGObject.TypeValueTableto fill in
 - Calls the complete_type_info function from the - GObject.TypePluginClassof self. There should be no need to use this function outside of the- GObject.Objecttype system itself.
- g_type (
 - 
unuse()[source]¶
- Calls the unuse_plugin function from the - GObject.TypePluginClassof self. There should be no need to use this function outside of the- GObject.Objecttype system itself.
 - 
use()[source]¶
- Calls the use_plugin function from the - GObject.TypePluginClassof self. There should be no need to use this function outside of the- GObject.Objecttype system itself.
 
-