1 <!-- ##### SECTION ./tmpl/closures.sgml:Long_Description ##### -->
7 <!-- ##### SECTION ./tmpl/closures.sgml:See_Also ##### -->
13 <!-- ##### SECTION ./tmpl/closures.sgml:Short_Description ##### -->
17 <!-- ##### SECTION ./tmpl/closures.sgml:Title ##### -->
21 <!-- ##### SECTION ./tmpl/enumerations_flags.sgml:Long_Description ##### -->
27 <!-- ##### SECTION ./tmpl/enumerations_flags.sgml:See_Also ##### -->
33 <!-- ##### SECTION ./tmpl/enumerations_flags.sgml:Short_Description ##### -->
37 <!-- ##### SECTION ./tmpl/enumerations_flags.sgml:Title ##### -->
38 Enumeration and Flag Types
41 <!-- ##### SECTION ./tmpl/gboxed.sgml:Long_Description ##### -->
47 <!-- ##### SECTION ./tmpl/gboxed.sgml:See_Also ##### -->
53 <!-- ##### SECTION ./tmpl/gboxed.sgml:Short_Description ##### -->
57 <!-- ##### SECTION ./tmpl/gboxed.sgml:Title ##### -->
61 <!-- ##### SECTION ./tmpl/generic_values.sgml:Long_Description ##### -->
67 <!-- ##### SECTION ./tmpl/generic_values.sgml:See_Also ##### -->
73 <!-- ##### SECTION ./tmpl/generic_values.sgml:Short_Description ##### -->
77 <!-- ##### SECTION ./tmpl/generic_values.sgml:Title ##### -->
81 <!-- ##### SECTION ./tmpl/gtypemodule.sgml.sgml:Long_Description ##### -->
87 <!-- ##### SECTION ./tmpl/gtypemodule.sgml.sgml:See_Also ##### -->
93 <!-- ##### SECTION ./tmpl/gtypemodule.sgml.sgml:Short_Description ##### -->
97 <!-- ##### SECTION ./tmpl/gtypemodule.sgml.sgml:Title ##### -->
101 <!-- ##### SECTION ./tmpl/gtypemodule.sgml:Long_Description ##### -->
103 #GTypeModule provides a simple implementation of the #GTypePlugin
104 interface. The model of #GTypeModule is a dynamically loaded module
105 which implements some number of types and interface
106 implementations. When the module is loaded, it registerse its types
107 and interfaces using g_type_module_register_type() and
108 g_type_module_add_interface(). As long as any instances of these
109 types and interface implementations are in use, the module is kept
110 loaded. When the types and interfaces are gone, the module may be
111 unloaded. If the types and interfaces become used again, the module
115 Keeping track of whether the module should be loaded or not is done by
116 using a use count - it starts at zero, and whenever it is greater than
117 zero, the module is loaded. The use count is maintained internally by
118 the type system, but also can be explicitely controlled by
119 g_type_module_use() and g_type_module_unuse(). Typically, when loading
120 a module for the first type, g_type_module_use() will be used to load
121 it so that it can initialize its types. At some later point, when the
122 module no longer needs to be loaded except for the type
123 implementations it contains, g_type_module_unuse() is called.
126 #GTypeModule does not actually provide any implementation of module
127 loading and unloading. To create a particular module type you must
128 derive from #GTypeModule and implement the load and unload functions
129 in #GTypeModuleClass.
133 <!-- ##### SECTION ./tmpl/gtypemodule.sgml:See_Also ##### -->
138 <term>#GTypePlugin</term>
139 <listitem><para>The abstract type loader interface.</para></listitem>
143 <term>#GModule</term>
144 <listitem><para>Portable mechanism for dynamically loaded modules.</para></listitem>
151 <!-- ##### SECTION ./tmpl/gtypemodule.sgml:Short_Description ##### -->
155 <!-- ##### SECTION ./tmpl/gtypemodule.sgml:Title ##### -->
159 <!-- ##### SECTION ./tmpl/gtypeplugin.sgml:Long_Description ##### -->
165 <!-- ##### SECTION ./tmpl/gtypeplugin.sgml:See_Also ##### -->
171 <!-- ##### SECTION ./tmpl/gtypeplugin.sgml:Short_Description ##### -->
175 <!-- ##### SECTION ./tmpl/gtypeplugin.sgml:Title ##### -->
179 <!-- ##### SECTION ./tmpl/objects.sgml:Long_Description ##### -->
185 <!-- ##### SECTION ./tmpl/objects.sgml:See_Also ##### -->
191 <!-- ##### SECTION ./tmpl/objects.sgml:Short_Description ##### -->
195 <!-- ##### SECTION ./tmpl/objects.sgml:Title ##### -->
199 <!-- ##### SECTION ./tmpl/param_specs.sgml:Long_Description ##### -->
205 <!-- ##### SECTION ./tmpl/param_specs.sgml:See_Also ##### -->
211 <!-- ##### SECTION ./tmpl/param_specs.sgml:Short_Description ##### -->
215 <!-- ##### SECTION ./tmpl/param_specs.sgml:Title ##### -->
216 Parameter Specifications
219 <!-- ##### SECTION ./tmpl/signals.sgml:Long_Description ##### -->
221 The basic concept of the signal system is that of the <emphasis>emission</emphasis>
223 Signals are introduced per-type and are identified through strings.
224 Signals introduced for a parent type are availale in derived types as well,
225 so basically they are a per-type facility that is inherited.
226 A signal emission mainly involves invocation of a certain set of callbacks in
227 precisely defined manner. There are two main categories of such callbacks,
229 <footnote><para> Although signals can deal with any kind of type, i'm
230 referring to those types as "object types" in the following, simply
231 because that is the context most users will encounter signals in.
233 ones and user provided ones.
234 The per-object callbacks are most often referred to as "object method
235 handler" or "default (signal) handler", while user provided callbacks are
236 usually just called "signal handler".
237 The object method handler is provided at signal creation time (this most
238 frequently happens at the end of an object class' creation), while user
239 provided handlers are frequently connected and disconnected to/from a certain
240 signal on certain object instances.
243 A signal emission consists of five stages, unless prematurely stopped:
245 <varlistentry><term></term><listitem><para>
246 1 - Invocation of the object method handler for %G_SIGNAL_RUN_FIRST signals
247 </para></listitem></varlistentry>
248 <varlistentry><term></term><listitem><para>
249 2 - Invocation of normal user-provided signal handlers (<emphasis>after</emphasis> flag %FALSE)
250 </para></listitem></varlistentry>
251 <varlistentry><term></term><listitem><para>
252 3 - Invocation of the object method handler for %G_SIGNAL_RUN_LAST signals
253 </para></listitem></varlistentry>
254 <varlistentry><term></term><listitem><para>
255 4 - Invocation of user provided signal handlers, connected with an <emphasis>after</emphasis> flag of %TRUE
256 </para></listitem></varlistentry>
257 <varlistentry><term></term><listitem><para>
258 5 - Invocation of the object method handler for %G_SIGNAL_RUN_CLEANUP signals
259 </para></listitem></varlistentry>
261 The user provided signal handlers are called in the order they were
263 All handlers may prematurely stop a signal emission, and any number of
264 handlers may be connected, disconnected, blocked or unblocked during
266 There are certain criteria for skipping user handlers in stages 2 and 4
267 of a signal emission.
268 First, user handlers may be <emphasis>blocked</emphasis>, blocked handlers are omitted
269 during callback invocation, to return from the "blocked" state, a
270 handler has to get unblocked exactly the same amount of times
271 it has been blocked before.
272 Second, upon emission of a %G_SIGNAL_DETAILED signal, an additional
273 "detail" argument passed in to g_signal_emit() has to match the detail
274 argument of the signal handler currently subject to invocation.
275 Specification of no detail argument for signal handlers (omission of the
276 detail part of the signal specification upon connection) serves as a
277 wildcard and matches any detail argument passed in to emission.
281 <!-- ##### SECTION ./tmpl/signals.sgml:See_Also ##### -->
287 <!-- ##### SECTION ./tmpl/signals.sgml:Short_Description ##### -->
288 Signals provide a means for customization of object behaviour and are used
289 as general purpose notification mechanism.
292 <!-- ##### SECTION ./tmpl/signals.sgml:Title ##### -->
296 <!-- ##### SECTION ./tmpl/standard_params.sgml:Long_Description ##### -->
302 <!-- ##### SECTION ./tmpl/standard_params.sgml:See_Also ##### -->
308 <!-- ##### SECTION ./tmpl/standard_params.sgml:Short_Description ##### -->
312 <!-- ##### SECTION ./tmpl/standard_params.sgml:Title ##### -->
313 Standard Parameter Types
316 <!-- ##### SECTION ./tmpl/value_collection.sgml:Long_Description ##### -->
322 <!-- ##### SECTION ./tmpl/value_collection.sgml:See_Also ##### -->
328 <!-- ##### SECTION ./tmpl/value_collection.sgml:Short_Description ##### -->
332 <!-- ##### SECTION ./tmpl/value_collection.sgml:Title ##### -->
333 Varargs Value Collection
336 <!-- ##### SECTION ./tmpl/value_types.sgml:Long_Description ##### -->
342 <!-- ##### SECTION ./tmpl/value_types.sgml:See_Also ##### -->
348 <!-- ##### SECTION ./tmpl/value_types.sgml:Short_Description ##### -->
352 <!-- ##### SECTION ./tmpl/value_types.sgml:Title ##### -->
356 <!-- ##### USER_FUNCTION GObjectGetParamFunc ##### -->
367 <!-- ##### USER_FUNCTION GObjectSetParamFunc ##### -->
378 <!-- ##### ENUM GSignalType ##### -->
385 @G_SIGNAL_RUN_CLEANUP:
386 @G_SIGNAL_NO_RECURSE:
390 <!-- ##### USER_FUNCTION GTypePluginFillInterfaceInfo ##### -->
400 <!-- ##### USER_FUNCTION GTypePluginFillTypeInfo ##### -->
410 <!-- ##### USER_FUNCTION GTypePluginRef ##### -->
417 <!-- ##### USER_FUNCTION GTypePluginUnRef ##### -->
424 <!-- ##### STRUCT GTypePluginVTable ##### -->
432 @complete_interface_info:
434 <!-- ##### MACRO G_IS_PARAM_VALUE ##### -->
442 <!-- ##### MACRO G_NOTIFY_PRIORITY ##### -->
448 <!-- ##### MACRO G_WARN_INVALID_PARAM_ID ##### -->
457 <!-- ##### FUNCTION g_object_class_find_param_spec ##### -->
466 <!-- ##### FUNCTION g_object_class_install_param ##### -->
475 <!-- ##### FUNCTION g_object_get_param ##### -->
484 <!-- ##### FUNCTION g_object_queue_param_changed ##### -->
492 <!-- ##### FUNCTION g_object_set_param ##### -->
501 <!-- ##### FUNCTION g_param_spec_hash_table_insert ##### -->
510 <!-- ##### FUNCTION g_param_spec_hash_table_lookup ##### -->
522 <!-- ##### FUNCTION g_param_spec_hash_table_new ##### -->
529 <!-- ##### FUNCTION g_param_spec_hash_table_remove ##### -->
537 <!-- ##### FUNCTION g_signal_type_closure_new ##### -->
546 <!-- ##### FUNCTION g_signals_destroy ##### -->
553 <!-- ##### FUNCTION g_type_conforms_to ##### -->
562 <!-- ##### FUNCTION g_type_instance_conforms_to ##### -->
571 <!-- ##### FUNCTION g_type_is_dynamic ##### -->
580 <!-- ##### FUNCTION g_type_value_conforms_to ##### -->