Merge lp:~attente/gobject-introspection/glib-gio-gir into lp:ubuntu/saucy/gobject-introspection

Proposed by William Hua
Status: Rejected
Rejected by: Martin Pitt
Proposed branch: lp:~attente/gobject-introspection/glib-gio-gir
Merge into: lp:ubuntu/saucy/gobject-introspection
Diff against target: 71296 lines (+71170/-4)
8 files modified
.pc/applied-patches (+1/-0)
.pc/update-gir-for-gicon-support.patch/gir/gio-2.0.c (+33538/-0)
.pc/update-gir-for-gicon-support.patch/gir/glib-2.0.c (+33976/-0)
debian/changelog (+7/-0)
debian/patches/series (+1/-0)
debian/patches/update-gir-for-gicon-support.patch (+2064/-0)
gir/gio-2.0.c (+1556/-4)
gir/glib-2.0.c (+27/-0)
To merge this branch: bzr merge lp:~attente/gobject-introspection/glib-gio-gir
Reviewer Review Type Date Requested Status
Martin Pitt Disapprove
Review via email: mp+170142@code.launchpad.net

Commit message

Cherry pick commit 70cc4b9479943ec95d3b95b1786b79c9bfd2cce0 from upstream to get added GBytesIcon and GMenuModel icon support.

Description of the change

Cherry pick commit 70cc4b9479943ec95d3b95b1786b79c9bfd2cce0 from upstream to get added GBytesIcon and GMenuModel icon support.

To post a comment you must log in.
Revision history for this message
Martin Pitt (pitti) wrote :

It seems you forgot to actually bzr add the new patch.

Also, can you please link this to an upstream bug/patch? I'd really like to fix this in upstream gobject-introspection and then sync it via Debian. I don't want the API in Ubuntu be different than upstream/Debian/other distros.

Thanks!

review: Needs Fixing
Revision history for this message
Martin Pitt (pitti) wrote :

Rejecting because of above reason. Please feel free to subscribe me to the upstream bug, I'll handle it in due course.

review: Disapprove
Revision history for this message
Martin Pitt (pitti) wrote :

Oh sorry, the preview diff here was truncated. How did you generate that patch? Just regenerating the annotations with misc/update-glib-annotations.py ? Or did you actually change annotations in glib for this?

Revision history for this message
William Hua (attente) wrote :

Hi, sorry for neglecting this for so long. I reverted the original annotations update which I had regenerated manually, and replaced it with a cherry pick of commit 70cc4b9479943ec95d3b95b1786b79c9bfd2cce0 from upstream.

Revision history for this message
Martin Pitt (pitti) wrote :

I just uploaded g-i 1.37.4, this patch should be included there.

Unmerged revisions

44. By William Hua

Cherry pick 70cc4b9479943ec95d3b95b1786b79c9bfd2cce0 from upstream.

43. By William Hua

Revert debian/patches/update-gir-for-gicon-support.patch.

42. By William Hua

* debian/patches/update-gir-for-gicon-support.patch:
  - Update glib-2.0.gir and gio-2.0.gir from source annotations.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file '.pc/applied-patches'
2--- .pc/applied-patches 1970-01-01 00:00:00 +0000
3+++ .pc/applied-patches 2013-06-18 17:04:26 +0000
4@@ -0,0 +1,1 @@
5+update-gir-for-gicon-support.patch
6
7=== removed file '.pc/applied-patches'
8=== added directory '.pc/update-gir-for-gicon-support.patch'
9=== added directory '.pc/update-gir-for-gicon-support.patch/gir'
10=== added file '.pc/update-gir-for-gicon-support.patch/gir/gio-2.0.c'
11--- .pc/update-gir-for-gicon-support.patch/gir/gio-2.0.c 1970-01-01 00:00:00 +0000
12+++ .pc/update-gir-for-gicon-support.patch/gir/gio-2.0.c 2013-06-18 17:04:26 +0000
13@@ -0,0 +1,33538 @@
14+/************************************************************/
15+/* THIS FILE IS GENERATED DO NOT EDIT */
16+/************************************************************/
17+
18+/**
19+ * GAction:enabled:
20+ *
21+ * If @action is currently enabled.
22+ *
23+ * If the action is disabled then calls to g_action_activate() and
24+ * g_action_change_state() have no effect.
25+ *
26+ * Since: 2.28
27+ */
28+
29+
30+/**
31+ * GAction:name:
32+ *
33+ * The name of the action. This is mostly meaningful for identifying
34+ * the action once it has been added to a #GActionGroup.
35+ *
36+ * Since: 2.28
37+ */
38+
39+
40+/**
41+ * GAction:parameter-type:
42+ *
43+ * The type of the parameter that must be given when activating the
44+ * action.
45+ *
46+ * Since: 2.28
47+ */
48+
49+
50+/**
51+ * GAction:state:
52+ *
53+ * The state of the action, or %NULL if the action is stateless.
54+ *
55+ * Since: 2.28
56+ */
57+
58+
59+/**
60+ * GAction:state-type:
61+ *
62+ * The #GVariantType of the state that the action has, or %NULL if the
63+ * action is stateless.
64+ *
65+ * Since: 2.28
66+ */
67+
68+
69+/**
70+ * GActionEntry:
71+ * @name: the name of the action
72+ * @activate: the callback to connect to the "activate" signal of the action
73+ * @parameter_type: the type of the parameter that must be passed to the activate function for this action, given as a single GVariant type string (or %NULL for no parameter)
74+ * @state: the initial state for this action, given in GVariant text format. The state is parsed with no extra type information, so type tags must be added to the string if they are necessary.
75+ * @change_state: the callback to connect to the "change-state" signal of the action
76+ *
77+ * This struct defines a single action. It is for use with
78+ * g_action_map_add_action_entries().
79+ *
80+ * The order of the items in the structure are intended to reflect
81+ * frequency of use. It is permissible to use an incomplete initialiser
82+ * in order to leave some of the later values as %NULL. All values
83+ * after @name are optional. Additional optional fields may be added in
84+ * the future.
85+ *
86+ * See g_action_map_add_action_entries() for an example.
87+ */
88+
89+
90+/**
91+ * GActionGroup::action-added:
92+ * @action_group: the #GActionGroup that changed
93+ * @action_name: the name of the action in @action_group
94+ *
95+ * Signals that a new action was just added to the group.
96+ * This signal is emitted after the action has been added
97+ * and is now visible.
98+ *
99+ * Since: 2.28
100+ */
101+
102+
103+/**
104+ * GActionGroup::action-enabled-changed:
105+ * @action_group: the #GActionGroup that changed
106+ * @action_name: the name of the action in @action_group
107+ * @enabled: whether the action is enabled or not
108+ *
109+ * Signals that the enabled status of the named action has changed.
110+ *
111+ * Since: 2.28
112+ */
113+
114+
115+/**
116+ * GActionGroup::action-removed:
117+ * @action_group: the #GActionGroup that changed
118+ * @action_name: the name of the action in @action_group
119+ *
120+ * Signals that an action is just about to be removed from the group.
121+ * This signal is emitted before the action is removed, so the action
122+ * is still visible and can be queried from the signal handler.
123+ *
124+ * Since: 2.28
125+ */
126+
127+
128+/**
129+ * GActionGroup::action-state-changed:
130+ * @action_group: the #GActionGroup that changed
131+ * @action_name: the name of the action in @action_group
132+ * @value: the new value of the state
133+ *
134+ * Signals that the state of the named action has changed.
135+ *
136+ * Since: 2.28
137+ */
138+
139+
140+/**
141+ * GActionGroupInterface:
142+ * @has_action: the virtual function pointer for g_action_group_has_action()
143+ * @list_actions: the virtual function pointer for g_action_group_list_actions()
144+ * @get_action_parameter_type: the virtual function pointer for g_action_group_get_action_parameter_type()
145+ * @get_action_state_type: the virtual function pointer for g_action_group_get_action_state_type()
146+ * @get_action_state_hint: the virtual function pointer for g_action_group_get_action_state_hint()
147+ * @get_action_enabled: the virtual function pointer for g_action_group_get_action_enabled()
148+ * @get_action_state: the virtual function pointer for g_action_group_get_action_state()
149+ * @change_action_state: the virtual function pointer for g_action_group_change_action_state()
150+ * @query_action: the virtual function pointer for g_action_group_query_action()
151+ * @activate_action: the virtual function pointer for g_action_group_activate_action()
152+ * @action_added: the class closure for the #GActionGroup::action-added signal
153+ * @action_removed: the class closure for the #GActionGroup::action-removed signal
154+ * @action_enabled_changed: the class closure for the #GActionGroup::action-enabled-changed signal
155+ * @action_state_changed: the class closure for the #GActionGroup::action-enabled-changed signal
156+ *
157+ * The virtual function table for #GActionGroup.
158+ *
159+ * Since: 2.28
160+ */
161+
162+
163+/**
164+ * GActionInterface:
165+ * @get_name: the virtual function pointer for g_action_get_name()
166+ * @get_parameter_type: the virtual function pointer for g_action_get_parameter_type()
167+ * @get_state_type: the virtual function pointer for g_action_get_state_type()
168+ * @get_state_hint: the virtual function pointer for g_action_get_state_hint()
169+ * @get_enabled: the virtual function pointer for g_action_get_enabled()
170+ * @get_state: the virtual function pointer for g_action_get_state()
171+ * @change_state: the virtual function pointer for g_action_change_state()
172+ * @activate: the virtual function pointer for g_action_activate(). Note that #GAction does not have an 'activate' signal but that implementations of it may have one.
173+ *
174+ * The virtual function table for #GAction.
175+ *
176+ * Since: 2.28
177+ */
178+
179+
180+/**
181+ * GActionMapInterface:
182+ * @lookup_action: the virtual function pointer for g_action_map_lookup_action()
183+ * @add_action: the virtual function pointer for g_action_map_add_action()
184+ * @remove_action: the virtual function pointer for g_action_map_remove_action()
185+ *
186+ * The virtual function table for #GActionMap.
187+ *
188+ * Since: 2.32
189+ */
190+
191+
192+/**
193+ * GApplication::activate:
194+ * @application: the application
195+ *
196+ * The ::activate signal is emitted on the primary instance when an
197+ * activation occurs. See g_application_activate().
198+ */
199+
200+
201+/**
202+ * GApplication::command-line:
203+ * @application: the application
204+ * @command_line: a #GApplicationCommandLine representing the passed commandline
205+ *
206+ * The ::command-line signal is emitted on the primary instance when
207+ * a commandline is not handled locally. See g_application_run() and
208+ * the #GApplicationCommandLine documentation for more information.
209+ *
210+ * Returns: An integer that is set as the exit status for the calling process. See g_application_command_line_set_exit_status().
211+ */
212+
213+
214+/**
215+ * GApplication::open:
216+ * @application: the application
217+ * @files: (array length=n_files) (element-type GFile): an array of #GFiles
218+ * @n_files: the length of @files
219+ * @hint: a hint provided by the calling instance
220+ *
221+ * The ::open signal is emitted on the primary instance when there are
222+ * files to open. See g_application_open() for more information.
223+ */
224+
225+
226+/**
227+ * GApplication::shutdown:
228+ * @application: the application
229+ *
230+ * The ::shutdown signal is emitted only on the registered primary instance
231+ * immediately after the main loop terminates.
232+ */
233+
234+
235+/**
236+ * GApplication::startup:
237+ * @application: the application
238+ *
239+ * The ::startup signal is emitted on the primary instance immediately
240+ * after registration. See g_application_register().
241+ */
242+
243+
244+/**
245+ * GApplicationClass:
246+ * @startup: invoked on the primary instance immediately after registration
247+ * @shutdown: invoked only on the registered primary instance immediately after the main loop terminates
248+ * @activate: invoked on the primary instance when an activation occurs
249+ * @open: invoked on the primary instance when there are files to open
250+ * @command_line: invoked on the primary instance when a command-line is not handled locally
251+ * @local_command_line: invoked (locally) when the process has been invoked via commandline execution (as opposed to, say, D-Bus activation - which is not currently supported by GApplication). The virtual function has the chance to inspect (and possibly replace) the list of command line arguments. See g_application_run() for more information.
252+ * @before_emit: invoked on the primary instance before 'activate', 'open', 'command-line' or any action invocation, gets the 'platform data' from the calling instance
253+ * @after_emit: invoked on the primary instance after 'activate', 'open', 'command-line' or any action invocation, gets the 'platform data' from the calling instance
254+ * @add_platform_data: invoked (locally) to add 'platform data' to be sent to the primary instance when activating, opening or invoking actions
255+ * @quit_mainloop: Used to be invoked on the primary instance when the use count of the application drops to zero (and after any inactivity timeout, if requested). Not used anymore since 2.32
256+ * @run_mainloop: Used to be invoked on the primary instance from g_application_run() if the use-count is non-zero. Since 2.32, GApplication is iterating the main context directly and is not using @run_mainloop anymore
257+ * @dbus_register: invoked locally during registration, if the application is using its D-Bus backend. You can use this to export extra objects on the bus, that need to exist before the application tries to own the bus name. The function is passed the #GDBusConnection to to session bus, and the object path that #GApplication will use to export is D-Bus API. If this function returns %TRUE, registration will proceed; otherwise registration will abort. Since: 2.34
258+ * @dbus_unregister: invoked locally during unregistration, if the application is using its D-Bus backend. Use this to undo anything done by the @dbus_register vfunc. Since: 2.34
259+ *
260+ * Virtual function table for #GApplication.
261+ *
262+ * Since: 2.28
263+ */
264+
265+
266+/**
267+ * GApplicationCommandLineClass:
268+ *
269+ * The <structname>GApplicationCommandLineClass</structname> structure
270+ * contains private data only
271+ *
272+ * Since: 2.28
273+ */
274+
275+
276+/**
277+ * GCancellable::cancelled:
278+ * @cancellable: a #GCancellable.
279+ *
280+ * Emitted when the operation has been cancelled.
281+ *
282+ * Can be used by implementations of cancellable operations. If the
283+ * operation is cancelled from another thread, the signal will be
284+ * emitted in the thread that cancelled the operation, not the
285+ * thread that is running the operation.
286+ *
287+ * Note that disconnecting from this signal (or any signal) in a
288+ * multi-threaded program is prone to race conditions. For instance
289+ * it is possible that a signal handler may be invoked even
290+ * <emphasis>after</emphasis> a call to
291+ * g_signal_handler_disconnect() for that handler has already
292+ * returned.
293+ *
294+ * There is also a problem when cancellation happen
295+ * right before connecting to the signal. If this happens the
296+ * signal will unexpectedly not be emitted, and checking before
297+ * connecting to the signal leaves a race condition where this is
298+ * still happening.
299+ *
300+ * In order to make it safe and easy to connect handlers there
301+ * are two helper functions: g_cancellable_connect() and
302+ * g_cancellable_disconnect() which protect against problems
303+ * like this.
304+ *
305+ * An example of how to us this:
306+ * |[
307+ * /<!-- -->* Make sure we don't do any unnecessary work if already cancelled *<!-- -->/
308+ * if (g_cancellable_set_error_if_cancelled (cancellable))
309+ * return;
310+ *
311+ * /<!-- -->* Set up all the data needed to be able to
312+ * * handle cancellation of the operation *<!-- -->/
313+ * my_data = my_data_new (...);
314+ *
315+ * id = 0;
316+ * if (cancellable)
317+ * id = g_cancellable_connect (cancellable,
318+ * G_CALLBACK (cancelled_handler)
319+ * data, NULL);
320+ *
321+ * /<!-- -->* cancellable operation here... *<!-- -->/
322+ *
323+ * g_cancellable_disconnect (cancellable, id);
324+ *
325+ * /<!-- -->* cancelled_handler is never called after this, it
326+ * * is now safe to free the data *<!-- -->/
327+ * my_data_free (my_data);
328+ * ]|
329+ *
330+ * Note that the cancelled signal is emitted in the thread that
331+ * the user cancelled from, which may be the main thread. So, the
332+ * cancellable signal should not do something that can block.
333+ */
334+
335+
336+/**
337+ * GCharsetConverter:
338+ *
339+ * Conversions between character sets.
340+ */
341+
342+
343+/**
344+ * GCredentials:
345+ *
346+ * The #GCredentials structure contains only private data and
347+ * should only be accessed using the provided API.
348+ *
349+ * Since: 2.26
350+ */
351+
352+
353+/**
354+ * GCredentialsClass:
355+ *
356+ * Class structure for #GCredentials.
357+ *
358+ * Since: 2.26
359+ */
360+
361+
362+/**
363+ * GDBusAuthMechanism:credentials:
364+ *
365+ * If authenticating as a server, this property contains the
366+ * received credentials, if any.
367+ *
368+ * If authenticating as a client, the property contains the
369+ * credentials that were sent, if any.
370+ */
371+
372+
373+/**
374+ * GDBusAuthObserver:
375+ *
376+ * The #GDBusAuthObserver structure contains only private data and
377+ * should only be accessed using the provided API.
378+ *
379+ * Since: 2.26
380+ */
381+
382+
383+/**
384+ * GDBusAuthObserver::allow-mechanism:
385+ * @observer: The #GDBusAuthObserver emitting the signal.
386+ * @mechanism: The name of the mechanism, e.g. <literal>DBUS_COOKIE_SHA1</literal>.
387+ *
388+ * Emitted to check if @mechanism is allowed to be used.
389+ *
390+ * Returns: %TRUE if @mechanism can be used to authenticate the other peer, %FALSE if not.
391+ * Since: 2.34
392+ */
393+
394+
395+/**
396+ * GDBusAuthObserver::authorize-authenticated-peer:
397+ * @observer: The #GDBusAuthObserver emitting the signal.
398+ * @stream: A #GIOStream for the #GDBusConnection.
399+ * @credentials: (allow-none): Credentials received from the peer or %NULL.
400+ *
401+ * Emitted to check if a peer that is successfully authenticated
402+ * is authorized.
403+ *
404+ * Returns: %TRUE if the peer is authorized, %FALSE if not.
405+ * Since: 2.26
406+ */
407+
408+
409+/**
410+ * GDBusAuthObserverClass:
411+ * @authorize_authenticated_peer: Signal class handler for the #GDBusAuthObserver::authorize-authenticated-peer signal.
412+ *
413+ * Class structure for #GDBusAuthObserverClass.
414+ *
415+ * Since: 2.26
416+ */
417+
418+
419+/**
420+ * GDBusConnection:
421+ *
422+ * The #GDBusConnection structure contains only private data and
423+ * should only be accessed using the provided API.
424+ *
425+ * Since: 2.26
426+ */
427+
428+
429+/**
430+ * GDBusConnection::closed:
431+ * @connection: The #GDBusConnection emitting the signal.
432+ * @remote_peer_vanished: %TRUE if @connection is closed because the remote peer closed its end of the connection.
433+ * @error: (allow-none): A #GError with more details about the event or %NULL.
434+ *
435+ * Emitted when the connection is closed.
436+ *
437+ * The cause of this event can be
438+ * <itemizedlist>
439+ * <listitem><para>
440+ * If g_dbus_connection_close() is called. In this case
441+ * @remote_peer_vanished is set to %FALSE and @error is %NULL.
442+ * </para></listitem>
443+ * <listitem><para>
444+ * If the remote peer closes the connection. In this case
445+ * @remote_peer_vanished is set to %TRUE and @error is set.
446+ * </para></listitem>
447+ * <listitem><para>
448+ * If the remote peer sends invalid or malformed data. In this
449+ * case @remote_peer_vanished is set to %FALSE and @error
450+ * is set.
451+ * </para></listitem>
452+ * </itemizedlist>
453+ *
454+ * Upon receiving this signal, you should give up your reference to
455+ * @connection. You are guaranteed that this signal is emitted only
456+ * once.
457+ *
458+ * Since: 2.26
459+ */
460+
461+
462+/**
463+ * GDBusConnection:address:
464+ *
465+ * A D-Bus address specifying potential endpoints that can be used
466+ * when establishing the connection.
467+ *
468+ * Since: 2.26
469+ */
470+
471+
472+/**
473+ * GDBusConnection:authentication-observer:
474+ *
475+ * A #GDBusAuthObserver object to assist in the authentication process or %NULL.
476+ *
477+ * Since: 2.26
478+ */
479+
480+
481+/**
482+ * GDBusConnection:capabilities:
483+ *
484+ * Flags from the #GDBusCapabilityFlags enumeration
485+ * representing connection features negotiated with the other peer.
486+ *
487+ * Since: 2.26
488+ */
489+
490+
491+/**
492+ * GDBusConnection:closed:
493+ *
494+ * A boolean specifying whether the connection has been closed.
495+ *
496+ * Since: 2.26
497+ */
498+
499+
500+/**
501+ * GDBusConnection:exit-on-close:
502+ *
503+ * A boolean specifying whether the process will be terminated (by
504+ * calling <literal>raise(SIGTERM)</literal>) if the connection
505+ * is closed by the remote peer.
506+ *
507+ * Note that #GDBusConnection objects returned by g_bus_get_finish() and
508+ * g_bus_get_sync() will (usually) have this property set to %TRUE.
509+ *
510+ * Since: 2.26
511+ */
512+
513+
514+/**
515+ * GDBusConnection:flags:
516+ *
517+ * Flags from the #GDBusConnectionFlags enumeration.
518+ *
519+ * Since: 2.26
520+ */
521+
522+
523+/**
524+ * GDBusConnection:guid:
525+ *
526+ * The GUID of the peer performing the role of server when
527+ * authenticating.
528+ *
529+ * If you are constructing a #GDBusConnection and pass
530+ * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER in the
531+ * #GDBusConnection:flags property then you MUST also set this
532+ * property to a valid guid.
533+ *
534+ * If you are constructing a #GDBusConnection and pass
535+ * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT in the
536+ * #GDBusConnection:flags property you will be able to read the GUID
537+ * of the other peer here after the connection has been successfully
538+ * initialized.
539+ *
540+ * Since: 2.26
541+ */
542+
543+
544+/**
545+ * GDBusConnection:locked:
546+ *
547+ * A boolean specifying whether the message is locked.
548+ *
549+ * Since: 2.26
550+ */
551+
552+
553+/**
554+ * GDBusConnection:stream:
555+ *
556+ * The underlying #GIOStream used for I/O.
557+ *
558+ * If this is passed on construction and is a #GSocketConnection,
559+ * then the corresponding #GSocket will be put into non-blocking mode.
560+ *
561+ * While the #GDBusConnection is active, it will interact with this
562+ * stream from a worker thread, so it is not safe to interact with
563+ * the stream directly.
564+ *
565+ * Since: 2.26
566+ */
567+
568+
569+/**
570+ * GDBusConnection:unique-name:
571+ *
572+ * The unique name as assigned by the message bus or %NULL if the
573+ * connection is not open or not a message bus connection.
574+ *
575+ * Since: 2.26
576+ */
577+
578+
579+/**
580+ * GDBusConnectionClass:
581+ * @closed: Signal class handler for the #GDBusConnection::closed signal.
582+ *
583+ * Class structure for #GDBusConnection.
584+ *
585+ * Since: 2.26
586+ */
587+
588+
589+/**
590+ * GDBusInterfaceSkeleton::g-authorize-method:
591+ * @interface: The #GDBusInterfaceSkeleton emitting the signal.
592+ * @invocation: A #GDBusMethodInvocation.
593+ *
594+ * Emitted when a method is invoked by a remote caller and used to
595+ * determine if the method call is authorized.
596+ *
597+ * Note that this signal is emitted in a thread dedicated to
598+ * handling the method call so handlers are allowed to perform
599+ * blocking IO. This means that it is appropriate to call
600+ * e.g. <ulink
601+ * url="http://hal.freedesktop.org/docs/polkit/PolkitAuthority.html#polkit-authority-check-authorization-sync">polkit_authority_check_authorization_sync()</ulink>
602+ * with the <ulink
603+ * url="http://hal.freedesktop.org/docs/polkit/PolkitAuthority.html#POLKIT-CHECK-AUTHORIZATION-FLAGS-ALLOW-USER-INTERACTION:CAPS">POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION</ulink> flag set.
604+ *
605+ * If %FALSE is returned then no further handlers are run and the
606+ * signal handler must take a reference to @invocation and finish
607+ * handling the call (e.g. return an error via
608+ * g_dbus_method_invocation_return_error()).
609+ *
610+ * Otherwise, if %TRUE is returned, signal emission continues. If no
611+ * handlers return %FALSE, then the method is dispatched. If
612+ * @interface has an enclosing #GDBusObjectSkeleton, then the
613+ * #GDBusObjectSkeleton::authorize-method signal handlers run before
614+ * the handlers for this signal.
615+ *
616+ * The default class handler just returns %TRUE.
617+ *
618+ * Please note that the common case is optimized: if no signals
619+ * handlers are connected and the default class handler isn't
620+ * overridden (for both @interface and the enclosing
621+ * #GDBusObjectSkeleton, if any) and #GDBusInterfaceSkeleton:g-flags does
622+ * not have the
623+ * %G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD
624+ * flags set, no dedicated thread is ever used and the call will be
625+ * handled in the same thread as the object that @interface belongs
626+ * to was exported in.
627+ *
628+ * Returns: %TRUE if the call is authorized, %FALSE otherwise.
629+ * Since: 2.30
630+ */
631+
632+
633+/**
634+ * GDBusInterfaceSkeleton:g-flags:
635+ *
636+ * Flags from the #GDBusInterfaceSkeletonFlags enumeration.
637+ *
638+ * Since: 2.30
639+ */
640+
641+
642+/**
643+ * GDBusMessage:
644+ *
645+ * The #GDBusMessage structure contains only private data and should
646+ * only be accessed using the provided API.
647+ *
648+ * Since: 2.26
649+ */
650+
651+
652+/**
653+ * GDBusMessageClass:
654+ *
655+ * Class structure for #GDBusMessage.
656+ *
657+ * Since: 2.26
658+ */
659+
660+
661+/**
662+ * GDBusMethodInvocation:
663+ *
664+ * The #GDBusMethodInvocation structure contains only private data and
665+ * should only be accessed using the provided API.
666+ *
667+ * Since: 2.26
668+ */
669+
670+
671+/**
672+ * GDBusMethodInvocationClass:
673+ *
674+ * Class structure for #GDBusMethodInvocation.
675+ *
676+ * Since: 2.26
677+ */
678+
679+
680+/**
681+ * GDBusObject::interface-added:
682+ * @object: The #GDBusObject emitting the signal.
683+ * @interface: The #GDBusInterface that was added.
684+ *
685+ * Emitted when @interface is added to @object.
686+ *
687+ * Since: 2.30
688+ */
689+
690+
691+/**
692+ * GDBusObject::interface-removed:
693+ * @object: The #GDBusObject emitting the signal.
694+ * @interface: The #GDBusInterface that was removed.
695+ *
696+ * Emitted when @interface is removed from @object.
697+ *
698+ * Since: 2.30
699+ */
700+
701+
702+/**
703+ * GDBusObjectManager::interface-added:
704+ * @manager: The #GDBusObjectManager emitting the signal.
705+ * @object: The #GDBusObject on which an interface was added.
706+ * @interface: The #GDBusInterface that was added.
707+ *
708+ * Emitted when @interface is added to @object.
709+ *
710+ * This signal exists purely as a convenience to avoid having to
711+ * connect signals to all objects managed by @manager.
712+ *
713+ * Since: 2.30
714+ */
715+
716+
717+/**
718+ * GDBusObjectManager::interface-removed:
719+ * @manager: The #GDBusObjectManager emitting the signal.
720+ * @object: The #GDBusObject on which an interface was removed.
721+ * @interface: The #GDBusInterface that was removed.
722+ *
723+ * Emitted when @interface has been removed from @object.
724+ *
725+ * This signal exists purely as a convenience to avoid having to
726+ * connect signals to all objects managed by @manager.
727+ *
728+ * Since: 2.30
729+ */
730+
731+
732+/**
733+ * GDBusObjectManager::object-added:
734+ * @manager: The #GDBusObjectManager emitting the signal.
735+ * @object: The #GDBusObject that was added.
736+ *
737+ * Emitted when @object is added to @manager.
738+ *
739+ * Since: 2.30
740+ */
741+
742+
743+/**
744+ * GDBusObjectManager::object-removed:
745+ * @manager: The #GDBusObjectManager emitting the signal.
746+ * @object: The #GDBusObject that was removed.
747+ *
748+ * Emitted when @object is removed from @manager.
749+ *
750+ * Since: 2.30
751+ */
752+
753+
754+/**
755+ * GDBusObjectManagerClient::interface-proxy-properties-changed:
756+ * @manager: The #GDBusObjectManagerClient emitting the signal.
757+ * @object_proxy: The #GDBusObjectProxy on which an interface has properties that are changing.
758+ * @interface_proxy: The #GDBusProxy that has properties that are changing.
759+ * @changed_properties: A #GVariant containing the properties that changed.
760+ * @invalidated_properties: A %NULL terminated array of properties that was invalidated.
761+ *
762+ * Emitted when one or more D-Bus properties on proxy changes. The
763+ * local cache has already been updated when this signal fires. Note
764+ * that both @changed_properties and @invalidated_properties are
765+ * guaranteed to never be %NULL (either may be empty though).
766+ *
767+ * This signal exists purely as a convenience to avoid having to
768+ * connect signals to all interface proxies managed by @manager.
769+ *
770+ * This signal is emitted in the
771+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
772+ * that @manager was constructed in.
773+ *
774+ * Since: 2.30
775+ */
776+
777+
778+/**
779+ * GDBusObjectManagerClient::interface-proxy-signal:
780+ * @manager: The #GDBusObjectManagerClient emitting the signal.
781+ * @object_proxy: The #GDBusObjectProxy on which an interface is emitting a D-Bus signal.
782+ * @interface_proxy: The #GDBusProxy that is emitting a D-Bus signal.
783+ * @sender_name: The sender of the signal or NULL if the connection is not a bus connection.
784+ * @signal_name: The signal name.
785+ * @parameters: A #GVariant tuple with parameters for the signal.
786+ *
787+ * Emitted when a D-Bus signal is received on @interface_proxy.
788+ *
789+ * This signal exists purely as a convenience to avoid having to
790+ * connect signals to all interface proxies managed by @manager.
791+ *
792+ * This signal is emitted in the
793+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
794+ * that @manager was constructed in.
795+ *
796+ * Since: 2.30
797+ */
798+
799+
800+/**
801+ * GDBusObjectManagerClient:bus-type:
802+ *
803+ * If this property is not %G_BUS_TYPE_NONE, then
804+ * #GDBusObjectManagerClient:connection must be %NULL and will be set to the
805+ * #GDBusConnection obtained by calling g_bus_get() with the value
806+ * of this property.
807+ *
808+ * Since: 2.30
809+ */
810+
811+
812+/**
813+ * GDBusObjectManagerClient:connection:
814+ *
815+ * The #GDBusConnection to use.
816+ *
817+ * Since: 2.30
818+ */
819+
820+
821+/**
822+ * GDBusObjectManagerClient:flags:
823+ *
824+ * Flags from the #GDBusObjectManagerClientFlags enumeration.
825+ *
826+ * Since: 2.30
827+ */
828+
829+
830+/**
831+ * GDBusObjectManagerClient:get-proxy-type-destroy-notify:
832+ *
833+ * A #GDestroyNotify for the #gpointer user_data in #GDBusObjectManagerClient:get-proxy-type-user-data.
834+ *
835+ * Since: 2.30
836+ */
837+
838+
839+/**
840+ * GDBusObjectManagerClient:get-proxy-type-func:
841+ *
842+ * The #GDBusProxyTypeFunc to use when determining what #GType to
843+ * use for interface proxies or %NULL.
844+ *
845+ * Since: 2.30
846+ */
847+
848+
849+/**
850+ * GDBusObjectManagerClient:get-proxy-type-user-data:
851+ *
852+ * The #gpointer user_data to pass to #GDBusObjectManagerClient:get-proxy-type-func.
853+ *
854+ * Since: 2.30
855+ */
856+
857+
858+/**
859+ * GDBusObjectManagerClient:name:
860+ *
861+ * The well-known name or unique name that the manager is for.
862+ *
863+ * Since: 2.30
864+ */
865+
866+
867+/**
868+ * GDBusObjectManagerClient:name-owner:
869+ *
870+ * The unique name that owns #GDBusObjectManagerClient:name or %NULL if
871+ * no-one is currently owning the name. Connect to the
872+ * #GObject::notify signal to track changes to this property.
873+ *
874+ * Since: 2.30
875+ */
876+
877+
878+/**
879+ * GDBusObjectManagerClient:object-path:
880+ *
881+ * The object path the manager is for.
882+ *
883+ * Since: 2.30
884+ */
885+
886+
887+/**
888+ * GDBusObjectManagerServer:connection:
889+ *
890+ * The #GDBusConnection to export objects on.
891+ *
892+ * Since: 2.30
893+ */
894+
895+
896+/**
897+ * GDBusObjectManagerServer:object-path:
898+ *
899+ * The object path to register the manager object at.
900+ *
901+ * Since: 2.30
902+ */
903+
904+
905+/**
906+ * GDBusObjectProxy:g-connection:
907+ *
908+ * The connection of the proxy.
909+ *
910+ * Since: 2.30
911+ */
912+
913+
914+/**
915+ * GDBusObjectProxy:g-object-path:
916+ *
917+ * The object path of the proxy.
918+ *
919+ * Since: 2.30
920+ */
921+
922+
923+/**
924+ * GDBusObjectSkeleton::authorize-method:
925+ * @object: The #GDBusObjectSkeleton emitting the signal.
926+ * @interface: The #GDBusInterfaceSkeleton that @invocation is for.
927+ * @invocation: A #GDBusMethodInvocation.
928+ *
929+ * Emitted when a method is invoked by a remote caller and used to
930+ * determine if the method call is authorized.
931+ *
932+ * This signal is like #GDBusInterfaceSkeleton<!-- -->'s
933+ * #GDBusInterfaceSkeleton::g-authorize-method signal, except that it is
934+ * for the enclosing object.
935+ *
936+ * The default class handler just returns %TRUE.
937+ *
938+ * Returns: %TRUE if the call is authorized, %FALSE otherwise.
939+ * Since: 2.30
940+ */
941+
942+
943+/**
944+ * GDBusObjectSkeleton:g-object-path:
945+ *
946+ * The object path where the object is exported.
947+ *
948+ * Since: 2.30
949+ */
950+
951+
952+/**
953+ * GDBusProxy::g-properties-changed:
954+ * @proxy: The #GDBusProxy emitting the signal.
955+ * @changed_properties: A #GVariant containing the properties that changed
956+ * @invalidated_properties: A %NULL terminated array of properties that was invalidated
957+ *
958+ * Emitted when one or more D-Bus properties on @proxy changes. The
959+ * local cache has already been updated when this signal fires. Note
960+ * that both @changed_properties and @invalidated_properties are
961+ * guaranteed to never be %NULL (either may be empty though).
962+ *
963+ * If the proxy has the flag
964+ * %G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES set, then
965+ * @invalidated_properties will always be empty.
966+ *
967+ * This signal corresponds to the
968+ * <literal>PropertiesChanged</literal> D-Bus signal on the
969+ * <literal>org.freedesktop.DBus.Properties</literal> interface.
970+ *
971+ * Since: 2.26
972+ */
973+
974+
975+/**
976+ * GDBusProxy::g-signal:
977+ * @proxy: The #GDBusProxy emitting the signal.
978+ * @sender_name: (allow-none): The sender of the signal or %NULL if the connection is not a bus connection.
979+ * @signal_name: The name of the signal.
980+ * @parameters: A #GVariant tuple with parameters for the signal.
981+ *
982+ * Emitted when a signal from the remote object and interface that @proxy is for, has been received.
983+ *
984+ * Since: 2.26
985+ */
986+
987+
988+/**
989+ * GDBusProxy:g-bus-type:
990+ *
991+ * If this property is not %G_BUS_TYPE_NONE, then
992+ * #GDBusProxy:g-connection must be %NULL and will be set to the
993+ * #GDBusConnection obtained by calling g_bus_get() with the value
994+ * of this property.
995+ *
996+ * Since: 2.26
997+ */
998+
999+
1000+/**
1001+ * GDBusProxy:g-connection:
1002+ *
1003+ * The #GDBusConnection the proxy is for.
1004+ *
1005+ * Since: 2.26
1006+ */
1007+
1008+
1009+/**
1010+ * GDBusProxy:g-default-timeout:
1011+ *
1012+ * The timeout to use if -1 (specifying default timeout) is passed
1013+ * as @timeout_msec in the g_dbus_proxy_call() and
1014+ * g_dbus_proxy_call_sync() functions.
1015+ *
1016+ * This allows applications to set a proxy-wide timeout for all
1017+ * remote method invocations on the proxy. If this property is -1,
1018+ * the default timeout (typically 25 seconds) is used. If set to
1019+ * %G_MAXINT, then no timeout is used.
1020+ *
1021+ * Since: 2.26
1022+ */
1023+
1024+
1025+/**
1026+ * GDBusProxy:g-flags:
1027+ *
1028+ * Flags from the #GDBusProxyFlags enumeration.
1029+ *
1030+ * Since: 2.26
1031+ */
1032+
1033+
1034+/**
1035+ * GDBusProxy:g-interface-info:
1036+ *
1037+ * Ensure that interactions with this proxy conform to the given
1038+ * interface. This is mainly to ensure that malformed data received
1039+ * from the other peer is ignored. The given #GDBusInterfaceInfo is
1040+ * said to be the <emphasis>expected interface</emphasis>.
1041+ *
1042+ * The checks performed are:
1043+ * <itemizedlist>
1044+ * <listitem><para>
1045+ * When completing a method call, if the type signature of
1046+ * the reply message isn't what's expected, the reply is
1047+ * discarded and the #GError is set to %G_IO_ERROR_INVALID_ARGUMENT.
1048+ * </para></listitem>
1049+ * <listitem><para>
1050+ * Received signals that have a type signature mismatch are dropped and
1051+ * a warning is logged via g_warning().
1052+ * </para></listitem>
1053+ * <listitem><para>
1054+ * Properties received via the initial <literal>GetAll()</literal> call
1055+ * or via the <literal>::PropertiesChanged</literal> signal (on the
1056+ * <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties">org.freedesktop.DBus.Properties</ulink> interface) or
1057+ * set using g_dbus_proxy_set_cached_property() with a type signature
1058+ * mismatch are ignored and a warning is logged via g_warning().
1059+ * </para></listitem>
1060+ * </itemizedlist>
1061+ * Note that these checks are never done on methods, signals and
1062+ * properties that are not referenced in the given
1063+ * #GDBusInterfaceInfo, since extending a D-Bus interface on the
1064+ * service-side is not considered an ABI break.
1065+ *
1066+ * Since: 2.26
1067+ */
1068+
1069+
1070+/**
1071+ * GDBusProxy:g-interface-name:
1072+ *
1073+ * The D-Bus interface name the proxy is for.
1074+ *
1075+ * Since: 2.26
1076+ */
1077+
1078+
1079+/**
1080+ * GDBusProxy:g-name:
1081+ *
1082+ * The well-known or unique name that the proxy is for.
1083+ *
1084+ * Since: 2.26
1085+ */
1086+
1087+
1088+/**
1089+ * GDBusProxy:g-name-owner:
1090+ *
1091+ * The unique name that owns #GDBusProxy:g-name or %NULL if no-one
1092+ * currently owns that name. You may connect to #GObject::notify signal to
1093+ * track changes to this property.
1094+ *
1095+ * Since: 2.26
1096+ */
1097+
1098+
1099+/**
1100+ * GDBusProxy:g-object-path:
1101+ *
1102+ * The object path the proxy is for.
1103+ *
1104+ * Since: 2.26
1105+ */
1106+
1107+
1108+/**
1109+ * GDBusServer:
1110+ *
1111+ * The #GDBusServer structure contains only private data and
1112+ * should only be accessed using the provided API.
1113+ *
1114+ * Since: 2.26
1115+ */
1116+
1117+
1118+/**
1119+ * GDBusServer::new-connection:
1120+ * @server: The #GDBusServer emitting the signal.
1121+ * @connection: A #GDBusConnection for the new connection.
1122+ *
1123+ * Emitted when a new authenticated connection has been made. Use
1124+ * g_dbus_connection_get_peer_credentials() to figure out what
1125+ * identity (if any), was authenticated.
1126+ *
1127+ * If you want to accept the connection, take a reference to the
1128+ * @connection object and return %TRUE. When you are done with the
1129+ * connection call g_dbus_connection_close() and give up your
1130+ * reference. Note that the other peer may disconnect at any time -
1131+ * a typical thing to do when accepting a connection is to listen to
1132+ * the #GDBusConnection::closed signal.
1133+ *
1134+ * If #GDBusServer:flags contains %G_DBUS_SERVER_FLAGS_RUN_IN_THREAD
1135+ * then the signal is emitted in a new thread dedicated to the
1136+ * connection. Otherwise the signal is emitted in the <link
1137+ * linkend="g-main-context-push-thread-default">thread-default main
1138+ * loop</link> of the thread that @server was constructed in.
1139+ *
1140+ * You are guaranteed that signal handlers for this signal runs
1141+ * before incoming messages on @connection are processed. This means
1142+ * that it's suitable to call g_dbus_connection_register_object() or
1143+ * similar from the signal handler.
1144+ *
1145+ * Returns: %TRUE to claim @connection, %FALSE to let other handlers run.
1146+ * Since: 2.26
1147+ */
1148+
1149+
1150+/**
1151+ * GDBusServer:active:
1152+ *
1153+ * Whether the server is currently active.
1154+ *
1155+ * Since: 2.26
1156+ */
1157+
1158+
1159+/**
1160+ * GDBusServer:address:
1161+ *
1162+ * The D-Bus address to listen on.
1163+ *
1164+ * Since: 2.26
1165+ */
1166+
1167+
1168+/**
1169+ * GDBusServer:authentication-observer:
1170+ *
1171+ * A #GDBusAuthObserver object to assist in the authentication process or %NULL.
1172+ *
1173+ * Since: 2.26
1174+ */
1175+
1176+
1177+/**
1178+ * GDBusServer:client-address:
1179+ *
1180+ * The D-Bus address that clients can use.
1181+ *
1182+ * Since: 2.26
1183+ */
1184+
1185+
1186+/**
1187+ * GDBusServer:flags:
1188+ *
1189+ * Flags from the #GDBusServerFlags enumeration.
1190+ *
1191+ * Since: 2.26
1192+ */
1193+
1194+
1195+/**
1196+ * GDBusServer:guid:
1197+ *
1198+ * The guid of the server.
1199+ *
1200+ * Since: 2.26
1201+ */
1202+
1203+
1204+/**
1205+ * GDBusServerClass:
1206+ * @new_connection: Signal class handler for the #GDBusServer::new-connection signal.
1207+ *
1208+ * Class structure for #GDBusServer.
1209+ *
1210+ * Since: 2.26
1211+ */
1212+
1213+
1214+/**
1215+ * GDataOutputStream:byte-order:
1216+ *
1217+ * Determines the byte ordering that is used when writing
1218+ * multi-byte entities (such as integers) to the stream.
1219+ */
1220+
1221+
1222+/**
1223+ * GDataStream:byte-order:
1224+ *
1225+ * The ::byte-order property determines the byte ordering that
1226+ * is used when reading multi-byte entities (such as integers)
1227+ * from the stream.
1228+ */
1229+
1230+
1231+/**
1232+ * GDataStream:newline-type:
1233+ *
1234+ * The :newline-type property determines what is considered
1235+ * as a line ending when reading complete lines from the stream.
1236+ */
1237+
1238+
1239+/**
1240+ * GDesktopAppInfo:
1241+ *
1242+ * Information about an installed application from a desktop file.
1243+ */
1244+
1245+
1246+/**
1247+ * GDesktopAppInfo:filename:
1248+ *
1249+ * The origin filename of this #GDesktopAppInfo
1250+ */
1251+
1252+
1253+/**
1254+ * GDrive::changed:
1255+ * @drive: a #GDrive.
1256+ *
1257+ * Emitted when the drive's state has changed.
1258+ */
1259+
1260+
1261+/**
1262+ * GDrive::disconnected:
1263+ * @drive: a #GDrive.
1264+ *
1265+ * This signal is emitted when the #GDrive have been
1266+ * disconnected. If the recipient is holding references to the
1267+ * object they should release them so the object can be
1268+ * finalized.
1269+ */
1270+
1271+
1272+/**
1273+ * GDrive::eject-button:
1274+ * @drive: a #GDrive.
1275+ *
1276+ * Emitted when the physical eject button (if any) of a drive has
1277+ * been pressed.
1278+ */
1279+
1280+
1281+/**
1282+ * GDrive::stop-button:
1283+ * @drive: a #GDrive.
1284+ *
1285+ * Emitted when the physical stop button (if any) of a drive has
1286+ * been pressed.
1287+ *
1288+ * Since: 2.22
1289+ */
1290+
1291+
1292+/**
1293+ * GFileIcon:file:
1294+ *
1295+ * The file containing the icon.
1296+ */
1297+
1298+
1299+/**
1300+ * GFileMonitor::changed:
1301+ * @monitor: a #GFileMonitor.
1302+ * @file: a #GFile.
1303+ * @other_file: (allow-none): a #GFile or #NULL.
1304+ * @event_type: a #GFileMonitorEvent.
1305+ *
1306+ * Emitted when @file has been changed.
1307+ *
1308+ * If using #G_FILE_MONITOR_SEND_MOVED flag and @event_type is
1309+ * #G_FILE_MONITOR_EVENT_MOVED, @file will be set to a #GFile containing the
1310+ * old path, and @other_file will be set to a #GFile containing the new path.
1311+ *
1312+ * In all the other cases, @other_file will be set to #NULL.
1313+ */
1314+
1315+
1316+/**
1317+ * GFilenameCompleter::got-completion-data:
1318+ *
1319+ * Emitted when the file name completion information comes available.
1320+ */
1321+
1322+
1323+/**
1324+ * GIOModuleScope:
1325+ *
1326+ * Represents a scope for loading IO modules. A scope can be used for blocking
1327+ * duplicate modules, or blocking a module you don't want to load.
1328+ *
1329+ * The scope can be used with g_io_modules_load_all_in_directory_with_scope()
1330+ * or g_io_modules_scan_all_in_directory_with_scope().
1331+ *
1332+ * Since: 2.30
1333+ */
1334+
1335+
1336+/**
1337+ * GInetAddress:
1338+ *
1339+ * An IPv4 or IPv6 internet address.
1340+ */
1341+
1342+
1343+/**
1344+ * GInetAddress:is-any:
1345+ *
1346+ * Whether this is the "any" address for its family.
1347+ * See g_inet_address_get_is_any().
1348+ *
1349+ * Since: 2.22
1350+ */
1351+
1352+
1353+/**
1354+ * GInetAddress:is-link-local:
1355+ *
1356+ * Whether this is a link-local address.
1357+ * See g_inet_address_get_is_link_local().
1358+ *
1359+ * Since: 2.22
1360+ */
1361+
1362+
1363+/**
1364+ * GInetAddress:is-loopback:
1365+ *
1366+ * Whether this is the loopback address for its family.
1367+ * See g_inet_address_get_is_loopback().
1368+ *
1369+ * Since: 2.22
1370+ */
1371+
1372+
1373+/**
1374+ * GInetAddress:is-mc-global:
1375+ *
1376+ * Whether this is a global multicast address.
1377+ * See g_inet_address_get_is_mc_global().
1378+ *
1379+ * Since: 2.22
1380+ */
1381+
1382+
1383+/**
1384+ * GInetAddress:is-mc-link-local:
1385+ *
1386+ * Whether this is a link-local multicast address.
1387+ * See g_inet_address_get_is_mc_link_local().
1388+ *
1389+ * Since: 2.22
1390+ */
1391+
1392+
1393+/**
1394+ * GInetAddress:is-mc-node-local:
1395+ *
1396+ * Whether this is a node-local multicast address.
1397+ * See g_inet_address_get_is_mc_node_local().
1398+ *
1399+ * Since: 2.22
1400+ */
1401+
1402+
1403+/**
1404+ * GInetAddress:is-mc-org-local:
1405+ *
1406+ * Whether this is an organization-local multicast address.
1407+ * See g_inet_address_get_is_mc_org_local().
1408+ *
1409+ * Since: 2.22
1410+ */
1411+
1412+
1413+/**
1414+ * GInetAddress:is-mc-site-local:
1415+ *
1416+ * Whether this is a site-local multicast address.
1417+ * See g_inet_address_get_is_mc_site_local().
1418+ *
1419+ * Since: 2.22
1420+ */
1421+
1422+
1423+/**
1424+ * GInetAddress:is-multicast:
1425+ *
1426+ * Whether this is a multicast address.
1427+ * See g_inet_address_get_is_multicast().
1428+ *
1429+ * Since: 2.22
1430+ */
1431+
1432+
1433+/**
1434+ * GInetAddress:is-site-local:
1435+ *
1436+ * Whether this is a site-local address.
1437+ * See g_inet_address_get_is_loopback().
1438+ *
1439+ * Since: 2.22
1440+ */
1441+
1442+
1443+/**
1444+ * GInetAddressMask:
1445+ *
1446+ * A combination of an IPv4 or IPv6 base address and a length,
1447+ * representing a range of IP addresses.
1448+ *
1449+ * Since: 2.32
1450+ */
1451+
1452+
1453+/**
1454+ * GInetSocketAddress:
1455+ *
1456+ * An IPv4 or IPv6 socket address, corresponding to a <type>struct
1457+ * sockaddr_in</type> or <type>struct sockaddr_in6</type>.
1458+ */
1459+
1460+
1461+/**
1462+ * GInetSocketAddress:flowinfo:
1463+ *
1464+ * The <literal>sin6_flowinfo</literal> field, for IPv6 addresses.
1465+ *
1466+ * Since: 2.32
1467+ */
1468+
1469+
1470+/**
1471+ * GInetSocketAddress:scope_id:
1472+ *
1473+ * The <literal>sin6_scope_id</literal> field, for IPv6 addresses.
1474+ *
1475+ * Since: 2.32
1476+ */
1477+
1478+
1479+/**
1480+ * GMemoryOutputStream:data:
1481+ *
1482+ * Pointer to buffer where data will be written.
1483+ *
1484+ * Since: 2.24
1485+ */
1486+
1487+
1488+/**
1489+ * GMemoryOutputStream:data-size:
1490+ *
1491+ * Size of data written to the buffer.
1492+ *
1493+ * Since: 2.24
1494+ */
1495+
1496+
1497+/**
1498+ * GMemoryOutputStream:destroy-function: (skip)
1499+ *
1500+ * Function called with the buffer as argument when the stream is destroyed.
1501+ *
1502+ * Since: 2.24
1503+ */
1504+
1505+
1506+/**
1507+ * GMemoryOutputStream:realloc-function: (skip)
1508+ *
1509+ * Function with realloc semantics called to enlarge the buffer.
1510+ *
1511+ * Since: 2.24
1512+ */
1513+
1514+
1515+/**
1516+ * GMemoryOutputStream:size:
1517+ *
1518+ * Current size of the data buffer.
1519+ *
1520+ * Since: 2.24
1521+ */
1522+
1523+
1524+/**
1525+ * GMenu:
1526+ *
1527+ * #GMenu is an opaque structure type. You must access it using the
1528+ * functions below.
1529+ *
1530+ * Since: 2.32
1531+ */
1532+
1533+
1534+/**
1535+ * GMenuAttributeIter:
1536+ *
1537+ * #GMenuAttributeIter is an opaque structure type. You must access it
1538+ * using the functions below.
1539+ *
1540+ * Since: 2.32
1541+ */
1542+
1543+
1544+/**
1545+ * GMenuItem:
1546+ *
1547+ * #GMenuItem is an opaque structure type. You must access it using the
1548+ * functions below.
1549+ *
1550+ * Since: 2.32
1551+ */
1552+
1553+
1554+/**
1555+ * GMenuLinkIter:
1556+ *
1557+ * #GMenuLinkIter is an opaque structure type. You must access it using
1558+ * the functions below.
1559+ *
1560+ * Since: 2.32
1561+ */
1562+
1563+
1564+/**
1565+ * GMenuModel:
1566+ *
1567+ * #GMenuModel is an opaque structure type. You must access it using the
1568+ * functions below.
1569+ *
1570+ * Since: 2.32
1571+ */
1572+
1573+
1574+/**
1575+ * GMenuModel::items-changed:
1576+ * @model: the #GMenuModel that is changing
1577+ * @position: the position of the change
1578+ * @removed: the number of items removed
1579+ * @added: the number of items added
1580+ *
1581+ * Emitted when a change has occured to the menu.
1582+ *
1583+ * The only changes that can occur to a menu is that items are removed
1584+ * or added. Items may not change (except by being removed and added
1585+ * back in the same location). This signal is capable of describing
1586+ * both of those changes (at the same time).
1587+ *
1588+ * The signal means that starting at the index @position, @removed
1589+ * items were removed and @added items were added in their place. If
1590+ * @removed is zero then only items were added. If @added is zero
1591+ * then only items were removed.
1592+ *
1593+ * As an example, if the menu contains items a, b, c, d (in that
1594+ * order) and the signal (2, 1, 3) occurs then the new composition of
1595+ * the menu will be a, b, _, _, _, d (with each _ representing some
1596+ * new item).
1597+ *
1598+ * Signal handlers may query the model (particularly the added items)
1599+ * and expect to see the results of the modification that is being
1600+ * reported. The signal is emitted after the modification.
1601+ */
1602+
1603+
1604+/**
1605+ * GMount::changed:
1606+ * @mount: the object on which the signal is emitted
1607+ *
1608+ * Emitted when the mount has been changed.
1609+ */
1610+
1611+
1612+/**
1613+ * GMount::pre-unmount:
1614+ * @mount: the object on which the signal is emitted
1615+ *
1616+ * This signal is emitted when the #GMount is about to be
1617+ * unmounted.
1618+ *
1619+ * Since: 2.22
1620+ */
1621+
1622+
1623+/**
1624+ * GMount::unmounted:
1625+ * @mount: the object on which the signal is emitted
1626+ *
1627+ * This signal is emitted when the #GMount have been
1628+ * unmounted. If the recipient is holding references to the
1629+ * object they should release them so the object can be
1630+ * finalized.
1631+ */
1632+
1633+
1634+/**
1635+ * GMountOperation::aborted:
1636+ *
1637+ * Emitted by the backend when e.g. a device becomes unavailable
1638+ * while a mount operation is in progress.
1639+ *
1640+ * Implementations of GMountOperation should handle this signal
1641+ * by dismissing open password dialogs.
1642+ *
1643+ * Since: 2.20
1644+ */
1645+
1646+
1647+/**
1648+ * GMountOperation::ask-password:
1649+ * @op: a #GMountOperation requesting a password.
1650+ * @message: string containing a message to display to the user.
1651+ * @default_user: string containing the default user name.
1652+ * @default_domain: string containing the default domain.
1653+ * @flags: a set of #GAskPasswordFlags.
1654+ *
1655+ * Emitted when a mount operation asks the user for a password.
1656+ *
1657+ * If the message contains a line break, the first line should be
1658+ * presented as a heading. For example, it may be used as the
1659+ * primary text in a #GtkMessageDialog.
1660+ */
1661+
1662+
1663+/**
1664+ * GMountOperation::ask-question:
1665+ * @op: a #GMountOperation asking a question.
1666+ * @message: string containing a message to display to the user.
1667+ * @choices: an array of strings for each possible choice.
1668+ *
1669+ * Emitted when asking the user a question and gives a list of
1670+ * choices for the user to choose from.
1671+ *
1672+ * If the message contains a line break, the first line should be
1673+ * presented as a heading. For example, it may be used as the
1674+ * primary text in a #GtkMessageDialog.
1675+ */
1676+
1677+
1678+/**
1679+ * GMountOperation::reply:
1680+ * @op: a #GMountOperation.
1681+ * @result: a #GMountOperationResult indicating how the request was handled
1682+ *
1683+ * Emitted when the user has replied to the mount operation.
1684+ */
1685+
1686+
1687+/**
1688+ * GMountOperation::show-processes:
1689+ * @op: a #GMountOperation.
1690+ * @message: string containing a message to display to the user.
1691+ * @processes: (element-type GPid): an array of #GPid for processes blocking the operation.
1692+ * @choices: an array of strings for each possible choice.
1693+ *
1694+ * Emitted when one or more processes are blocking an operation
1695+ * e.g. unmounting/ejecting a #GMount or stopping a #GDrive.
1696+ *
1697+ * Note that this signal may be emitted several times to update the
1698+ * list of blocking processes as processes close files. The
1699+ * application should only respond with g_mount_operation_reply() to
1700+ * the latest signal (setting #GMountOperation:choice to the choice
1701+ * the user made).
1702+ *
1703+ * If the message contains a line break, the first line should be
1704+ * presented as a heading. For example, it may be used as the
1705+ * primary text in a #GtkMessageDialog.
1706+ *
1707+ * Since: 2.22
1708+ */
1709+
1710+
1711+/**
1712+ * GMountOperation::show-unmount-progress:
1713+ * @op: a #GMountOperation:
1714+ * @message: string containing a mesage to display to the user
1715+ * @time_left: the estimated time left before the operation completes, in microseconds, or -1
1716+ * @bytes_left: the amount of bytes to be written before the operation completes (or -1 if such amount is not known), or zero if the operation is completed
1717+ *
1718+ * Emitted when an unmount operation has been busy for more than some time
1719+ * (typically 1.5 seconds).
1720+ *
1721+ * When unmounting or ejecting a volume, the kernel might need to flush
1722+ * pending data in its buffers to the volume stable storage, and this operation
1723+ * can take a considerable amount of time. This signal may be emitted several
1724+ * times as long as the unmount operation is outstanding, and then one
1725+ * last time when the operation is completed, with @bytes_left set to zero.
1726+ *
1727+ * Implementations of GMountOperation should handle this signal by
1728+ * showing an UI notification, and then dismiss it, or show another notification
1729+ * of completion, when @bytes_left reaches zero.
1730+ *
1731+ * If the message contains a line break, the first line should be
1732+ * presented as a heading. For example, it may be used as the
1733+ * primary text in a #GtkMessageDialog.
1734+ *
1735+ * Since: 2.34
1736+ */
1737+
1738+
1739+/**
1740+ * GMountOperation:anonymous:
1741+ *
1742+ * Whether to use an anonymous user when authenticating.
1743+ */
1744+
1745+
1746+/**
1747+ * GMountOperation:choice:
1748+ *
1749+ * The index of the user's choice when a question is asked during the
1750+ * mount operation. See the #GMountOperation::ask-question signal.
1751+ */
1752+
1753+
1754+/**
1755+ * GMountOperation:domain:
1756+ *
1757+ * The domain to use for the mount operation.
1758+ */
1759+
1760+
1761+/**
1762+ * GMountOperation:password:
1763+ *
1764+ * The password that is used for authentication when carrying out
1765+ * the mount operation.
1766+ */
1767+
1768+
1769+/**
1770+ * GMountOperation:password-save:
1771+ *
1772+ * Determines if and how the password information should be saved.
1773+ */
1774+
1775+
1776+/**
1777+ * GMountOperation:username:
1778+ *
1779+ * The user name that is used for authentication when carrying out
1780+ * the mount operation.
1781+ */
1782+
1783+
1784+/**
1785+ * GNetworkAddress:
1786+ *
1787+ * A #GSocketConnectable for resolving a hostname and connecting to
1788+ * that host.
1789+ */
1790+
1791+
1792+/**
1793+ * GNetworkMonitor:
1794+ *
1795+ * #GNetworkMonitor monitors the status of network connections and
1796+ * indicates when a possibly-user-visible change has occurred.
1797+ *
1798+ * Since: 2.32
1799+ */
1800+
1801+
1802+/**
1803+ * GNetworkMonitor::network-changed:
1804+ * @monitor: a #GNetworkMonitor
1805+ * @available: the current value of #GNetworkMonitor:network-available
1806+ *
1807+ * Emitted when the network configuration changes. If @available is
1808+ * %TRUE, then some hosts may be reachable that were not reachable
1809+ * before, while others that were reachable before may no longer be
1810+ * reachable. If @available is %FALSE, then no remote hosts are
1811+ * reachable.
1812+ *
1813+ * Since: 2.32
1814+ */
1815+
1816+
1817+/**
1818+ * GNetworkMonitor:network-available:
1819+ *
1820+ * Whether the network is considered available. That is, whether the
1821+ * system has a default route for at least one of IPv4 or IPv6.
1822+ *
1823+ * Real-world networks are of course much more complicated than
1824+ * this; the machine may be connected to a wifi hotspot that
1825+ * requires payment before allowing traffic through, or may be
1826+ * connected to a functioning router that has lost its own upstream
1827+ * connectivity. Some hosts might only be accessible when a VPN is
1828+ * active. Other hosts might only be accessible when the VPN is
1829+ * <emphasis>not</emphasis> active. Thus, it is best to use
1830+ * g_network_monitor_can_reach() or
1831+ * g_network_monitor_can_reach_async() to test for reachability on a
1832+ * host-by-host basis. (On the other hand, when the property is
1833+ * %FALSE, the application can reasonably expect that no remote
1834+ * hosts at all are reachable, and should indicate this to the user
1835+ * in its UI.)
1836+ *
1837+ * See also #GNetworkMonitor::network-changed.
1838+ *
1839+ * Since: 2.32
1840+ */
1841+
1842+
1843+/**
1844+ * GNetworkService:
1845+ *
1846+ * A #GSocketConnectable for resolving a SRV record and connecting to
1847+ * that service.
1848+ */
1849+
1850+
1851+/**
1852+ * GPermission:
1853+ *
1854+ * #GPermission is an opaque data structure and can only be accessed
1855+ * using the following functions.
1856+ */
1857+
1858+
1859+/**
1860+ * GPermission:allowed:
1861+ *
1862+ * %TRUE if the caller currently has permission to perform the action that
1863+ * @permission represents the permission to perform.
1864+ */
1865+
1866+
1867+/**
1868+ * GPermission:can-acquire:
1869+ *
1870+ * %TRUE if it is generally possible to acquire the permission by calling
1871+ * g_permission_acquire().
1872+ */
1873+
1874+
1875+/**
1876+ * GPermission:can-release:
1877+ *
1878+ * %TRUE if it is generally possible to release the permission by calling
1879+ * g_permission_release().
1880+ */
1881+
1882+
1883+/**
1884+ * GProxyAddress:
1885+ *
1886+ * A #GInetSocketAddress representing a connection via a proxy server
1887+ *
1888+ * Since: 2.26
1889+ */
1890+
1891+
1892+/**
1893+ * GProxyAddress:destination-protocol:
1894+ *
1895+ * The protocol being spoke to the destination host, or %NULL if
1896+ * the #GProxyAddress doesn't know.
1897+ *
1898+ * Since: 2.34
1899+ */
1900+
1901+
1902+/**
1903+ * GProxyAddress:uri:
1904+ *
1905+ * The URI string that the proxy was constructed from (or %NULL
1906+ * if the creator didn't specify this).
1907+ *
1908+ * Since: 2.34
1909+ */
1910+
1911+
1912+/**
1913+ * GProxyAddressEnumerator:proxy-resolver:
1914+ *
1915+ * The proxy resolver to use.
1916+ *
1917+ * Since: 2.36
1918+ */
1919+
1920+
1921+/**
1922+ * GRemoteActionGroupInterface:
1923+ * @activate_action_full: the virtual function pointer for g_remote_action_group_activate_action_full()
1924+ * @change_action_state_full: the virtual function pointer for g_remote_action_group_change_action_state_full()
1925+ *
1926+ * The virtual function table for #GRemoteActionGroup.
1927+ *
1928+ * Since: 2.32
1929+ */
1930+
1931+
1932+/**
1933+ * GResolver:
1934+ *
1935+ * The object that handles DNS resolution. Use g_resolver_get_default()
1936+ * to get the default resolver.
1937+ */
1938+
1939+
1940+/**
1941+ * GResolver::reload:
1942+ * @resolver: a #GResolver
1943+ *
1944+ * Emitted when the resolver notices that the system resolver
1945+ * configuration has changed.
1946+ */
1947+
1948+
1949+/**
1950+ * GSettings::change-event:
1951+ * @settings: the object on which the signal was emitted
1952+ * @keys: (array length=n_keys) (element-type GQuark) (allow-none): an array of #GQuark<!-- -->s for the changed keys, or %NULL
1953+ * @n_keys: the length of the @keys array, or 0
1954+ *
1955+ * The "change-event" signal is emitted once per change event that
1956+ * affects this settings object. You should connect to this signal
1957+ * only if you are interested in viewing groups of changes before they
1958+ * are split out into multiple emissions of the "changed" signal.
1959+ * For most use cases it is more appropriate to use the "changed" signal.
1960+ *
1961+ * In the event that the change event applies to one or more specified
1962+ * keys, @keys will be an array of #GQuark of length @n_keys. In the
1963+ * event that the change event applies to the #GSettings object as a
1964+ * whole (ie: potentially every key has been changed) then @keys will
1965+ * be %NULL and @n_keys will be 0.
1966+ *
1967+ * The default handler for this signal invokes the "changed" signal
1968+ * for each affected key. If any other connected handler returns
1969+ * %TRUE then this default functionality will be suppressed.
1970+ *
1971+ * Returns: %TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.
1972+ */
1973+
1974+
1975+/**
1976+ * GSettings::changed:
1977+ * @settings: the object on which the signal was emitted
1978+ * @key: the name of the key that changed
1979+ *
1980+ * The "changed" signal is emitted when a key has potentially changed.
1981+ * You should call one of the g_settings_get() calls to check the new
1982+ * value.
1983+ *
1984+ * This signal supports detailed connections. You can connect to the
1985+ * detailed signal "changed::x" in order to only receive callbacks
1986+ * when key "x" changes.
1987+ */
1988+
1989+
1990+/**
1991+ * GSettings::writable-change-event:
1992+ * @settings: the object on which the signal was emitted
1993+ * @key: the quark of the key, or 0
1994+ *
1995+ * The "writable-change-event" signal is emitted once per writability
1996+ * change event that affects this settings object. You should connect
1997+ * to this signal if you are interested in viewing groups of changes
1998+ * before they are split out into multiple emissions of the
1999+ * "writable-changed" signal. For most use cases it is more
2000+ * appropriate to use the "writable-changed" signal.
2001+ *
2002+ * In the event that the writability change applies only to a single
2003+ * key, @key will be set to the #GQuark for that key. In the event
2004+ * that the writability change affects the entire settings object,
2005+ * @key will be 0.
2006+ *
2007+ * The default handler for this signal invokes the "writable-changed"
2008+ * and "changed" signals for each affected key. This is done because
2009+ * changes in writability might also imply changes in value (if for
2010+ * example, a new mandatory setting is introduced). If any other
2011+ * connected handler returns %TRUE then this default functionality
2012+ * will be suppressed.
2013+ *
2014+ * Returns: %TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.
2015+ */
2016+
2017+
2018+/**
2019+ * GSettings::writable-changed:
2020+ * @settings: the object on which the signal was emitted
2021+ * @key: the key
2022+ *
2023+ * The "writable-changed" signal is emitted when the writability of a
2024+ * key has potentially changed. You should call
2025+ * g_settings_is_writable() in order to determine the new status.
2026+ *
2027+ * This signal supports detailed connections. You can connect to the
2028+ * detailed signal "writable-changed::x" in order to only receive
2029+ * callbacks when the writability of "x" changes.
2030+ */
2031+
2032+
2033+/**
2034+ * GSettings:context:
2035+ *
2036+ * The name of the context that the settings are stored in.
2037+ */
2038+
2039+
2040+/**
2041+ * GSettings:delay-apply:
2042+ *
2043+ * Whether the #GSettings object is in 'delay-apply' mode. See
2044+ * g_settings_delay() for details.
2045+ *
2046+ * Since: 2.28
2047+ */
2048+
2049+
2050+/**
2051+ * GSettings:has-unapplied:
2052+ *
2053+ * If this property is %TRUE, the #GSettings object has outstanding
2054+ * changes that will be applied when g_settings_apply() is called.
2055+ */
2056+
2057+
2058+/**
2059+ * GSettings:path:
2060+ *
2061+ * The path within the backend where the settings are stored.
2062+ */
2063+
2064+
2065+/**
2066+ * GSettings:schema:
2067+ *
2068+ * The name of the schema that describes the types of keys
2069+ * for this #GSettings object.
2070+ *
2071+ * The type of this property is *not* #GSettingsSchema.
2072+ * #GSettingsSchema has only existed since version 2.32 and
2073+ * unfortunately this name was used in previous versions to refer to
2074+ * the schema ID rather than the schema itself. Take care to use the
2075+ * 'settings-schema' property if you wish to pass in a
2076+ * #GSettingsSchema.
2077+ *
2078+ * Deprecated: 2.32:Use the 'schema-id' property instead. In a future version, this property may instead refer to a #GSettingsSchema.
2079+ */
2080+
2081+
2082+/**
2083+ * GSettings:schema-id:
2084+ *
2085+ * The name of the schema that describes the types of keys
2086+ * for this #GSettings object.
2087+ */
2088+
2089+
2090+/**
2091+ * GSettings:settings-schema:
2092+ *
2093+ * The #GSettingsSchema describing the types of keys for this
2094+ * #GSettings object.
2095+ *
2096+ * Ideally, this property would be called 'schema'. #GSettingsSchema
2097+ * has only existed since version 2.32, however, and before then the
2098+ * 'schema' property was used to refer to the ID of the schema rather
2099+ * than the schema itself. Take care.
2100+ */
2101+
2102+
2103+/**
2104+ * GSettingsSchema:
2105+ *
2106+ * This is an opaque structure type. You may not access it directly.
2107+ *
2108+ * Since: 2.32
2109+ */
2110+
2111+
2112+/**
2113+ * GSettingsSchemaSource:
2114+ *
2115+ * This is an opaque structure type. You may not access it directly.
2116+ *
2117+ * Since: 2.32
2118+ */
2119+
2120+
2121+/**
2122+ * GSimpleAction::activate:
2123+ * @simple: the #GSimpleAction
2124+ * @parameter: (allow-none): the parameter to the activation
2125+ *
2126+ * Indicates that the action was just activated.
2127+ *
2128+ * @parameter will always be of the expected type. In the event that
2129+ * an incorrect type was given, no signal will be emitted.
2130+ *
2131+ * Since: 2.28
2132+ */
2133+
2134+
2135+/**
2136+ * GSimpleAction::change-state:
2137+ * @simple: the #GSimpleAction
2138+ * @value: (allow-none): the requested value for the state
2139+ *
2140+ * Indicates that the action just received a request to change its
2141+ * state.
2142+ *
2143+ * @value will always be of the correct state type. In the event that
2144+ * an incorrect type was given, no signal will be emitted.
2145+ *
2146+ * If no handler is connected to this signal then the default
2147+ * behaviour is to call g_simple_action_set_state() to set the state
2148+ * to the requested value. If you connect a signal handler then no
2149+ * default action is taken. If the state should change then you must
2150+ * call g_simple_action_set_state() from the handler.
2151+ *
2152+ * <example>
2153+ * <title>Example 'change-state' handler</title>
2154+ * <programlisting>
2155+ * static void
2156+ * change_volume_state (GSimpleAction *action,
2157+ * GVariant *value,
2158+ * gpointer user_data)
2159+ * {
2160+ * gint requested;
2161+ *
2162+ * requested = g_variant_get_int32 (value);
2163+ *
2164+ * // Volume only goes from 0 to 10
2165+ * if (0 <= requested && requested <= 10)
2166+ * g_simple_action_set_state (action, value);
2167+ * }
2168+ * </programlisting>
2169+ * </example>
2170+ *
2171+ * The handler need not set the state to the requested value. It
2172+ * could set it to any value at all, or take some other action.
2173+ *
2174+ * Since: 2.30
2175+ */
2176+
2177+
2178+/**
2179+ * GSimpleAction:enabled:
2180+ *
2181+ * If @action is currently enabled.
2182+ *
2183+ * If the action is disabled then calls to g_action_activate() and
2184+ * g_action_change_state() have no effect.
2185+ *
2186+ * Since: 2.28
2187+ */
2188+
2189+
2190+/**
2191+ * GSimpleAction:name:
2192+ *
2193+ * The name of the action. This is mostly meaningful for identifying
2194+ * the action once it has been added to a #GSimpleActionGroup.
2195+ *
2196+ * Since: 2.28
2197+ */
2198+
2199+
2200+/**
2201+ * GSimpleAction:parameter-type:
2202+ *
2203+ * The type of the parameter that must be given when activating the
2204+ * action.
2205+ *
2206+ * Since: 2.28
2207+ */
2208+
2209+
2210+/**
2211+ * GSimpleAction:state:
2212+ *
2213+ * The state of the action, or %NULL if the action is stateless.
2214+ *
2215+ * Since: 2.28
2216+ */
2217+
2218+
2219+/**
2220+ * GSimpleAction:state-type:
2221+ *
2222+ * The #GVariantType of the state that the action has, or %NULL if the
2223+ * action is stateless.
2224+ *
2225+ * Since: 2.28
2226+ */
2227+
2228+
2229+/**
2230+ * GSimplePermission:
2231+ *
2232+ * #GSimplePermission is an opaque data structure. There are no methods
2233+ * except for those defined by #GPermission.
2234+ */
2235+
2236+
2237+/**
2238+ * GSimpleProxyResolver:default-proxy:
2239+ *
2240+ * The default proxy URI that will be used for any URI that doesn't
2241+ * match #GSimpleProxyResolver:ignore-hosts, and doesn't match any
2242+ * of the schemes set with g_simple_proxy_resolver_set_uri_proxy().
2243+ *
2244+ * Note that as a special case, if this URI starts with
2245+ * "<literal>socks://</literal>", #GSimpleProxyResolver will treat
2246+ * it as referring to all three of the <literal>socks5</literal>,
2247+ * <literal>socks4a</literal>, and <literal>socks4</literal> proxy
2248+ * types.
2249+ */
2250+
2251+
2252+/**
2253+ * GSimpleProxyResolver:ignore-hosts:
2254+ *
2255+ * A list of hostnames and IP addresses that the resolver should
2256+ * allow direct connections to.
2257+ *
2258+ * Entries can be in one of 4 formats:
2259+ *
2260+ * <itemizedlist>
2261+ * <listitem>
2262+ * A hostname, such as "<literal>example.com</literal>",
2263+ * "<literal>.example.com</literal>", or
2264+ * "<literal>*.example.com</literal>", any of which match
2265+ * "<literal>example.com</literal>" or any subdomain of it.
2266+ * </listitem>
2267+ * <listitem>
2268+ * An IPv4 or IPv6 address, such as
2269+ * "<literal>192.168.1.1</literal>", which matches only
2270+ * that address.
2271+ * </listitem>
2272+ * <listitem>
2273+ * A hostname or IP address followed by a port, such as
2274+ * "<literal>example.com:80</literal>", which matches whatever
2275+ * the hostname or IP address would match, but only for URLs
2276+ * with the (explicitly) indicated port. In the case of an IPv6
2277+ * address, the address part must appear in brackets:
2278+ * "<literal>[::1]:443</literal>"
2279+ * </listitem>
2280+ * <listitem>
2281+ * An IP address range, given by a base address and prefix length,
2282+ * such as "<literal>fe80::/10</literal>", which matches any
2283+ * address in that range.
2284+ * </listitem>
2285+ * </itemizedlist>
2286+ *
2287+ * Note that when dealing with Unicode hostnames, the matching is
2288+ * done against the ASCII form of the name.
2289+ *
2290+ * Also note that hostname exclusions apply only to connections made
2291+ * to hosts identified by name, and IP address exclusions apply only
2292+ * to connections made to hosts identified by address. That is, if
2293+ * <literal>example.com</literal> has an address of
2294+ * <literal>192.168.1.1</literal>, and the :ignore-hosts list
2295+ * contains only "<literal>192.168.1.1</literal>", then a connection
2296+ * to "<literal>example.com</literal>" (eg, via a #GNetworkAddress)
2297+ * will use the proxy, and a connection to
2298+ * "<literal>192.168.1.1</literal>" (eg, via a #GInetSocketAddress)
2299+ * will not.
2300+ *
2301+ * These rules match the "ignore-hosts"/"noproxy" rules most
2302+ * commonly used by other applications.
2303+ */
2304+
2305+
2306+/**
2307+ * GSocket:broadcast:
2308+ *
2309+ * Whether the socket should allow sending to and receiving from broadcast addresses.
2310+ *
2311+ * Since: 2.32
2312+ */
2313+
2314+
2315+/**
2316+ * GSocket:multicast-loopback:
2317+ *
2318+ * Whether outgoing multicast packets loop back to the local host.
2319+ *
2320+ * Since: 2.32
2321+ */
2322+
2323+
2324+/**
2325+ * GSocket:multicast-ttl:
2326+ *
2327+ * Time-to-live out outgoing multicast packets
2328+ *
2329+ * Since: 2.32
2330+ */
2331+
2332+
2333+/**
2334+ * GSocket:timeout:
2335+ *
2336+ * The timeout in seconds on socket I/O
2337+ *
2338+ * Since: 2.26
2339+ */
2340+
2341+
2342+/**
2343+ * GSocket:ttl:
2344+ *
2345+ * Time-to-live for outgoing unicast packets
2346+ *
2347+ * Since: 2.32
2348+ */
2349+
2350+
2351+/**
2352+ * GSocketAddress:
2353+ *
2354+ * A socket endpoint address, corresponding to <type>struct sockaddr</type>
2355+ * or one of its subtypes.
2356+ */
2357+
2358+
2359+/**
2360+ * GSocketClient::event:
2361+ * @client: the #GSocketClient
2362+ * @event: the event that is occurring
2363+ * @connectable: the #GSocketConnectable that @event is occurring on
2364+ * @connection: the current representation of the connection
2365+ *
2366+ * Emitted when @client's activity on @connectable changes state.
2367+ * Among other things, this can be used to provide progress
2368+ * information about a network connection in the UI. The meanings of
2369+ * the different @event values are as follows:
2370+ *
2371+ * <variablelist>
2372+ * <varlistentry>
2373+ * <term>%G_SOCKET_CLIENT_RESOLVING:</term>
2374+ * <listitem><para>
2375+ * @client is about to look up @connectable in DNS.
2376+ * @connection will be %NULL.
2377+ * </para></listitem>
2378+ * </varlistentry>
2379+ * <varlistentry>
2380+ * <term>%G_SOCKET_CLIENT_RESOLVED:</term>
2381+ * <listitem><para>
2382+ * @client has successfully resolved @connectable in DNS.
2383+ * @connection will be %NULL.
2384+ * </para></listitem>
2385+ * </varlistentry>
2386+ * <varlistentry>
2387+ * <term>%G_SOCKET_CLIENT_CONNECTING:</term>
2388+ * <listitem><para>
2389+ * @client is about to make a connection to a remote host;
2390+ * either a proxy server or the destination server itself.
2391+ * @connection is the #GSocketConnection, which is not yet
2392+ * connected.
2393+ * </para></listitem>
2394+ * </varlistentry>
2395+ * <varlistentry>
2396+ * <term>%G_SOCKET_CLIENT_CONNECTED:</term>
2397+ * <listitem><para>
2398+ * @client has successfully connected to a remote host.
2399+ * @connection is the connected #GSocketConnection.
2400+ * </para></listitem>
2401+ * </varlistentry>
2402+ * <varlistentry>
2403+ * <term>%G_SOCKET_CLIENT_PROXY_NEGOTIATING:</term>
2404+ * <listitem><para>
2405+ * @client is about to negotiate with a proxy to get it to
2406+ * connect to @connectable. @connection is the
2407+ * #GSocketConnection to the proxy server.
2408+ * </para></listitem>
2409+ * </varlistentry>
2410+ * <varlistentry>
2411+ * <term>%G_SOCKET_CLIENT_PROXY_NEGOTIATED:</term>
2412+ * <listitem><para>
2413+ * @client has negotiated a connection to @connectable through
2414+ * a proxy server. @connection is the stream returned from
2415+ * g_proxy_connect(), which may or may not be a
2416+ * #GSocketConnection.
2417+ * </para></listitem>
2418+ * </varlistentry>
2419+ * <varlistentry>
2420+ * <term>%G_SOCKET_CLIENT_TLS_HANDSHAKING:</term>
2421+ * <listitem><para>
2422+ * @client is about to begin a TLS handshake. @connection is a
2423+ * #GTlsClientConnection.
2424+ * </para></listitem>
2425+ * </varlistentry>
2426+ * <varlistentry>
2427+ * <term>%G_SOCKET_CLIENT_TLS_HANDSHAKED:</term>
2428+ * <listitem><para>
2429+ * @client has successfully completed the TLS handshake.
2430+ * @connection is a #GTlsClientConnection.
2431+ * </para></listitem>
2432+ * </varlistentry>
2433+ * <varlistentry>
2434+ * <term>%G_SOCKET_CLIENT_COMPLETE:</term>
2435+ * <listitem><para>
2436+ * @client has either successfully connected to @connectable
2437+ * (in which case @connection is the #GSocketConnection that
2438+ * it will be returning to the caller) or has failed (in which
2439+ * case @connection is %NULL and the client is about to return
2440+ * an error).
2441+ * </para></listitem>
2442+ * </varlistentry>
2443+ * </variablelist>
2444+ *
2445+ * Each event except %G_SOCKET_CLIENT_COMPLETE may be emitted
2446+ * multiple times (or not at all) for a given connectable (in
2447+ * particular, if @client ends up attempting to connect to more than
2448+ * one address). However, if @client emits the #GSocketClient::event
2449+ * signal at all for a given connectable, that it will always emit
2450+ * it with %G_SOCKET_CLIENT_COMPLETE when it is done.
2451+ *
2452+ * Note that there may be additional #GSocketClientEvent values in
2453+ * the future; unrecognized @event values should be ignored.
2454+ *
2455+ * Since: 2.32
2456+ */
2457+
2458+
2459+/**
2460+ * GSocketClient:proxy-resolver:
2461+ *
2462+ * The proxy resolver to use
2463+ *
2464+ * Since: 2.36
2465+ */
2466+
2467+
2468+/**
2469+ * GSocketService::incoming:
2470+ * @service: the #GSocketService
2471+ * @connection: a new #GSocketConnection object
2472+ * @source_object: (allow-none): the source_object passed to g_socket_listener_add_address()
2473+ *
2474+ * The ::incoming signal is emitted when a new incoming connection
2475+ * to @service needs to be handled. The handler must initiate the
2476+ * handling of @connection, but may not block; in essence,
2477+ * asynchronous operations must be used.
2478+ *
2479+ * @connection will be unreffed once the signal handler returns,
2480+ * so you need to ref it yourself if you are planning to use it.
2481+ *
2482+ * Returns: %TRUE to stop other handlers from being called
2483+ * Since: 2.22
2484+ */
2485+
2486+
2487+/**
2488+ * GSrvTarget:
2489+ *
2490+ * A single target host/port that a network service is running on.
2491+ */
2492+
2493+
2494+/**
2495+ * GTask:
2496+ *
2497+ * The opaque object representing a synchronous or asynchronous task
2498+ * and its result.
2499+ */
2500+
2501+
2502+/**
2503+ * GTaskThreadFunc:
2504+ * @task: the #GTask
2505+ * @source_object: (type GObject): @task's source object
2506+ * @task_data: @task's task data
2507+ * @cancellable: @task's #GCancellable, or %NULL
2508+ *
2509+ * The prototype for a task function to be run in a thread via
2510+ * g_task_run_in_thread() or g_task_run_in_thread_sync().
2511+ *
2512+ * If the return-on-cancel flag is set on @task, and @cancellable gets
2513+ * cancelled, then the #GTask will be completed immediately (as though
2514+ * g_task_return_error_if_cancelled() had been called), without
2515+ * waiting for the task function to complete. However, the task
2516+ * function will continue running in its thread in the background. The
2517+ * function therefore needs to be careful about how it uses
2518+ * externally-visible state in this case. See
2519+ * g_task_set_return_on_cancel() for more details.
2520+ *
2521+ * Other than in that case, @task will be completed when the
2522+ * #GTaskThreadFunc returns, <emphasis>not</emphasis> when it calls
2523+ * a <literal>g_task_return_</literal> function.
2524+ *
2525+ * Since: 2.36
2526+ */
2527+
2528+
2529+/**
2530+ * GTestDBus:
2531+ *
2532+ * The #GTestDBus structure contains only private data and
2533+ * should only be accessed using the provided API.
2534+ *
2535+ * Since: 2.34
2536+ */
2537+
2538+
2539+/**
2540+ * GTestDBus:flags:
2541+ *
2542+ * #GTestDBusFlags specifying the behaviour of the dbus session
2543+ *
2544+ * Since: 2.34
2545+ */
2546+
2547+
2548+/**
2549+ * GThemedIcon:name:
2550+ *
2551+ * The icon name.
2552+ */
2553+
2554+
2555+/**
2556+ * GThemedIcon:names:
2557+ *
2558+ * A %NULL-terminated array of icon names.
2559+ */
2560+
2561+
2562+/**
2563+ * GThemedIcon:use-default-fallbacks:
2564+ *
2565+ * Whether to use the default fallbacks found by shortening the icon name
2566+ * at '-' characters. If the "names" array has more than one element,
2567+ * ignores any past the first.
2568+ *
2569+ * For example, if the icon name was "gnome-dev-cdrom-audio", the array
2570+ * would become
2571+ * |[
2572+ * {
2573+ * "gnome-dev-cdrom-audio",
2574+ * "gnome-dev-cdrom",
2575+ * "gnome-dev",
2576+ * "gnome",
2577+ * NULL
2578+ * };
2579+ * ]|
2580+ */
2581+
2582+
2583+/**
2584+ * GThreadedSocketService::run:
2585+ * @service: the #GThreadedSocketService.
2586+ * @connection: a new #GSocketConnection object.
2587+ * @source_object: the source_object passed to g_socket_listener_add_address().
2588+ *
2589+ * The ::run signal is emitted in a worker thread in response to an
2590+ * incoming connection. This thread is dedicated to handling
2591+ * @connection and may perform blocking IO. The signal handler need
2592+ * not return until the connection is closed.
2593+ *
2594+ * Returns: %TRUE to stop further signal handlers from being called
2595+ */
2596+
2597+
2598+/**
2599+ * GTlsBackend:
2600+ *
2601+ * TLS (Transport Layer Security, aka SSL) backend. This is an
2602+ * internal type used to coordinate the different classes implemented
2603+ * by a TLS backend.
2604+ *
2605+ * Since: 2.28
2606+ */
2607+
2608+
2609+/**
2610+ * GTlsCertificate:
2611+ *
2612+ * Abstract base class for TLS certificate types.
2613+ *
2614+ * Since: 2.28
2615+ */
2616+
2617+
2618+/**
2619+ * GTlsCertificate:certificate:
2620+ *
2621+ * The DER (binary) encoded representation of the certificate.
2622+ * This property and the #GTlsCertificate:certificate-pem property
2623+ * represent the same data, just in different forms.
2624+ *
2625+ * Since: 2.28
2626+ */
2627+
2628+
2629+/**
2630+ * GTlsCertificate:certificate-pem:
2631+ *
2632+ * The PEM (ASCII) encoded representation of the certificate.
2633+ * This property and the #GTlsCertificate:certificate
2634+ * property represent the same data, just in different forms.
2635+ *
2636+ * Since: 2.28
2637+ */
2638+
2639+
2640+/**
2641+ * GTlsCertificate:issuer:
2642+ *
2643+ * A #GTlsCertificate representing the entity that issued this
2644+ * certificate. If %NULL, this means that the certificate is either
2645+ * self-signed, or else the certificate of the issuer is not
2646+ * available.
2647+ *
2648+ * Since: 2.28
2649+ */
2650+
2651+
2652+/**
2653+ * GTlsCertificate:private-key:
2654+ *
2655+ * The DER (binary) encoded representation of the certificate's
2656+ * private key, in either PKCS#1 format or unencrypted PKCS#8
2657+ * format. This property (or the #GTlsCertificate:private-key-pem
2658+ * property) can be set when constructing a key (eg, from a file),
2659+ * but cannot be read.
2660+ *
2661+ * PKCS#8 format is supported since 2.32; earlier releases only
2662+ * support PKCS#1. You can use the <literal>openssl rsa</literal>
2663+ * tool to convert PKCS#8 keys to PKCS#1.
2664+ *
2665+ * Since: 2.28
2666+ */
2667+
2668+
2669+/**
2670+ * GTlsCertificate:private-key-pem:
2671+ *
2672+ * The PEM (ASCII) encoded representation of the certificate's
2673+ * private key in either PKCS#1 format ("<literal>BEGIN RSA PRIVATE
2674+ * KEY</literal>") or unencrypted PKCS#8 format ("<literal>BEGIN
2675+ * PRIVATE KEY</literal>"). This property (or the
2676+ * #GTlsCertificate:private-key property) can be set when
2677+ * constructing a key (eg, from a file), but cannot be read.
2678+ *
2679+ * PKCS#8 format is supported since 2.32; earlier releases only
2680+ * support PKCS#1. You can use the <literal>openssl rsa</literal>
2681+ * tool to convert PKCS#8 keys to PKCS#1.
2682+ *
2683+ * Since: 2.28
2684+ */
2685+
2686+
2687+/**
2688+ * GTlsClientConnection:
2689+ *
2690+ * Abstract base class for the backend-specific client connection
2691+ * type.
2692+ *
2693+ * Since: 2.28
2694+ */
2695+
2696+
2697+/**
2698+ * GTlsClientConnection:accepted-cas:
2699+ *
2700+ * A list of the distinguished names of the Certificate Authorities
2701+ * that the server will accept client certificates signed by. If the
2702+ * server requests a client certificate during the handshake, then
2703+ * this property will be set after the handshake completes.
2704+ *
2705+ * Each item in the list is a #GByteArray which contains the complete
2706+ * subject DN of the certificate authority.
2707+ *
2708+ * Since: 2.28
2709+ */
2710+
2711+
2712+/**
2713+ * GTlsClientConnection:server-identity:
2714+ *
2715+ * A #GSocketConnectable describing the identity of the server that
2716+ * is expected on the other end of the connection.
2717+ *
2718+ * If the %G_TLS_CERTIFICATE_BAD_IDENTITY flag is set in
2719+ * #GTlsClientConnection:validation-flags, this object will be used
2720+ * to determine the expected identify of the remote end of the
2721+ * connection; if #GTlsClientConnection:server-identity is not set,
2722+ * or does not match the identity presented by the server, then the
2723+ * %G_TLS_CERTIFICATE_BAD_IDENTITY validation will fail.
2724+ *
2725+ * In addition to its use in verifying the server certificate,
2726+ * this is also used to give a hint to the server about what
2727+ * certificate we expect, which is useful for servers that serve
2728+ * virtual hosts.
2729+ *
2730+ * Since: 2.28
2731+ */
2732+
2733+
2734+/**
2735+ * GTlsClientConnection:use-ssl3:
2736+ *
2737+ * If %TRUE, tells the connection to use SSL 3.0 rather than trying
2738+ * to negotiate the best version of TLS or SSL to use. This can be
2739+ * used when talking to servers that don't implement version
2740+ * negotiation correctly and therefore refuse to handshake at all with
2741+ * a "modern" TLS handshake.
2742+ *
2743+ * Since: 2.28
2744+ */
2745+
2746+
2747+/**
2748+ * GTlsClientConnection:validation-flags:
2749+ *
2750+ * What steps to perform when validating a certificate received from
2751+ * a server. Server certificates that fail to validate in all of the
2752+ * ways indicated here will be rejected unless the application
2753+ * overrides the default via #GTlsConnection::accept-certificate.
2754+ *
2755+ * Since: 2.28
2756+ */
2757+
2758+
2759+/**
2760+ * GTlsConnection:
2761+ *
2762+ * Abstract base class for the backend-specific #GTlsClientConnection
2763+ * and #GTlsServerConnection types.
2764+ *
2765+ * Since: 2.28
2766+ */
2767+
2768+
2769+/**
2770+ * GTlsConnection::accept-certificate:
2771+ * @conn: a #GTlsConnection
2772+ * @peer_cert: the peer's #GTlsCertificate
2773+ * @errors: the problems with @peer_cert.
2774+ *
2775+ * Emitted during the TLS handshake after the peer certificate has
2776+ * been received. You can examine @peer_cert's certification path by
2777+ * calling g_tls_certificate_get_issuer() on it.
2778+ *
2779+ * For a client-side connection, @peer_cert is the server's
2780+ * certificate, and the signal will only be emitted if the
2781+ * certificate was not acceptable according to @conn's
2782+ * #GTlsClientConnection:validation_flags. If you would like the
2783+ * certificate to be accepted despite @errors, return %TRUE from the
2784+ * signal handler. Otherwise, if no handler accepts the certificate,
2785+ * the handshake will fail with %G_TLS_ERROR_BAD_CERTIFICATE.
2786+ *
2787+ * For a server-side connection, @peer_cert is the certificate
2788+ * presented by the client, if this was requested via the server's
2789+ * #GTlsServerConnection:authentication_mode. On the server side,
2790+ * the signal is always emitted when the client presents a
2791+ * certificate, and the certificate will only be accepted if a
2792+ * handler returns %TRUE.
2793+ *
2794+ * Note that if this signal is emitted as part of asynchronous I/O
2795+ * in the main thread, then you should not attempt to interact with
2796+ * the user before returning from the signal handler. If you want to
2797+ * let the user decide whether or not to accept the certificate, you
2798+ * would have to return %FALSE from the signal handler on the first
2799+ * attempt, and then after the connection attempt returns a
2800+ * %G_TLS_ERROR_HANDSHAKE, you can interact with the user, and if
2801+ * the user decides to accept the certificate, remember that fact,
2802+ * create a new connection, and return %TRUE from the signal handler
2803+ * the next time.
2804+ *
2805+ * If you are doing I/O in another thread, you do not
2806+ * need to worry about this, and can simply block in the signal
2807+ * handler until the UI thread returns an answer.
2808+ *
2809+ * Returns: %TRUE to accept @peer_cert (which will also immediately end the signal emission). %FALSE to allow the signal emission to continue, which will cause the handshake to fail if no one else overrides it.
2810+ * Since: 2.28
2811+ */
2812+
2813+
2814+/**
2815+ * GTlsConnection:base-io-stream:
2816+ *
2817+ * The #GIOStream that the connection wraps
2818+ *
2819+ * Since: 2.28
2820+ */
2821+
2822+
2823+/**
2824+ * GTlsConnection:certificate:
2825+ *
2826+ * The connection's certificate; see
2827+ * g_tls_connection_set_certificate().
2828+ *
2829+ * Since: 2.28
2830+ */
2831+
2832+
2833+/**
2834+ * GTlsConnection:database:
2835+ *
2836+ * The certificate database to use when verifying this TLS connection.
2837+ * If no cerificate database is set, then the default database will be
2838+ * used. See g_tls_backend_get_default_database().
2839+ *
2840+ * Since: 2.30
2841+ */
2842+
2843+
2844+/**
2845+ * GTlsConnection:interaction:
2846+ *
2847+ * A #GTlsInteraction object to be used when the connection or certificate
2848+ * database need to interact with the user. This will be used to prompt the
2849+ * user for passwords where necessary.
2850+ *
2851+ * Since: 2.30
2852+ */
2853+
2854+
2855+/**
2856+ * GTlsConnection:peer-certificate:
2857+ *
2858+ * The connection's peer's certificate, after the TLS handshake has
2859+ * completed and the certificate has been accepted. Note in
2860+ * particular that this is not yet set during the emission of
2861+ * #GTlsConnection::accept-certificate.
2862+ *
2863+ * (You can watch for a #GObject::notify signal on this property to
2864+ * detect when a handshake has occurred.)
2865+ *
2866+ * Since: 2.28
2867+ */
2868+
2869+
2870+/**
2871+ * GTlsConnection:peer-certificate-errors:
2872+ *
2873+ * The errors noticed-and-ignored while verifying
2874+ * #GTlsConnection:peer-certificate. Normally this should be 0, but
2875+ * it may not be if #GTlsClientConnection:validation-flags is not
2876+ * %G_TLS_CERTIFICATE_VALIDATE_ALL, or if
2877+ * #GTlsConnection::accept-certificate overrode the default
2878+ * behavior.
2879+ *
2880+ * Since: 2.28
2881+ */
2882+
2883+
2884+/**
2885+ * GTlsConnection:rehandshake-mode:
2886+ *
2887+ * The rehandshaking mode. See
2888+ * g_tls_connection_set_rehandshake_mode().
2889+ *
2890+ * Since: 2.28
2891+ */
2892+
2893+
2894+/**
2895+ * GTlsConnection:require-close-notify:
2896+ *
2897+ * Whether or not proper TLS close notification is required.
2898+ * See g_tls_connection_set_require_close_notify().
2899+ *
2900+ * Since: 2.28
2901+ */
2902+
2903+
2904+/**
2905+ * GTlsConnection:use-system-certdb:
2906+ *
2907+ * Whether or not the system certificate database will be used to
2908+ * verify peer certificates. See
2909+ * g_tls_connection_set_use_system_certdb().
2910+ *
2911+ * Deprecated: 2.30: Use GTlsConnection:database instead
2912+ */
2913+
2914+
2915+/**
2916+ * GTlsDatabase:
2917+ *
2918+ * Abstract base class for the backend-specific database types.
2919+ *
2920+ * Since: 2.30
2921+ */
2922+
2923+
2924+/**
2925+ * GTlsFileDatabase:
2926+ *
2927+ * Implemented by a #GTlsDatabase which allows you to load certificates
2928+ * from a file.
2929+ *
2930+ * Since: 2.30
2931+ */
2932+
2933+
2934+/**
2935+ * GTlsFileDatabase:anchors:
2936+ *
2937+ * The path to a file containing PEM encoded certificate authority
2938+ * root anchors. The certificates in this file will be treated as
2939+ * root authorities for the purpose of verifying other certificates
2940+ * via the g_tls_database_verify_chain() operation.
2941+ *
2942+ * Since: 2.30
2943+ */
2944+
2945+
2946+/**
2947+ * GTlsInteraction:
2948+ *
2949+ * An object representing interaction that the TLS connection and database
2950+ * might have with the user.
2951+ *
2952+ * Since: 2.30
2953+ */
2954+
2955+
2956+/**
2957+ * GTlsInteractionClass:
2958+ * @ask_password: ask for a password synchronously. If the implementation returns %G_TLS_INTERACTION_HANDLED, then the password argument should have been filled in by using g_tls_password_set_value() or a similar function.
2959+ * @ask_password_async: ask for a password asynchronously.
2960+ * @ask_password_finish: complete operation to ask for a password asynchronously. If the implementation returns %G_TLS_INTERACTION_HANDLED, then the password argument of the async method should have been filled in by using g_tls_password_set_value() or a similar function.
2961+ *
2962+ * The class for #GTlsInteraction. Derived classes implement the various
2963+ * virtual interaction methods to handle TLS interactions.
2964+ *
2965+ * Derived classes can choose to implement whichever interactions methods they'd
2966+ * like to support by overriding those virtual methods in their class
2967+ * initialization function. If a derived class implements an async method,
2968+ * it must also implement the corresponding finish method.
2969+ *
2970+ * The synchronous interaction methods should implement to display modal dialogs,
2971+ * and the asynchronous methods to display modeless dialogs.
2972+ *
2973+ * If the user cancels an interaction, then the result should be
2974+ * %G_TLS_INTERACTION_FAILED and the error should be set with a domain of
2975+ * %G_IO_ERROR and code of %G_IO_ERROR_CANCELLED.
2976+ *
2977+ * Since: 2.30
2978+ */
2979+
2980+
2981+/**
2982+ * GTlsPassword:
2983+ *
2984+ * An abstract interface representing a password used in TLS. Often used in
2985+ * user interaction such as unlocking a key storage token.
2986+ *
2987+ * Since: 2.30
2988+ */
2989+
2990+
2991+/**
2992+ * GTlsServerConnection:authentication-mode:
2993+ *
2994+ * The #GTlsAuthenticationMode for the server. This can be changed
2995+ * before calling g_tls_connection_handshake() if you want to
2996+ * rehandshake with a different mode from the initial handshake.
2997+ *
2998+ * Since: 2.28
2999+ */
3000+
3001+
3002+/**
3003+ * GUnixCredentialsMessage:credentials:
3004+ *
3005+ * The credentials stored in the message.
3006+ *
3007+ * Since: 2.26
3008+ */
3009+
3010+
3011+/**
3012+ * GUnixInputStream:close-fd:
3013+ *
3014+ * Whether to close the file descriptor when the stream is closed.
3015+ *
3016+ * Since: 2.20
3017+ */
3018+
3019+
3020+/**
3021+ * GUnixInputStream:fd:
3022+ *
3023+ * The file descriptor that the stream reads from.
3024+ *
3025+ * Since: 2.20
3026+ */
3027+
3028+
3029+/**
3030+ * GUnixMountMonitor::mountpoints-changed:
3031+ * @monitor: the object on which the signal is emitted
3032+ *
3033+ * Emitted when the unix mount points have changed.
3034+ */
3035+
3036+
3037+/**
3038+ * GUnixMountMonitor::mounts-changed:
3039+ * @monitor: the object on which the signal is emitted
3040+ *
3041+ * Emitted when the unix mounts have changed.
3042+ */
3043+
3044+
3045+/**
3046+ * GUnixOutputStream:close-fd:
3047+ *
3048+ * Whether to close the file descriptor when the stream is closed.
3049+ *
3050+ * Since: 2.20
3051+ */
3052+
3053+
3054+/**
3055+ * GUnixOutputStream:fd:
3056+ *
3057+ * The file descriptor that the stream writes to.
3058+ *
3059+ * Since: 2.20
3060+ */
3061+
3062+
3063+/**
3064+ * GUnixSocketAddress:
3065+ *
3066+ * A UNIX-domain (local) socket address, corresponding to a
3067+ * <type>struct sockaddr_un</type>.
3068+ */
3069+
3070+
3071+/**
3072+ * GUnixSocketAddress:abstract:
3073+ *
3074+ * Whether or not this is an abstract address
3075+ *
3076+ * Deprecated: Use #GUnixSocketAddress:address-type, which distinguishes between zero-padded and non-zero-padded abstract addresses.
3077+ */
3078+
3079+
3080+/**
3081+ * GVolume::changed:
3082+ *
3083+ * Emitted when the volume has been changed.
3084+ */
3085+
3086+
3087+/**
3088+ * GVolume::removed:
3089+ *
3090+ * This signal is emitted when the #GVolume have been removed. If
3091+ * the recipient is holding references to the object they should
3092+ * release them so the object can be finalized.
3093+ */
3094+
3095+
3096+/**
3097+ * GVolumeMonitor::drive-changed:
3098+ * @volume_monitor: The volume monitor emitting the signal.
3099+ * @drive: the drive that changed
3100+ *
3101+ * Emitted when a drive changes.
3102+ */
3103+
3104+
3105+/**
3106+ * GVolumeMonitor::drive-connected:
3107+ * @volume_monitor: The volume monitor emitting the signal.
3108+ * @drive: a #GDrive that was connected.
3109+ *
3110+ * Emitted when a drive is connected to the system.
3111+ */
3112+
3113+
3114+/**
3115+ * GVolumeMonitor::drive-disconnected:
3116+ * @volume_monitor: The volume monitor emitting the signal.
3117+ * @drive: a #GDrive that was disconnected.
3118+ *
3119+ * Emitted when a drive is disconnected from the system.
3120+ */
3121+
3122+
3123+/**
3124+ * GVolumeMonitor::drive-eject-button:
3125+ * @volume_monitor: The volume monitor emitting the signal.
3126+ * @drive: the drive where the eject button was pressed
3127+ *
3128+ * Emitted when the eject button is pressed on @drive.
3129+ *
3130+ * Since: 2.18
3131+ */
3132+
3133+
3134+/**
3135+ * GVolumeMonitor::drive-stop-button:
3136+ * @volume_monitor: The volume monitor emitting the signal.
3137+ * @drive: the drive where the stop button was pressed
3138+ *
3139+ * Emitted when the stop button is pressed on @drive.
3140+ *
3141+ * Since: 2.22
3142+ */
3143+
3144+
3145+/**
3146+ * GVolumeMonitor::mount-added:
3147+ * @volume_monitor: The volume monitor emitting the signal.
3148+ * @mount: a #GMount that was added.
3149+ *
3150+ * Emitted when a mount is added.
3151+ */
3152+
3153+
3154+/**
3155+ * GVolumeMonitor::mount-changed:
3156+ * @volume_monitor: The volume monitor emitting the signal.
3157+ * @mount: a #GMount that changed.
3158+ *
3159+ * Emitted when a mount changes.
3160+ */
3161+
3162+
3163+/**
3164+ * GVolumeMonitor::mount-pre-unmount:
3165+ * @volume_monitor: The volume monitor emitting the signal.
3166+ * @mount: a #GMount that is being unmounted.
3167+ *
3168+ * Emitted when a mount is about to be removed.
3169+ */
3170+
3171+
3172+/**
3173+ * GVolumeMonitor::mount-removed:
3174+ * @volume_monitor: The volume monitor emitting the signal.
3175+ * @mount: a #GMount that was removed.
3176+ *
3177+ * Emitted when a mount is removed.
3178+ */
3179+
3180+
3181+/**
3182+ * GVolumeMonitor::volume-added:
3183+ * @volume_monitor: The volume monitor emitting the signal.
3184+ * @volume: a #GVolume that was added.
3185+ *
3186+ * Emitted when a mountable volume is added to the system.
3187+ */
3188+
3189+
3190+/**
3191+ * GVolumeMonitor::volume-changed:
3192+ * @volume_monitor: The volume monitor emitting the signal.
3193+ * @volume: a #GVolume that changed.
3194+ *
3195+ * Emitted when mountable volume is changed.
3196+ */
3197+
3198+
3199+/**
3200+ * GVolumeMonitor::volume-removed:
3201+ * @volume_monitor: The volume monitor emitting the signal.
3202+ * @volume: a #GVolume that was removed.
3203+ *
3204+ * Emitted when a mountable volume is removed from the system.
3205+ */
3206+
3207+
3208+/**
3209+ * GWin32InputStream:close-handle:
3210+ *
3211+ * Whether to close the file handle when the stream is closed.
3212+ *
3213+ * Since: 2.26
3214+ */
3215+
3216+
3217+/**
3218+ * GWin32InputStream:handle:
3219+ *
3220+ * The handle that the stream reads from.
3221+ *
3222+ * Since: 2.26
3223+ */
3224+
3225+
3226+/**
3227+ * GWin32OutputStream:close-handle:
3228+ *
3229+ * Whether to close the file handle when the stream is closed.
3230+ *
3231+ * Since: 2.26
3232+ */
3233+
3234+
3235+/**
3236+ * GWin32OutputStream:handle:
3237+ *
3238+ * The file handle that the stream writes to.
3239+ *
3240+ * Since: 2.26
3241+ */
3242+
3243+
3244+/**
3245+ * GZlibCompressor:
3246+ *
3247+ * Zlib decompression
3248+ */
3249+
3250+
3251+/**
3252+ * GZlibCompressor:file-info:
3253+ *
3254+ * If set to a non-%NULL #GFileInfo object, and #GZlibCompressor:format is
3255+ * %G_ZLIB_COMPRESSOR_FORMAT_GZIP, the compressor will write the file name
3256+ * and modification time from the file info to the GZIP header.
3257+ *
3258+ * Since: 2.26
3259+ */
3260+
3261+
3262+/**
3263+ * GZlibDecompressor:
3264+ *
3265+ * Zlib decompression
3266+ */
3267+
3268+
3269+/**
3270+ * GZlibDecompressor:file-info:
3271+ *
3272+ * A #GFileInfo containing the information found in the GZIP header
3273+ * of the data stream processed, or %NULL if the header was not yet
3274+ * fully processed, is not present at all, or the compressor's
3275+ * #GZlibDecompressor:format property is not %G_ZLIB_COMPRESSOR_FORMAT_GZIP.
3276+ *
3277+ * Since: 2.26
3278+ */
3279+
3280+
3281+/**
3282+ * G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT:
3283+ *
3284+ * The purpose used to verify the client certificate in a TLS connection.
3285+ * Used by TLS servers.
3286+ */
3287+
3288+
3289+/**
3290+ * G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER:
3291+ *
3292+ * The purpose used to verify the server certificate in a TLS connection. This
3293+ * is the most common purpose in use. Used by TLS clients.
3294+ */
3295+
3296+
3297+/**
3298+ * G_TYPE_SETTINGS_SCHEMA:
3299+ *
3300+ * A boxed #GType corresponding to #GSettingsSchema.
3301+ *
3302+ * Since: 2.32
3303+ */
3304+
3305+
3306+/**
3307+ * G_TYPE_SETTINGS_SCHEMA_SOURCE:
3308+ *
3309+ * A boxed #GType corresponding to #GSettingsSchemaSource.
3310+ *
3311+ * Since: 2.32
3312+ */
3313+
3314+
3315+/**
3316+ * SECTION:extensionpoints
3317+ * @short_description: Extension Points
3318+ * @include: gio.h
3319+ * @see_also: <link linkend="extending-gio">Extending GIO</link>
3320+ *
3321+ * #GIOExtensionPoint provides a mechanism for modules to extend the
3322+ * functionality of the library or application that loaded it in an
3323+ * organized fashion.
3324+ *
3325+ * An extension point is identified by a name, and it may optionally
3326+ * require that any implementation must by of a certain type (or derived
3327+ * thereof). Use g_io_extension_point_register() to register an
3328+ * extension point, and g_io_extension_point_set_required_type() to
3329+ * set a required type.
3330+ *
3331+ * A module can implement an extension point by specifying the #GType
3332+ * that implements the functionality. Additionally, each implementation
3333+ * of an extension point has a name, and a priority. Use
3334+ * g_io_extension_point_implement() to implement an extension point.
3335+ *
3336+ * |[
3337+ * GIOExtensionPoint *ep;
3338+ *
3339+ * /&ast; Register an extension point &ast;/
3340+ * ep = g_io_extension_point_register ("my-extension-point");
3341+ * g_io_extension_point_set_required_type (ep, MY_TYPE_EXAMPLE);
3342+ * ]|
3343+ *
3344+ * |[
3345+ * /&ast; Implement an extension point &ast;/
3346+ * G_DEFINE_TYPE (MyExampleImpl, my_example_impl, MY_TYPE_EXAMPLE);
3347+ * g_io_extension_point_implement ("my-extension-point",
3348+ * my_example_impl_get_type (),
3349+ * "my-example",
3350+ * 10);
3351+ * ]|
3352+ *
3353+ * It is up to the code that registered the extension point how
3354+ * it uses the implementations that have been associated with it.
3355+ * Depending on the use case, it may use all implementations, or
3356+ * only the one with the highest priority, or pick a specific
3357+ * one by name.
3358+ *
3359+ * To avoid opening all modules just to find out what extension
3360+ * points they implement, GIO makes use of a caching mechanism,
3361+ * see <link linkend="gio-querymodules">gio-querymodules</link>.
3362+ * You are expected to run this command after installing a
3363+ * GIO module.
3364+ *
3365+ * The <envar>GIO_EXTRA_MODULES</envar> environment variable can be
3366+ * used to specify additional directories to automatically load modules
3367+ * from. This environment variable has the same syntax as the
3368+ * <envar>PATH</envar>. If two modules have the same base name in different
3369+ * directories, then the latter one will be ignored. If additional
3370+ * directories are specified GIO will load modules from the built-in
3371+ * directory last.
3372+ */
3373+
3374+
3375+/**
3376+ * SECTION:gaction
3377+ * @title: GAction
3378+ * @short_description: An action interface
3379+ *
3380+ * #GAction represents a single named action.
3381+ *
3382+ * The main interface to an action is that it can be activated with
3383+ * g_action_activate(). This results in the 'activate' signal being
3384+ * emitted. An activation has a #GVariant parameter (which may be
3385+ * %NULL). The correct type for the parameter is determined by a static
3386+ * parameter type (which is given at construction time).
3387+ *
3388+ * An action may optionally have a state, in which case the state may be
3389+ * set with g_action_change_state(). This call takes a #GVariant. The
3390+ * correct type for the state is determined by a static state type
3391+ * (which is given at construction time).
3392+ *
3393+ * The state may have a hint associated with it, specifying its valid
3394+ * range.
3395+ *
3396+ * #GAction is merely the interface to the concept of an action, as
3397+ * described above. Various implementations of actions exist, including
3398+ * #GSimpleAction and #GtkAction.
3399+ *
3400+ * In all cases, the implementing class is responsible for storing the
3401+ * name of the action, the parameter type, the enabled state, the
3402+ * optional state type and the state and emitting the appropriate
3403+ * signals when these change. The implementor responsible for filtering
3404+ * calls to g_action_activate() and g_action_change_state() for type
3405+ * safety and for the state being enabled.
3406+ *
3407+ * Probably the only useful thing to do with a #GAction is to put it
3408+ * inside of a #GSimpleActionGroup.
3409+ */
3410+
3411+
3412+/**
3413+ * SECTION:gactiongroup
3414+ * @title: GActionGroup
3415+ * @short_description: A group of actions
3416+ * @see_also: #GAction
3417+ *
3418+ * #GActionGroup represents a group of actions. Actions can be used to
3419+ * expose functionality in a structured way, either from one part of a
3420+ * program to another, or to the outside world. Action groups are often
3421+ * used together with a #GMenuModel that provides additional
3422+ * representation data for displaying the actions to the user, e.g. in
3423+ * a menu.
3424+ *
3425+ * The main way to interact with the actions in a GActionGroup is to
3426+ * activate them with g_action_group_activate_action(). Activating an
3427+ * action may require a #GVariant parameter. The required type of the
3428+ * parameter can be inquired with g_action_group_get_action_parameter_type().
3429+ * Actions may be disabled, see g_action_group_get_action_enabled().
3430+ * Activating a disabled action has no effect.
3431+ *
3432+ * Actions may optionally have a state in the form of a #GVariant. The
3433+ * current state of an action can be inquired with
3434+ * g_action_group_get_action_state(). Activating a stateful action may
3435+ * change its state, but it is also possible to set the state by calling
3436+ * g_action_group_change_action_state().
3437+ *
3438+ * As typical example, consider a text editing application which has an
3439+ * option to change the current font to 'bold'. A good way to represent
3440+ * this would be a stateful action, with a boolean state. Activating the
3441+ * action would toggle the state.
3442+ *
3443+ * Each action in the group has a unique name (which is a string). All
3444+ * method calls, except g_action_group_list_actions() take the name of
3445+ * an action as an argument.
3446+ *
3447+ * The #GActionGroup API is meant to be the 'public' API to the action
3448+ * group. The calls here are exactly the interaction that 'external
3449+ * forces' (eg: UI, incoming D-Bus messages, etc.) are supposed to have
3450+ * with actions. 'Internal' APIs (ie: ones meant only to be accessed by
3451+ * the action group implementation) are found on subclasses. This is
3452+ * why you will find - for example - g_action_group_get_action_enabled()
3453+ * but not an equivalent <function>set()</function> call.
3454+ *
3455+ * Signals are emitted on the action group in response to state changes
3456+ * on individual actions.
3457+ *
3458+ * Implementations of #GActionGroup should provide implementations for
3459+ * the virtual functions g_action_group_list_actions() and
3460+ * g_action_group_query_action(). The other virtual functions should
3461+ * not be implemented - their "wrappers" are actually implemented with
3462+ * calls to g_action_group_query_action().
3463+ */
3464+
3465+
3466+/**
3467+ * SECTION:gactiongroupexporter
3468+ * @title: GActionGroup exporter
3469+ * @short_description: Export GActionGroups on D-Bus
3470+ * @see_also: #GActionGroup, #GDBusActionGroup
3471+ *
3472+ * These functions support exporting a #GActionGroup on D-Bus.
3473+ * The D-Bus interface that is used is a private implementation
3474+ * detail.
3475+ *
3476+ * To access an exported #GActionGroup remotely, use
3477+ * g_dbus_action_group_get() to obtain a #GDBusActionGroup.
3478+ */
3479+
3480+
3481+/**
3482+ * SECTION:gactionmap
3483+ * @title: GActionMap
3484+ * @short_description: Interface for action containers
3485+ *
3486+ * The GActionMap interface is implemented by #GActionGroup
3487+ * implementations that operate by containing a number of
3488+ * named #GAction instances, such as #GSimpleActionGroup.
3489+ *
3490+ * One useful application of this interface is to map the
3491+ * names of actions from various action groups to unique,
3492+ * prefixed names (e.g. by prepending "app." or "win.").
3493+ * This is the motivation for the 'Map' part of the interface
3494+ * name.
3495+ *
3496+ * Since: 2.32
3497+ */
3498+
3499+
3500+/**
3501+ * SECTION:gappinfo
3502+ * @short_description: Application information and launch contexts
3503+ * @include: gio/gio.h
3504+ *
3505+ * #GAppInfo and #GAppLaunchContext are used for describing and launching
3506+ * applications installed on the system.
3507+ *
3508+ * As of GLib 2.20, URIs will always be converted to POSIX paths
3509+ * (using g_file_get_path()) when using g_app_info_launch() even if
3510+ * the application requested an URI and not a POSIX path. For example
3511+ * for an desktop-file based application with Exec key <literal>totem
3512+ * &percnt;U</literal> and a single URI,
3513+ * <literal>sftp://foo/file.avi</literal>, then
3514+ * <literal>/home/user/.gvfs/sftp on foo/file.avi</literal> will be
3515+ * passed. This will only work if a set of suitable GIO extensions
3516+ * (such as gvfs 2.26 compiled with FUSE support), is available and
3517+ * operational; if this is not the case, the URI will be passed
3518+ * unmodified to the application. Some URIs, such as
3519+ * <literal>mailto:</literal>, of course cannot be mapped to a POSIX
3520+ * path (in gvfs there's no FUSE mount for it); such URIs will be
3521+ * passed unmodified to the application.
3522+ *
3523+ * Specifically for gvfs 2.26 and later, the POSIX URI will be mapped
3524+ * back to the GIO URI in the #GFile constructors (since gvfs
3525+ * implements the #GVfs extension point). As such, if the application
3526+ * needs to examine the URI, it needs to use g_file_get_uri() or
3527+ * similar on #GFile. In other words, an application cannot assume
3528+ * that the URI passed to e.g. g_file_new_for_commandline_arg() is
3529+ * equal to the result of g_file_get_uri(). The following snippet
3530+ * illustrates this:
3531+ *
3532+ * <programlisting>
3533+ * GFile *f;
3534+ * char *uri;
3535+ *
3536+ * file = g_file_new_for_commandline_arg (uri_from_commandline);
3537+ *
3538+ * uri = g_file_get_uri (file);
3539+ * strcmp (uri, uri_from_commandline) == 0; // FALSE
3540+ * g_free (uri);
3541+ *
3542+ * if (g_file_has_uri_scheme (file, "cdda"))
3543+ * {
3544+ * // do something special with uri
3545+ * }
3546+ * g_object_unref (file);
3547+ * </programlisting>
3548+ *
3549+ * This code will work when both <literal>cdda://sr0/Track
3550+ * 1.wav</literal> and <literal>/home/user/.gvfs/cdda on sr0/Track
3551+ * 1.wav</literal> is passed to the application. It should be noted
3552+ * that it's generally not safe for applications to rely on the format
3553+ * of a particular URIs. Different launcher applications (e.g. file
3554+ * managers) may have different ideas of what a given URI means.
3555+ */
3556+
3557+
3558+/**
3559+ * SECTION:gapplication
3560+ * @title: GApplication
3561+ * @short_description: Core application class
3562+ *
3563+ * A #GApplication is the foundation of an application. It wraps some
3564+ * low-level platform-specific services and is intended to act as the
3565+ * foundation for higher-level application classes such as
3566+ * #GtkApplication or #MxApplication. In general, you should not use
3567+ * this class outside of a higher level framework.
3568+ *
3569+ * GApplication provides convenient life cycle management by maintaining
3570+ * a <firstterm>use count</firstterm> for the primary application instance.
3571+ * The use count can be changed using g_application_hold() and
3572+ * g_application_release(). If it drops to zero, the application exits.
3573+ * Higher-level classes such as #GtkApplication employ the use count to
3574+ * ensure that the application stays alive as long as it has any opened
3575+ * windows.
3576+ *
3577+ * Another feature that GApplication (optionally) provides is process
3578+ * uniqueness. Applications can make use of this functionality by
3579+ * providing a unique application ID. If given, only one application
3580+ * with this ID can be running at a time per session. The session
3581+ * concept is platform-dependent, but corresponds roughly to a graphical
3582+ * desktop login. When your application is launched again, its
3583+ * arguments are passed through platform communication to the already
3584+ * running program. The already running instance of the program is
3585+ * called the <firstterm>primary instance</firstterm>; for non-unique
3586+ * applications this is the always the current instance.
3587+ * On Linux, the D-Bus session bus is used for communication.
3588+ *
3589+ * The use of #GApplication differs from some other commonly-used
3590+ * uniqueness libraries (such as libunique) in important ways. The
3591+ * application is not expected to manually register itself and check if
3592+ * it is the primary instance. Instead, the <code>main()</code>
3593+ * function of a #GApplication should do very little more than
3594+ * instantiating the application instance, possibly connecting signal
3595+ * handlers, then calling g_application_run(). All checks for
3596+ * uniqueness are done internally. If the application is the primary
3597+ * instance then the startup signal is emitted and the mainloop runs.
3598+ * If the application is not the primary instance then a signal is sent
3599+ * to the primary instance and g_application_run() promptly returns.
3600+ * See the code examples below.
3601+ *
3602+ * If used, the expected form of an application identifier is very close
3603+ * to that of of a
3604+ * <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface">DBus bus name</ulink>.
3605+ * Examples include: "com.example.MyApp", "org.example.internal-apps.Calculator".
3606+ * For details on valid application identifiers, see g_application_id_is_valid().
3607+ *
3608+ * On Linux, the application identifier is claimed as a well-known bus name
3609+ * on the user's session bus. This means that the uniqueness of your
3610+ * application is scoped to the current session. It also means that your
3611+ * application may provide additional services (through registration of other
3612+ * object paths) at that bus name. The registration of these object paths
3613+ * should be done with the shared GDBus session bus. Note that due to the
3614+ * internal architecture of GDBus, method calls can be dispatched at any time
3615+ * (even if a main loop is not running). For this reason, you must ensure that
3616+ * any object paths that you wish to register are registered before #GApplication
3617+ * attempts to acquire the bus name of your application (which happens in
3618+ * g_application_register()). Unfortunately, this means that you cannot use
3619+ * g_application_get_is_remote() to decide if you want to register object paths.
3620+ *
3621+ * GApplication also implements the #GActionGroup and #GActionMap
3622+ * interfaces and lets you easily export actions by adding them with
3623+ * g_action_map_add_action(). When invoking an action by calling
3624+ * g_action_group_activate_action() on the application, it is always
3625+ * invoked in the primary instance. The actions are also exported on
3626+ * the session bus, and GIO provides the #GDBusActionGroup wrapper to
3627+ * conveniently access them remotely. GIO provides a #GDBusMenuModel wrapper
3628+ * for remote access to exported #GMenuModels.
3629+ *
3630+ * There is a number of different entry points into a GApplication:
3631+ * <itemizedlist>
3632+ * <listitem>via 'Activate' (i.e. just starting the application)</listitem>
3633+ * <listitem>via 'Open' (i.e. opening some files)</listitem>
3634+ * <listitem>by handling a command-line</listitem>
3635+ * <listitem>via activating an action</listitem>
3636+ * </itemizedlist>
3637+ * The #GApplication::startup signal lets you handle the application
3638+ * initialization for all of these in a single place.
3639+ *
3640+ * Regardless of which of these entry points is used to start the application,
3641+ * GApplication passes some <firstterm id="platform-data">platform
3642+ * data</firstterm> from the launching instance to the primary instance,
3643+ * in the form of a #GVariant dictionary mapping strings to variants.
3644+ * To use platform data, override the @before_emit or @after_emit virtual
3645+ * functions in your #GApplication subclass. When dealing with
3646+ * #GApplicationCommandLine objects, the platform data is directly
3647+ * available via g_application_command_line_get_cwd(),
3648+ * g_application_command_line_get_environ() and
3649+ * g_application_command_line_get_platform_data().
3650+ *
3651+ * As the name indicates, the platform data may vary depending on the
3652+ * operating system, but it always includes the current directory (key
3653+ * "cwd"), and optionally the environment (ie the set of environment
3654+ * variables and their values) of the calling process (key "environ").
3655+ * The environment is only added to the platform data if the
3656+ * %G_APPLICATION_SEND_ENVIRONMENT flag is set. #GApplication subclasses
3657+ * can add their own platform data by overriding the @add_platform_data
3658+ * virtual function. For instance, #GtkApplication adds startup notification
3659+ * data in this way.
3660+ *
3661+ * To parse commandline arguments you may handle the
3662+ * #GApplication::command-line signal or override the local_command_line()
3663+ * vfunc, to parse them in either the primary instance or the local instance,
3664+ * respectively.
3665+ *
3666+ * <example id="gapplication-example-open"><title>Opening files with a GApplication</title>
3667+ * <programlisting>
3668+ * <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gapplication-example-open.c">
3669+ * <xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
3670+ * </xi:include>
3671+ * </programlisting>
3672+ * </example>
3673+ *
3674+ * <example id="gapplication-example-actions"><title>A GApplication with actions</title>
3675+ * <programlisting>
3676+ * <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gapplication-example-actions.c">
3677+ * <xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
3678+ * </xi:include>
3679+ * </programlisting>
3680+ * </example>
3681+ *
3682+ * <example id="gapplication-example-menu"><title>A GApplication with menus</title>
3683+ * <programlisting>
3684+ * <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gapplication-example-menu.c">
3685+ * <xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
3686+ * </xi:include>
3687+ * </programlisting>
3688+ * </example>
3689+ *
3690+ * <example id="gapplication-example-dbushooks"><title>Using extra D-Bus hooks with a GApplication</title>
3691+ * <programlisting>
3692+ * <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gapplication-example-dbushooks.c">
3693+ * <xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
3694+ * </xi:include>
3695+ * </programlisting>
3696+ * </example>
3697+ */
3698+
3699+
3700+/**
3701+ * SECTION:gapplicationcommandline
3702+ * @title: GApplicationCommandLine
3703+ * @short_description: A command-line invocation of an application
3704+ * @see_also: #GApplication
3705+ *
3706+ * #GApplicationCommandLine represents a command-line invocation of
3707+ * an application. It is created by #GApplication and emitted
3708+ * in the #GApplication::command-line signal and virtual function.
3709+ *
3710+ * The class contains the list of arguments that the program was invoked
3711+ * with. It is also possible to query if the commandline invocation was
3712+ * local (ie: the current process is running in direct response to the
3713+ * invocation) or remote (ie: some other process forwarded the
3714+ * commandline to this process).
3715+ *
3716+ * The GApplicationCommandLine object can provide the @argc and @argv
3717+ * parameters for use with the #GOptionContext command-line parsing API,
3718+ * with the g_application_command_line_get_arguments() function. See
3719+ * <xref linkend="gapplication-example-cmdline3"/> for an example.
3720+ *
3721+ * The exit status of the originally-invoked process may be set and
3722+ * messages can be printed to stdout or stderr of that process. The
3723+ * lifecycle of the originally-invoked process is tied to the lifecycle
3724+ * of this object (ie: the process exits when the last reference is
3725+ * dropped).
3726+ *
3727+ * The main use for #GApplicationCommandLine (and the
3728+ * #GApplication::command-line signal) is 'Emacs server' like use cases:
3729+ * You can set the <envar>EDITOR</envar> environment variable to have
3730+ * e.g. git use your favourite editor to edit commit messages, and if you
3731+ * already have an instance of the editor running, the editing will happen
3732+ * in the running instance, instead of opening a new one. An important
3733+ * aspect of this use case is that the process that gets started by git
3734+ * does not return until the editing is done.
3735+ *
3736+ * <example id="gapplication-example-cmdline"><title>Handling commandline arguments with GApplication</title>
3737+ * <para>
3738+ * A simple example where the commandline is completely handled
3739+ * in the #GApplication::command-line handler. The launching instance exits
3740+ * once the signal handler in the primary instance has returned, and the
3741+ * return value of the signal handler becomes the exit status of the launching
3742+ * instance.
3743+ * </para>
3744+ * <programlisting>
3745+ * <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gapplication-example-cmdline.c">
3746+ * <xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
3747+ * </xi:include>
3748+ * </programlisting>
3749+ * </example>
3750+ *
3751+ * <example id="gapplication-example-cmdline2"><title>Split commandline handling</title>
3752+ * <para>
3753+ * An example of split commandline handling. Options that start with
3754+ * <literal>--local-</literal> are handled locally, all other options are
3755+ * passed to the #GApplication::command-line handler which runs in the primary
3756+ * instance.
3757+ * </para>
3758+ * <programlisting>
3759+ * <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gapplication-example-cmdline2.c">
3760+ * <xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
3761+ * </xi:include>
3762+ * </programlisting>
3763+ * </example>
3764+ *
3765+ * <example id="gapplication-example-cmdline3"><title>Deferred commandline handling</title>
3766+ * <para>
3767+ * An example of deferred commandline handling. Here, the commandline is
3768+ * not completely handled before the #GApplication::command-line handler
3769+ * returns. Instead, we keep a reference to the GApplicationCommandLine
3770+ * object and handle it later(in this example, in an idle). Note that it
3771+ * is necessary to hold the application until you are done with the
3772+ * commandline.
3773+ * </para>
3774+ * <para>
3775+ * This example also shows how to use #GOptionContext for parsing the
3776+ * commandline arguments. Note that it is necessary to disable the
3777+ * built-in help-handling of #GOptionContext, since it calls exit()
3778+ * after printing help, which is not what you want to happen in
3779+ * the primary instance.
3780+ * </para>
3781+ * <programlisting>
3782+ * <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gapplication-example-cmdline3.c">
3783+ * <xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
3784+ * </xi:include>
3785+ * </programlisting>
3786+ * </example>
3787+ */
3788+
3789+
3790+/**
3791+ * SECTION:gasyncinitable
3792+ * @short_description: Asynchronously failable object initialization interface
3793+ * @include: gio/gio.h
3794+ * @see_also: #GInitable
3795+ *
3796+ * This is the asynchronous version of #GInitable; it behaves the same
3797+ * in all ways except that initialization is asynchronous. For more details
3798+ * see the descriptions on #GInitable.
3799+ *
3800+ * A class may implement both the #GInitable and #GAsyncInitable interfaces.
3801+ *
3802+ * Users of objects implementing this are not intended to use the interface
3803+ * method directly; instead it will be used automatically in various ways.
3804+ * For C applications you generally just call g_async_initable_new_async()
3805+ * directly, or indirectly via a foo_thing_new_async() wrapper. This will call
3806+ * g_async_initable_init_async() under the cover, calling back with %NULL and
3807+ * a set %GError on failure.
3808+ *
3809+ * A typical implementation might look something like this:
3810+ *
3811+ * |[
3812+ * enum {
3813+ * NOT_INITIALIZED,
3814+ * INITIALIZING,
3815+ * INITIALIZED
3816+ * };
3817+ *
3818+ * static void
3819+ * _foo_ready_cb (Foo *self)
3820+ * {
3821+ * GList *l;
3822+ *
3823+ * self->priv->state = INITIALIZED;
3824+ *
3825+ * for (l = self->priv->init_results; l != NULL; l = l->next)
3826+ * {
3827+ * GTask *task = l->data;
3828+ *
3829+ * if (self->priv->success)
3830+ * g_task_return_boolean (task, TRUE);
3831+ * else
3832+ * g_task_return_new_error (task, ...);
3833+ * g_object_unref (task);
3834+ * }
3835+ *
3836+ * g_list_free (self->priv->init_results);
3837+ * self->priv->init_results = NULL;
3838+ * }
3839+ *
3840+ * static void
3841+ * foo_init_async (GAsyncInitable *initable,
3842+ * int io_priority,
3843+ * GCancellable *cancellable,
3844+ * GAsyncReadyCallback callback,
3845+ * gpointer user_data)
3846+ * {
3847+ * Foo *self = FOO (initable);
3848+ * GTask *task;
3849+ *
3850+ * task = g_task_new (initable, cancellable, callback, user_data);
3851+ *
3852+ * switch (self->priv->state)
3853+ * {
3854+ * case NOT_INITIALIZED:
3855+ * _foo_get_ready (self);
3856+ * self->priv->init_results = g_list_append (self->priv->init_results,
3857+ * task);
3858+ * self->priv->state = INITIALIZING;
3859+ * break;
3860+ * case INITIALIZING:
3861+ * self->priv->init_results = g_list_append (self->priv->init_results,
3862+ * task);
3863+ * break;
3864+ * case INITIALIZED:
3865+ * if (!self->priv->success)
3866+ * g_task_return_new_error (task, ...);
3867+ * else
3868+ * g_task_return_boolean (task, TRUE);
3869+ * g_object_unref (task);
3870+ * break;
3871+ * }
3872+ * }
3873+ *
3874+ * static gboolean
3875+ * foo_init_finish (GAsyncInitable *initable,
3876+ * GAsyncResult *result,
3877+ * GError **error)
3878+ * {
3879+ * g_return_val_if_fail (g_task_is_valid (result, initable), FALSE);
3880+ *
3881+ * return g_task_propagate_boolean (G_TASK (result), error);
3882+ * }
3883+ *
3884+ * static void
3885+ * foo_async_initable_iface_init (gpointer g_iface,
3886+ * gpointer data)
3887+ * {
3888+ * GAsyncInitableIface *iface = g_iface;
3889+ *
3890+ * iface->init_async = foo_init_async;
3891+ * iface->init_finish = foo_init_finish;
3892+ * }
3893+ * ]|
3894+ */
3895+
3896+
3897+/**
3898+ * SECTION:gasyncresult
3899+ * @short_description: Asynchronous Function Results
3900+ * @include: gio/gio.h
3901+ * @see_also: #GTask
3902+ *
3903+ * Provides a base class for implementing asynchronous function results.
3904+ *
3905+ * Asynchronous operations are broken up into two separate operations
3906+ * which are chained together by a #GAsyncReadyCallback. To begin
3907+ * an asynchronous operation, provide a #GAsyncReadyCallback to the
3908+ * asynchronous function. This callback will be triggered when the
3909+ * operation has completed, and will be passed a #GAsyncResult instance
3910+ * filled with the details of the operation's success or failure, the
3911+ * object the asynchronous function was started for and any error codes
3912+ * returned. The asynchronous callback function is then expected to call
3913+ * the corresponding "_finish()" function, passing the object the
3914+ * function was called for, the #GAsyncResult instance, and (optionally)
3915+ * an @error to grab any error conditions that may have occurred.
3916+ *
3917+ * The "_finish()" function for an operation takes the generic result
3918+ * (of type #GAsyncResult) and returns the specific result that the
3919+ * operation in question yields (e.g. a #GFileEnumerator for a
3920+ * "enumerate children" operation). If the result or error status of the
3921+ * operation is not needed, there is no need to call the "_finish()"
3922+ * function; GIO will take care of cleaning up the result and error
3923+ * information after the #GAsyncReadyCallback returns. You can pass
3924+ * %NULL for the #GAsyncReadyCallback if you don't need to take any
3925+ * action at all after the operation completes. Applications may also
3926+ * take a reference to the #GAsyncResult and call "_finish()" later;
3927+ * however, the "_finish()" function may be called at most once.
3928+ *
3929+ * Example of a typical asynchronous operation flow:
3930+ * |[
3931+ * void _theoretical_frobnitz_async (Theoretical *t,
3932+ * GCancellable *c,
3933+ * GAsyncReadyCallback *cb,
3934+ * gpointer u);
3935+ *
3936+ * gboolean _theoretical_frobnitz_finish (Theoretical *t,
3937+ * GAsyncResult *res,
3938+ * GError **e);
3939+ *
3940+ * static void
3941+ * frobnitz_result_func (GObject *source_object,
3942+ * GAsyncResult *res,
3943+ * gpointer user_data)
3944+ * {
3945+ * gboolean success = FALSE;
3946+ *
3947+ * success = _theoretical_frobnitz_finish (source_object, res, NULL);
3948+ *
3949+ * if (success)
3950+ * g_printf ("Hurray!\n");
3951+ * else
3952+ * g_printf ("Uh oh!\n");
3953+ *
3954+ * /<!-- -->* ... *<!-- -->/
3955+ *
3956+ * }
3957+ *
3958+ * int main (int argc, void *argv[])
3959+ * {
3960+ * /<!-- -->* ... *<!-- -->/
3961+ *
3962+ * _theoretical_frobnitz_async (theoretical_data,
3963+ * NULL,
3964+ * frobnitz_result_func,
3965+ * NULL);
3966+ *
3967+ * /<!-- -->* ... *<!-- -->/
3968+ * }
3969+ * ]|
3970+ *
3971+ * The callback for an asynchronous operation is called only once, and is
3972+ * always called, even in the case of a cancelled operation. On cancellation
3973+ * the result is a %G_IO_ERROR_CANCELLED error.
3974+ *
3975+ * <para id="io-priority"><indexterm><primary>I/O
3976+ * priority</primary></indexterm> Many I/O-related asynchronous
3977+ * operations have a priority parameter, which is used in certain
3978+ * cases to determine the order in which operations are executed. They
3979+ * are <emphasis>not</emphasis> used to determine system-wide I/O
3980+ * scheduling. Priorities are integers, with lower numbers indicating
3981+ * higher priority. It is recommended to choose priorities between
3982+ * %G_PRIORITY_LOW and %G_PRIORITY_HIGH, with %G_PRIORITY_DEFAULT as a
3983+ * default. </para>
3984+ */
3985+
3986+
3987+/**
3988+ * SECTION:gbufferedinputstream
3989+ * @short_description: Buffered Input Stream
3990+ * @include: gio/gio.h
3991+ * @see_also: #GFilterInputStream, #GInputStream
3992+ *
3993+ * Buffered input stream implements #GFilterInputStream and provides
3994+ * for buffered reads.
3995+ *
3996+ * By default, #GBufferedInputStream's buffer size is set at 4 kilobytes.
3997+ *
3998+ * To create a buffered input stream, use g_buffered_input_stream_new(),
3999+ * or g_buffered_input_stream_new_sized() to specify the buffer's size at
4000+ * construction.
4001+ *
4002+ * To get the size of a buffer within a buffered input stream, use
4003+ * g_buffered_input_stream_get_buffer_size(). To change the size of a
4004+ * buffered input stream's buffer, use
4005+ * g_buffered_input_stream_set_buffer_size(). Note that the buffer's size
4006+ * cannot be reduced below the size of the data within the buffer.
4007+ */
4008+
4009+
4010+/**
4011+ * SECTION:gbufferedoutputstream
4012+ * @short_description: Buffered Output Stream
4013+ * @include: gio/gio.h
4014+ * @see_also: #GFilterOutputStream, #GOutputStream
4015+ *
4016+ * Buffered output stream implements #GFilterOutputStream and provides
4017+ * for buffered writes.
4018+ *
4019+ * By default, #GBufferedOutputStream's buffer size is set at 4 kilobytes.
4020+ *
4021+ * To create a buffered output stream, use g_buffered_output_stream_new(),
4022+ * or g_buffered_output_stream_new_sized() to specify the buffer's size
4023+ * at construction.
4024+ *
4025+ * To get the size of a buffer within a buffered input stream, use
4026+ * g_buffered_output_stream_get_buffer_size(). To change the size of a
4027+ * buffered output stream's buffer, use
4028+ * g_buffered_output_stream_set_buffer_size(). Note that the buffer's
4029+ * size cannot be reduced below the size of the data within the buffer.
4030+ */
4031+
4032+
4033+/**
4034+ * SECTION:gcancellable
4035+ * @short_description: Thread-safe Operation Cancellation Stack
4036+ * @include: gio/gio.h
4037+ *
4038+ * GCancellable is a thread-safe operation cancellation stack used
4039+ * throughout GIO to allow for cancellation of synchronous and
4040+ * asynchronous operations.
4041+ */
4042+
4043+
4044+/**
4045+ * SECTION:gcharsetconverter
4046+ * @short_description: Convert between charsets
4047+ * @include: gio/gio.h
4048+ *
4049+ * #GCharsetConverter is an implementation of #GConverter based on
4050+ * GIConv.
4051+ */
4052+
4053+
4054+/**
4055+ * SECTION:gcontenttype
4056+ * @short_description: Platform-specific content typing
4057+ * @include: gio/gio.h
4058+ *
4059+ * A content type is a platform specific string that defines the type
4060+ * of a file. On UNIX it is a <ulink url="http://www.wikipedia.org/wiki/Internet_media_type">mime type</ulink> like "text/plain" or "image/png".
4061+ * On Win32 it is an extension string like ".doc", ".txt" or a perceived
4062+ * string like "audio". Such strings can be looked up in the registry at
4063+ * HKEY_CLASSES_ROOT.
4064+ */
4065+
4066+
4067+/**
4068+ * SECTION:gconverter
4069+ * @short_description: Data conversion interface
4070+ * @include: gio/gio.h
4071+ * @see_also: #GInputStream, #GOutputStream
4072+ *
4073+ * #GConverter is implemented by objects that convert
4074+ * binary data in various ways. The conversion can be
4075+ * stateful and may fail at any place.
4076+ *
4077+ * Some example conversions are: character set conversion,
4078+ * compression, decompression and regular expression
4079+ * replace.
4080+ *
4081+ * Since: 2.24
4082+ */
4083+
4084+
4085+/**
4086+ * SECTION:gconverterinputstream
4087+ * @short_description: Converter Input Stream
4088+ * @include: gio/gio.h
4089+ * @see_also: #GInputStream, #GConverter
4090+ *
4091+ * Converter input stream implements #GInputStream and allows
4092+ * conversion of data of various types during reading.
4093+ *
4094+ * As of GLib 2.34, #GConverterInputStream implements
4095+ * #GPollableInputStream.
4096+ */
4097+
4098+
4099+/**
4100+ * SECTION:gconverteroutputstream
4101+ * @short_description: Converter Output Stream
4102+ * @include: gio/gio.h
4103+ * @see_also: #GOutputStream, #GConverter
4104+ *
4105+ * Converter output stream implements #GOutputStream and allows
4106+ * conversion of data of various types during reading.
4107+ *
4108+ * As of GLib 2.34, #GConverterOutputStream implements
4109+ * #GPollableOutputStream.
4110+ */
4111+
4112+
4113+/**
4114+ * SECTION:gcredentials
4115+ * @short_description: An object containing credentials
4116+ * @include: gio/gio.h
4117+ *
4118+ * The #GCredentials type is a reference-counted wrapper for native
4119+ * credentials. This information is typically used for identifying,
4120+ * authenticating and authorizing other processes.
4121+ *
4122+ * Some operating systems supports looking up the credentials of the
4123+ * remote peer of a communication endpoint - see e.g.
4124+ * g_socket_get_credentials().
4125+ *
4126+ * Some operating systems supports securely sending and receiving
4127+ * credentials over a Unix Domain Socket, see
4128+ * #GUnixCredentialsMessage, g_unix_connection_send_credentials() and
4129+ * g_unix_connection_receive_credentials() for details.
4130+ *
4131+ * On Linux, the native credential type is a <type>struct ucred</type>
4132+ * - see the
4133+ * <citerefentry><refentrytitle>unix</refentrytitle><manvolnum>7</manvolnum></citerefentry>
4134+ * man page for details. This corresponds to
4135+ * %G_CREDENTIALS_TYPE_LINUX_UCRED.
4136+ *
4137+ * On FreeBSD, the native credential type is a <type>struct cmsgcred</type>.
4138+ * This corresponds to %G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED.
4139+ *
4140+ * On OpenBSD, the native credential type is a <type>struct sockpeercred</type>.
4141+ * This corresponds to %G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED.
4142+ */
4143+
4144+
4145+/**
4146+ * SECTION:gdatainputstream
4147+ * @short_description: Data Input Stream
4148+ * @include: gio/gio.h
4149+ * @see_also: #GInputStream
4150+ *
4151+ * Data input stream implements #GInputStream and includes functions for
4152+ * reading structured data directly from a binary input stream.
4153+ */
4154+
4155+
4156+/**
4157+ * SECTION:gdataoutputstream
4158+ * @short_description: Data Output Stream
4159+ * @include: gio/gio.h
4160+ * @see_also: #GOutputStream
4161+ *
4162+ * Data output stream implements #GOutputStream and includes functions for
4163+ * writing data directly to an output stream.
4164+ */
4165+
4166+
4167+/**
4168+ * SECTION:gdbusactiongroup
4169+ * @title: GDBusActionGroup
4170+ * @short_description: A D-Bus GActionGroup implementation
4171+ * @see_also: <link linkend="gio-GActionGroup-exporter">GActionGroup exporter</link>
4172+ *
4173+ * #GDBusActionGroup is an implementation of the #GActionGroup
4174+ * interface that can be used as a proxy for an action group
4175+ * that is exported over D-Bus with g_dbus_connection_export_action_group().
4176+ */
4177+
4178+
4179+/**
4180+ * SECTION:gdbusaddress
4181+ * @title: D-Bus Addresses
4182+ * @short_description: D-Bus connection endpoints
4183+ * @include: gio/gio.h
4184+ *
4185+ * Routines for working with D-Bus addresses. A D-Bus address is a string
4186+ * like "unix:tmpdir=/tmp/my-app-name". The exact format of addresses
4187+ * is explained in detail in the <link linkend="http://dbus.freedesktop.org/doc/dbus-specification.html&num;addresses">D-Bus specification</link>.
4188+ */
4189+
4190+
4191+/**
4192+ * SECTION:gdbusauthobserver
4193+ * @short_description: Object used for authenticating connections
4194+ * @include: gio/gio.h
4195+ *
4196+ * The #GDBusAuthObserver type provides a mechanism for participating
4197+ * in how a #GDBusServer (or a #GDBusConnection) authenticates remote
4198+ * peers. Simply instantiate a #GDBusAuthObserver and connect to the
4199+ * signals you are interested in. Note that new signals may be added
4200+ * in the future
4201+ *
4202+ * For example, if you only want to allow D-Bus connections from
4203+ * processes owned by the same uid as the server, you would use a
4204+ * signal handler like the following:
4205+ * <example id="auth-observer"><title>Controlling Authentication</title><programlisting>
4206+ * static gboolean
4207+ * on_authorize_authenticated_peer (GDBusAuthObserver *observer,
4208+ * GIOStream *stream,
4209+ * GCredentials *credentials,
4210+ * gpointer user_data)
4211+ * {
4212+ * gboolean authorized;
4213+ *
4214+ * authorized = FALSE;
4215+ * if (credentials != NULL)
4216+ * {
4217+ * GCredentials *own_credentials;
4218+ * own_credentials = g_credentials_new ();
4219+ * if (g_credentials_is_same_user (credentials, own_credentials, NULL))
4220+ * authorized = TRUE;
4221+ * g_object_unref (own_credentials);
4222+ * }
4223+ *
4224+ * return authorized;
4225+ * }
4226+ * </programlisting></example>
4227+ */
4228+
4229+
4230+/**
4231+ * SECTION:gdbusconnection
4232+ * @short_description: D-Bus Connections
4233+ * @include: gio/gio.h
4234+ *
4235+ * The #GDBusConnection type is used for D-Bus connections to remote
4236+ * peers such as a message buses. It is a low-level API that offers a
4237+ * lot of flexibility. For instance, it lets you establish a connection
4238+ * over any transport that can by represented as an #GIOStream.
4239+ *
4240+ * This class is rarely used directly in D-Bus clients. If you are writing
4241+ * an D-Bus client, it is often easier to use the g_bus_own_name(),
4242+ * g_bus_watch_name() or g_dbus_proxy_new_for_bus() APIs.
4243+ *
4244+ * As an exception to the usual GLib rule that a particular object must not be
4245+ * used by two threads at the same time, #GDBusConnection's methods may be
4246+ * called from any thread<footnote>
4247+ * <para>
4248+ * This is so that g_bus_get() and g_bus_get_sync() can safely return the
4249+ * same #GDBusConnection when called from any thread.
4250+ * </para>
4251+ * </footnote>.
4252+ *
4253+ * Most of the ways to obtain a #GDBusConnection automatically initialize it
4254+ * (i.e. connect to D-Bus): for instance, g_dbus_connection_new() and
4255+ * g_bus_get(), and the synchronous versions of those methods, give you an
4256+ * initialized connection. Language bindings for GIO should use
4257+ * g_initable_new() or g_async_initable_new_async(), which also initialize the
4258+ * connection.
4259+ *
4260+ * If you construct an uninitialized #GDBusConnection, such as via
4261+ * g_object_new(), you must initialize it via g_initable_init() or
4262+ * g_async_initable_init_async() before using its methods or properties.
4263+ * Calling methods or accessing properties on a #GDBusConnection that has not
4264+ * completed initialization successfully is considered to be invalid, and leads
4265+ * to undefined behaviour. In particular, if initialization fails with a
4266+ * #GError, the only valid thing you can do with that #GDBusConnection is to
4267+ * free it with g_object_unref().
4268+ *
4269+ * <example id="gdbus-server"><title>D-Bus server example</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gdbus-example-server.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
4270+ *
4271+ * <example id="gdbus-subtree-server"><title>D-Bus subtree example</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gdbus-example-subtree.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
4272+ *
4273+ * <example id="gdbus-unix-fd-client"><title>D-Bus UNIX File Descriptor example</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gdbus-example-unix-fd-client.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
4274+ *
4275+ * <example id="gdbus-export"><title>Exporting a GObject</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gdbus-example-export.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
4276+ */
4277+
4278+
4279+/**
4280+ * SECTION:gdbuserror
4281+ * @title: GDBusError
4282+ * @short_description: Mapping D-Bus errors to and from GError
4283+ * @include: gio/gio.h
4284+ *
4285+ * All facilities that return errors from remote methods (such as
4286+ * g_dbus_connection_call_sync()) use #GError to represent both D-Bus
4287+ * errors (e.g. errors returned from the other peer) and locally
4288+ * in-process generated errors.
4289+ *
4290+ * To check if a returned #GError is an error from a remote peer, use
4291+ * g_dbus_error_is_remote_error(). To get the actual D-Bus error name,
4292+ * use g_dbus_error_get_remote_error(). Before presenting an error,
4293+ * always use g_dbus_error_strip_remote_error().
4294+ *
4295+ * In addition, facilities used to return errors to a remote peer also
4296+ * use #GError. See g_dbus_method_invocation_return_error() for
4297+ * discussion about how the D-Bus error name is set.
4298+ *
4299+ * Applications can associate a #GError error domain with a set of D-Bus errors in order to
4300+ * automatically map from D-Bus errors to #GError and back. This
4301+ * is typically done in the function returning the #GQuark for the
4302+ * error domain:
4303+ * <example id="error-registration"><title>Error Registration</title><programlisting>
4304+ * /<!-- -->* foo-bar-error.h: *<!-- -->/
4305+ *
4306+ * #define FOO_BAR_ERROR (foo_bar_error_quark ())
4307+ * GQuark foo_bar_error_quark (void);
4308+ *
4309+ * typedef enum
4310+ * {
4311+ * FOO_BAR_ERROR_FAILED,
4312+ * FOO_BAR_ERROR_ANOTHER_ERROR,
4313+ * FOO_BAR_ERROR_SOME_THIRD_ERROR,
4314+ * FOO_BAR_N_ERRORS /<!-- -->*< skip >*<!-- -->/
4315+ * } FooBarError;
4316+ *
4317+ * /<!-- -->* foo-bar-error.c: *<!-- -->/
4318+ *
4319+ * static const GDBusErrorEntry foo_bar_error_entries[] =
4320+ * {
4321+ * {FOO_BAR_ERROR_FAILED, "org.project.Foo.Bar.Error.Failed"},
4322+ * {FOO_BAR_ERROR_ANOTHER_ERROR, "org.project.Foo.Bar.Error.AnotherError"},
4323+ * {FOO_BAR_ERROR_SOME_THIRD_ERROR, "org.project.Foo.Bar.Error.SomeThirdError"},
4324+ * };
4325+ *
4326+ * /<!-- -->* Ensure that every error code has an associated D-Bus error name *<!-- -->/
4327+ * G_STATIC_ASSERT (G_N_ELEMENTS (foo_bar_error_entries) == FOO_BAR_N_ERRORS);
4328+ *
4329+ * GQuark
4330+ * foo_bar_error_quark (void)
4331+ * {
4332+ * static volatile gsize quark_volatile = 0;
4333+ * g_dbus_error_register_error_domain ("foo-bar-error-quark",
4334+ * &quark_volatile,
4335+ * foo_bar_error_entries,
4336+ * G_N_ELEMENTS (foo_bar_error_entries));
4337+ * return (GQuark) quark_volatile;
4338+ * }
4339+ * </programlisting></example>
4340+ * With this setup, a D-Bus peer can transparently pass e.g. %FOO_BAR_ERROR_ANOTHER_ERROR and
4341+ * other peers will see the D-Bus error name <literal>org.project.Foo.Bar.Error.AnotherError</literal>.
4342+ *
4343+ * If the other peer is using GDBus, and has registered the association with
4344+ * g_dbus_error_register_error_domain() in advance (e.g. by invoking the %FOO_BAR_ERROR quark
4345+ * generation itself in the previous example) the peer will see also %FOO_BAR_ERROR_ANOTHER_ERROR instead
4346+ * of %G_IO_ERROR_DBUS_ERROR. Note that GDBus clients can still recover
4347+ * <literal>org.project.Foo.Bar.Error.AnotherError</literal> using g_dbus_error_get_remote_error().
4348+ *
4349+ * Note that errors in the %G_DBUS_ERROR error domain is intended only
4350+ * for returning errors from a remote message bus process. Errors
4351+ * generated locally in-process by e.g. #GDBusConnection is from the
4352+ * %G_IO_ERROR domain.
4353+ */
4354+
4355+
4356+/**
4357+ * SECTION:gdbusinterface
4358+ * @short_description: Base type for D-Bus interfaces
4359+ * @include: gio/gio.h
4360+ *
4361+ * The #GDBusInterface type is the base type for D-Bus interfaces both
4362+ * on the service side (see #GDBusInterfaceSkeleton) and client side
4363+ * (see #GDBusProxy).
4364+ */
4365+
4366+
4367+/**
4368+ * SECTION:gdbusinterfaceskeleton
4369+ * @short_description: Service-side D-Bus interface
4370+ * @include: gio/gio.h
4371+ *
4372+ * Abstract base class for D-Bus interfaces on the service side.
4373+ */
4374+
4375+
4376+/**
4377+ * SECTION:gdbusintrospection
4378+ * @title: D-Bus Introspection Data
4379+ * @short_description: Node and interface description data structures
4380+ * @include: gio/gio.h
4381+ *
4382+ * Various data structures and convenience routines to parse and
4383+ * generate D-Bus introspection XML. Introspection information is
4384+ * used when registering objects with g_dbus_connection_register_object().
4385+ *
4386+ * The format of D-Bus introspection XML is specified in the
4387+ * <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html#introspection-format">D-Bus specification</ulink>.
4388+ */
4389+
4390+
4391+/**
4392+ * SECTION:gdbusmenumodel
4393+ * @title: GDBusMenuModel
4394+ * @short_description: A D-Bus GMenuModel implementation
4395+ * @see_also: <link linkend="gio-GMenuModel-exporter">GMenuModel Exporter</link>
4396+ *
4397+ * #GDBusMenuModel is an implementation of #GMenuModel that can be used
4398+ * as a proxy for a menu model that is exported over D-Bus with
4399+ * g_dbus_connection_export_menu_model().
4400+ */
4401+
4402+
4403+/**
4404+ * SECTION:gdbusmessage
4405+ * @short_description: D-Bus Message
4406+ * @include: gio/gio.h
4407+ *
4408+ * A type for representing D-Bus messages that can be sent or received
4409+ * on a #GDBusConnection.
4410+ */
4411+
4412+
4413+/**
4414+ * SECTION:gdbusmethodinvocation
4415+ * @short_description: Object for handling remote calls
4416+ * @include: gio/gio.h
4417+ *
4418+ * Instances of the #GDBusMethodInvocation class are used when
4419+ * handling D-Bus method calls. It provides a way to asynchronously
4420+ * return results and errors.
4421+ *
4422+ * The normal way to obtain a #GDBusMethodInvocation object is to receive
4423+ * it as an argument to the handle_method_call() function in a
4424+ * #GDBusInterfaceVTable that was passed to g_dbus_connection_register_object().
4425+ */
4426+
4427+
4428+/**
4429+ * SECTION:gdbusnameowning
4430+ * @title: Owning Bus Names
4431+ * @short_description: Simple API for owning bus names
4432+ * @include: gio/gio.h
4433+ *
4434+ * Convenience API for owning bus names.
4435+ *
4436+ * <example id="gdbus-owning-names"><title>Simple application owning a name</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gdbus-example-own-name.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
4437+ */
4438+
4439+
4440+/**
4441+ * SECTION:gdbusnamewatching
4442+ * @title: Watching Bus Names
4443+ * @short_description: Simple API for watching bus names
4444+ * @include: gio/gio.h
4445+ *
4446+ * Convenience API for watching bus names.
4447+ *
4448+ * <example id="gdbus-watching-names"><title>Simple application watching a name</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gdbus-example-watch-name.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
4449+ */
4450+
4451+
4452+/**
4453+ * SECTION:gdbusobject
4454+ * @short_description: Base type for D-Bus objects
4455+ * @include: gio/gio.h
4456+ *
4457+ * The #GDBusObject type is the base type for D-Bus objects on both
4458+ * the service side (see #GDBusObjectSkeleton) and the client side
4459+ * (see #GDBusObjectProxy). It is essentially just a container of
4460+ * interfaces.
4461+ */
4462+
4463+
4464+/**
4465+ * SECTION:gdbusobjectmanager
4466+ * @short_description: Base type for D-Bus object managers
4467+ * @include: gio/gio.h
4468+ *
4469+ * The #GDBusObjectManager type is the base type for service- and
4470+ * client-side implementations of the standardized <ulink
4471+ * url="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager">org.freedesktop.DBus.ObjectManager</ulink>
4472+ * interface.
4473+ *
4474+ * See #GDBusObjectManagerClient for the client-side implementation
4475+ * and #GDBusObjectManagerServer for the service-side implementation.
4476+ */
4477+
4478+
4479+/**
4480+ * SECTION:gdbusobjectmanagerclient
4481+ * @short_description: Client-side object manager
4482+ * @include: gio/gio.h
4483+ *
4484+ * #GDBusObjectManagerClient is used to create, monitor and delete object
4485+ * proxies for remote objects exported by a #GDBusObjectManagerServer (or any
4486+ * code implementing the <ulink
4487+ * url="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager">org.freedesktop.DBus.ObjectManager</ulink>
4488+ * interface).
4489+ *
4490+ * Once an instance of this type has been created, you can connect to
4491+ * the #GDBusObjectManager::object-added and
4492+ * #GDBusObjectManager::object-removed signals and inspect the
4493+ * #GDBusObjectProxy objects returned by
4494+ * g_dbus_object_manager_get_objects().
4495+ *
4496+ * If the name for a #GDBusObjectManagerClient is not owned by anyone at
4497+ * object construction time, the default behavior is to request the
4498+ * message bus to launch an owner for the name. This behavior can be
4499+ * disabled using the %G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START
4500+ * flag. It's also worth noting that this only works if the name of
4501+ * interest is activatable in the first place. E.g. in some cases it
4502+ * is not possible to launch an owner for the requested name. In this
4503+ * case, #GDBusObjectManagerClient object construction still succeeds but
4504+ * there will be no object proxies
4505+ * (e.g. g_dbus_object_manager_get_objects() returns the empty list) and
4506+ * the #GDBusObjectManagerClient:name-owner property is %NULL.
4507+ *
4508+ * The owner of the requested name can come and go (for example
4509+ * consider a system service being restarted) – #GDBusObjectManagerClient
4510+ * handles this case too; simply connect to the #GObject::notify
4511+ * signal to watch for changes on the #GDBusObjectManagerClient:name-owner
4512+ * property. When the name owner vanishes, the behavior is that
4513+ * #GDBusObjectManagerClient:name-owner is set to %NULL (this includes
4514+ * emission of the #GObject::notify signal) and then
4515+ * #GDBusObjectManager::object-removed signals are synthesized
4516+ * for all currently existing object proxies. Since
4517+ * #GDBusObjectManagerClient:name-owner is %NULL when this happens, you can
4518+ * use this information to disambiguate a synthesized signal from a
4519+ * genuine signal caused by object removal on the remote
4520+ * #GDBusObjectManager. Similarly, when a new name owner appears,
4521+ * #GDBusObjectManager::object-added signals are synthesized
4522+ * while #GDBusObjectManagerClient:name-owner is still %NULL. Only when all
4523+ * object proxies have been added, the #GDBusObjectManagerClient:name-owner
4524+ * is set to the new name owner (this includes emission of the
4525+ * #GObject::notify signal). Furthermore, you are guaranteed that
4526+ * #GDBusObjectManagerClient:name-owner will alternate between a name owner
4527+ * (e.g. <literal>:1.42</literal>) and %NULL even in the case where
4528+ * the name of interest is atomically replaced
4529+ *
4530+ * Ultimately, #GDBusObjectManagerClient is used to obtain #GDBusProxy
4531+ * instances. All signals (including the
4532+ * <literal>org.freedesktop.DBus.Properties::PropertiesChanged</literal>
4533+ * signal) delivered to #GDBusProxy instances are guaranteed to
4534+ * originate from the name owner. This guarantee along with the
4535+ * behavior described above, means that certain race conditions
4536+ * including the <emphasis><quote>half the proxy is from the old owner
4537+ * and the other half is from the new owner</quote></emphasis> problem
4538+ * cannot happen.
4539+ *
4540+ * To avoid having the application connect to signals on the returned
4541+ * #GDBusObjectProxy and #GDBusProxy objects, the
4542+ * #GDBusObject::interface-added,
4543+ * #GDBusObject::interface-removed,
4544+ * #GDBusProxy::g-properties-changed and
4545+ * #GDBusProxy::g-signal signals
4546+ * are also emitted on the #GDBusObjectManagerClient instance managing these
4547+ * objects. The signals emitted are
4548+ * #GDBusObjectManager::interface-added,
4549+ * #GDBusObjectManager::interface-removed,
4550+ * #GDBusObjectManagerClient::interface-proxy-properties-changed and
4551+ * #GDBusObjectManagerClient::interface-proxy-signal.
4552+ *
4553+ * Note that all callbacks and signals are emitted in the
4554+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
4555+ * that the #GDBusObjectManagerClient object was constructed
4556+ * in. Additionally, the #GDBusObjectProxy and #GDBusProxy objects
4557+ * originating from the #GDBusObjectManagerClient object will be created in
4558+ * the same context and, consequently, will deliver signals in the
4559+ * same main loop.
4560+ */
4561+
4562+
4563+/**
4564+ * SECTION:gdbusobjectmanagerserver
4565+ * @short_description: Service-side object manager
4566+ * @include: gio/gio.h
4567+ *
4568+ * #GDBusObjectManagerServer is used to export #GDBusObject instances using
4569+ * the standardized <ulink
4570+ * url="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager">org.freedesktop.DBus.ObjectManager</ulink>
4571+ * interface. For example, remote D-Bus clients can get all objects
4572+ * and properties in a single call. Additionally, any change in the
4573+ * object hierarchy is broadcast using signals. This means that D-Bus
4574+ * clients can keep caches up to date by only listening to D-Bus
4575+ * signals.
4576+ *
4577+ * See #GDBusObjectManagerClient for the client-side code that is
4578+ * intended to be used with #GDBusObjectManagerServer or any D-Bus
4579+ * object implementing the org.freedesktop.DBus.ObjectManager
4580+ * interface.
4581+ */
4582+
4583+
4584+/**
4585+ * SECTION:gdbusobjectproxy
4586+ * @short_description: Client-side D-Bus object
4587+ * @include: gio/gio.h
4588+ *
4589+ * A #GDBusObjectProxy is an object used to represent a remote object
4590+ * with one or more D-Bus interfaces. Normally, you don't instantiate
4591+ * a #GDBusObjectProxy yourself - typically #GDBusObjectManagerClient
4592+ * is used to obtain it.
4593+ *
4594+ * Since: 2.30
4595+ */
4596+
4597+
4598+/**
4599+ * SECTION:gdbusobjectskeleton
4600+ * @short_description: Service-side D-Bus object
4601+ * @include: gio/gio.h
4602+ *
4603+ * A #GDBusObjectSkeleton instance is essentially a group of D-Bus
4604+ * interfaces. The set of exported interfaces on the object may be
4605+ * dynamic and change at runtime.
4606+ *
4607+ * This type is intended to be used with #GDBusObjectManager.
4608+ */
4609+
4610+
4611+/**
4612+ * SECTION:gdbusproxy
4613+ * @short_description: Client-side D-Bus interface proxy
4614+ * @include: gio/gio.h
4615+ *
4616+ * #GDBusProxy is a base class used for proxies to access a D-Bus
4617+ * interface on a remote object. A #GDBusProxy can be constructed for
4618+ * both well-known and unique names.
4619+ *
4620+ * By default, #GDBusProxy will cache all properties (and listen to
4621+ * changes) of the remote object, and proxy all signals that gets
4622+ * emitted. This behaviour can be changed by passing suitable
4623+ * #GDBusProxyFlags when the proxy is created. If the proxy is for a
4624+ * well-known name, the property cache is flushed when the name owner
4625+ * vanishes and reloaded when a name owner appears.
4626+ *
4627+ * If a #GDBusProxy is used for a well-known name, the owner of the
4628+ * name is tracked and can be read from
4629+ * #GDBusProxy:g-name-owner. Connect to the #GObject::notify signal to
4630+ * get notified of changes. Additionally, only signals and property
4631+ * changes emitted from the current name owner are considered and
4632+ * calls are always sent to the current name owner. This avoids a
4633+ * number of race conditions when the name is lost by one owner and
4634+ * claimed by another. However, if no name owner currently exists,
4635+ * then calls will be sent to the well-known name which may result in
4636+ * the message bus launching an owner (unless
4637+ * %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START is set).
4638+ *
4639+ * The generic #GDBusProxy::g-properties-changed and
4640+ * #GDBusProxy::g-signal signals are not very convenient to work
4641+ * with. Therefore, the recommended way of working with proxies is to
4642+ * subclass #GDBusProxy, and have more natural properties and signals
4643+ * in your derived class. See <xref linkend="gdbus-example-gdbus-codegen"/>
4644+ * for how this can easily be done using the
4645+ * <command><link linkend="gdbus-codegen">gdbus-codegen</link></command>
4646+ * tool.
4647+ *
4648+ * A #GDBusProxy instance can be used from multiple threads but note
4649+ * that all signals (e.g. #GDBusProxy::g-signal, #GDBusProxy::g-properties-changed
4650+ * and #GObject::notify) are emitted in the
4651+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
4652+ * of the thread where the instance was constructed.
4653+ *
4654+ * <example id="gdbus-wellknown-proxy"><title>GDBusProxy for a well-known-name</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gdbus-example-watch-proxy.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
4655+ */
4656+
4657+
4658+/**
4659+ * SECTION:gdbusserver
4660+ * @short_description: Helper for accepting connections
4661+ * @include: gio/gio.h
4662+ *
4663+ * #GDBusServer is a helper for listening to and accepting D-Bus
4664+ * connections. This can be used to create a new D-Bus server, allowing two
4665+ * peers to use the D-Bus protocol for their own specialized communication.
4666+ * A server instance provided in this way will not perform message routing or
4667+ * implement the org.freedesktop.DBus interface.
4668+ *
4669+ * To just export an object on a well-known name on a message bus, such as the
4670+ * session or system bus, you should instead use g_bus_own_name().
4671+ *
4672+ * <example id="gdbus-peer-to-peer"><title>D-Bus peer-to-peer example</title><programlisting><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gdbus-example-peer.c"><xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback></xi:include></programlisting></example>
4673+ */
4674+
4675+
4676+/**
4677+ * SECTION:gdbusutils
4678+ * @title: D-Bus Utilities
4679+ * @short_description: Various utilities related to D-Bus.
4680+ * @include: gio/gio.h
4681+ *
4682+ * Various utility routines related to D-Bus.
4683+ */
4684+
4685+
4686+/**
4687+ * SECTION:gdesktopappinfo
4688+ * @title: GDesktopAppInfo
4689+ * @short_description: Application information from desktop files
4690+ * @include: gio/gdesktopappinfo.h
4691+ *
4692+ * #GDesktopAppInfo is an implementation of #GAppInfo based on
4693+ * desktop files.
4694+ *
4695+ * Note that <filename>&lt;gio/gdesktopappinfo.h&gt;</filename> belongs to
4696+ * the UNIX-specific GIO interfaces, thus you have to use the
4697+ * <filename>gio-unix-2.0.pc</filename> pkg-config file when using it.
4698+ */
4699+
4700+
4701+/**
4702+ * SECTION:gdrive
4703+ * @short_description: Drive management
4704+ * @include: gio/gio.h
4705+ *
4706+ * #GDrive - this represent a piece of hardware connected to the machine.
4707+ * It's generally only created for removable hardware or hardware with
4708+ * removable media.
4709+ *
4710+ * #GDrive is a container class for #GVolume objects that stem from
4711+ * the same piece of media. As such, #GDrive abstracts a drive with
4712+ * (or without) removable media and provides operations for querying
4713+ * whether media is available, determining whether media change is
4714+ * automatically detected and ejecting the media.
4715+ *
4716+ * If the #GDrive reports that media isn't automatically detected, one
4717+ * can poll for media; typically one should not do this periodically
4718+ * as a poll for media operation is potententially expensive and may
4719+ * spin up the drive creating noise.
4720+ *
4721+ * #GDrive supports starting and stopping drives with authentication
4722+ * support for the former. This can be used to support a diverse set
4723+ * of use cases including connecting/disconnecting iSCSI devices,
4724+ * powering down external disk enclosures and starting/stopping
4725+ * multi-disk devices such as RAID devices. Note that the actual
4726+ * semantics and side-effects of starting/stopping a #GDrive may vary
4727+ * according to implementation. To choose the correct verbs in e.g. a
4728+ * file manager, use g_drive_get_start_stop_type().
4729+ *
4730+ * For porting from GnomeVFS note that there is no equivalent of
4731+ * #GDrive in that API.
4732+ */
4733+
4734+
4735+/**
4736+ * SECTION:gemblem
4737+ * @short_description: An object for emblems
4738+ * @include: gio/gio.h
4739+ * @see_also: #GIcon, #GEmblemedIcon, #GLoadableIcon, #GThemedIcon
4740+ *
4741+ * #GEmblem is an implementation of #GIcon that supports
4742+ * having an emblem, which is an icon with additional properties.
4743+ * It can than be added to a #GEmblemedIcon.
4744+ *
4745+ * Currently, only metainformation about the emblem's origin is
4746+ * supported. More may be added in the future.
4747+ */
4748+
4749+
4750+/**
4751+ * SECTION:gemblemedicon
4752+ * @short_description: Icon with emblems
4753+ * @include: gio/gio.h
4754+ * @see_also: #GIcon, #GLoadableIcon, #GThemedIcon, #GEmblem
4755+ *
4756+ * #GEmblemedIcon is an implementation of #GIcon that supports
4757+ * adding an emblem to an icon. Adding multiple emblems to an
4758+ * icon is ensured via g_emblemed_icon_add_emblem().
4759+ *
4760+ * Note that #GEmblemedIcon allows no control over the position
4761+ * of the emblems. See also #GEmblem for more information.
4762+ */
4763+
4764+
4765+/**
4766+ * SECTION:gfile
4767+ * @short_description: File and Directory Handling
4768+ * @include: gio/gio.h
4769+ * @see_also: #GFileInfo, #GFileEnumerator
4770+ *
4771+ * #GFile is a high level abstraction for manipulating files on a
4772+ * virtual file system. #GFiles are lightweight, immutable objects
4773+ * that do no I/O upon creation. It is necessary to understand that
4774+ * #GFile objects do not represent files, merely an identifier for a
4775+ * file. All file content I/O is implemented as streaming operations
4776+ * (see #GInputStream and #GOutputStream).
4777+ *
4778+ * To construct a #GFile, you can use:
4779+ * <simplelist>
4780+ * <member>g_file_new_for_path() if you have a path.</member>
4781+ * <member>g_file_new_for_uri() if you have a URI.</member>
4782+ * <member>g_file_new_for_commandline_arg() for a command line argument.</member>
4783+ * <member>g_file_new_tmp() to create a temporary file from a template.</member>
4784+ * <member>g_file_parse_name() from a UTF-8 string gotten from g_file_get_parse_name().</member>
4785+ * </simplelist>
4786+ *
4787+ * One way to think of a #GFile is as an abstraction of a pathname. For
4788+ * normal files the system pathname is what is stored internally, but as
4789+ * #GFiles are extensible it could also be something else that corresponds
4790+ * to a pathname in a userspace implementation of a filesystem.
4791+ *
4792+ * #GFiles make up hierarchies of directories and files that correspond to
4793+ * the files on a filesystem. You can move through the file system with
4794+ * #GFile using g_file_get_parent() to get an identifier for the parent
4795+ * directory, g_file_get_child() to get a child within a directory,
4796+ * g_file_resolve_relative_path() to resolve a relative path between two
4797+ * #GFiles. There can be multiple hierarchies, so you may not end up at
4798+ * the same root if you repeatedly call g_file_get_parent() on two different
4799+ * files.
4800+ *
4801+ * All #GFiles have a basename (get with g_file_get_basename()). These names
4802+ * are byte strings that are used to identify the file on the filesystem
4803+ * (relative to its parent directory) and there is no guarantees that they
4804+ * have any particular charset encoding or even make any sense at all. If
4805+ * you want to use filenames in a user interface you should use the display
4806+ * name that you can get by requesting the
4807+ * %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME attribute with g_file_query_info().
4808+ * This is guaranteed to be in UTF-8 and can be used in a user interface.
4809+ * But always store the real basename or the #GFile to use to actually
4810+ * access the file, because there is no way to go from a display name to
4811+ * the actual name.
4812+ *
4813+ * Using #GFile as an identifier has the same weaknesses as using a path
4814+ * in that there may be multiple aliases for the same file. For instance,
4815+ * hard or soft links may cause two different #GFiles to refer to the same
4816+ * file. Other possible causes for aliases are: case insensitive filesystems,
4817+ * short and long names on FAT/NTFS, or bind mounts in Linux. If you want to
4818+ * check if two #GFiles point to the same file you can query for the
4819+ * %G_FILE_ATTRIBUTE_ID_FILE attribute. Note that #GFile does some trivial
4820+ * canonicalization of pathnames passed in, so that trivial differences in
4821+ * the path string used at creation (duplicated slashes, slash at end of
4822+ * path, "." or ".." path segments, etc) does not create different #GFiles.
4823+ *
4824+ * Many #GFile operations have both synchronous and asynchronous versions
4825+ * to suit your application. Asynchronous versions of synchronous functions
4826+ * simply have _async() appended to their function names. The asynchronous
4827+ * I/O functions call a #GAsyncReadyCallback which is then used to finalize
4828+ * the operation, producing a GAsyncResult which is then passed to the
4829+ * function's matching _finish() operation.
4830+ *
4831+ * Some #GFile operations do not have synchronous analogs, as they may
4832+ * take a very long time to finish, and blocking may leave an application
4833+ * unusable. Notable cases include:
4834+ * <simplelist>
4835+ * <member>g_file_mount_mountable() to mount a mountable file.</member>
4836+ * <member>g_file_unmount_mountable_with_operation() to unmount a mountable file.</member>
4837+ * <member>g_file_eject_mountable_with_operation() to eject a mountable file.</member>
4838+ * </simplelist>
4839+ *
4840+ * <para id="gfile-etag"><indexterm><primary>entity tag</primary></indexterm>
4841+ * One notable feature of #GFiles are entity tags, or "etags" for
4842+ * short. Entity tags are somewhat like a more abstract version of the
4843+ * traditional mtime, and can be used to quickly determine if the file has
4844+ * been modified from the version on the file system. See the HTTP 1.1
4845+ * <ulink url="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">specification</ulink>
4846+ * for HTTP Etag headers, which are a very similar concept.
4847+ * </para>
4848+ */
4849+
4850+
4851+/**
4852+ * SECTION:gfileattribute
4853+ * @short_description: Key-Value Paired File Attributes
4854+ * @include: gio/gio.h
4855+ * @see_also: #GFile, #GFileInfo
4856+ *
4857+ * File attributes in GIO consist of a list of key-value pairs.
4858+ *
4859+ * Keys are strings that contain a key namespace and a key name, separated
4860+ * by a colon, e.g. "namespace::keyname". Namespaces are included to sort
4861+ * key-value pairs by namespaces for relevance. Keys can be retrived
4862+ * using wildcards, e.g. "standard::*" will return all of the keys in the
4863+ * "standard" namespace.
4864+ *
4865+ * The list of possible attributes for a filesystem (pointed to by a #GFile) is
4866+ * available as a #GFileAttributeInfoList. This list is queryable by key names
4867+ * as indicated earlier.
4868+ *
4869+ * Information is stored within the list in #GFileAttributeInfo structures.
4870+ * The info structure can store different types, listed in the enum
4871+ * #GFileAttributeType. Upon creation of a #GFileAttributeInfo, the type will
4872+ * be set to %G_FILE_ATTRIBUTE_TYPE_INVALID.
4873+ *
4874+ * Classes that implement #GFileIface will create a #GFileAttributeInfoList and
4875+ * install default keys and values for their given file system, architecture,
4876+ * and other possible implementation details (e.g., on a UNIX system, a file
4877+ * attribute key will be registered for the user id for a given file).
4878+ *
4879+ * <para>
4880+ * <table>
4881+ * <title>GFileAttributes Default Namespaces</title>
4882+ * <tgroup cols='2' align='left'><thead>
4883+ * <row><entry>Namspace</entry><entry>Description</entry></row>
4884+ * </thead>
4885+ * <tbody>
4886+ * <row><entry>"standard"</entry><entry>The "Standard" namespace. General file
4887+ * information that any application may need should be put in this namespace.
4888+ * Examples include the file's name, type, and size.</entry></row>
4889+ * <row><entry>"etag"</entry><entry>The <link linkend="gfile-etag">"Entity Tag"</link>
4890+ * namespace. Currently, the only key in this namespace is "value", which contains
4891+ * the value of the current entity tag.</entry></row>
4892+ * <row><entry>"id"</entry><entry>The "Identification" namespace. This
4893+ * namespace is used by file managers and applications that list directories
4894+ * to check for loops and to uniquely identify files.</entry></row>
4895+ * <row><entry>"access"</entry><entry>The "Access" namespace. Used to check
4896+ * if a user has the proper privilidges to access files and perform
4897+ * file operations. Keys in this namespace are made to be generic
4898+ * and easily understood, e.g. the "can_read" key is %TRUE if
4899+ * the current user has permission to read the file. UNIX permissions and
4900+ * NTFS ACLs in Windows should be mapped to these values.</entry></row>
4901+ * <row><entry>"mountable"</entry><entry>The "Mountable" namespace. Includes
4902+ * simple boolean keys for checking if a file or path supports mount operations, e.g.
4903+ * mount, unmount, eject. These are used for files of type %G_FILE_TYPE_MOUNTABLE.</entry></row>
4904+ * <row><entry>"time"</entry><entry>The "Time" namespace. Includes file
4905+ * access, changed, created times. </entry></row>
4906+ * <row><entry>"unix"</entry><entry>The "Unix" namespace. Includes UNIX-specific
4907+ * information and may not be available for all files. Examples include
4908+ * the UNIX "UID", "GID", etc.</entry></row>
4909+ * <row><entry>"dos"</entry><entry>The "DOS" namespace. Includes DOS-specific
4910+ * information and may not be available for all files. Examples include
4911+ * "is_system" for checking if a file is marked as a system file, and "is_archive"
4912+ * for checking if a file is marked as an archive file.</entry></row>
4913+ * <row><entry>"owner"</entry><entry>The "Owner" namespace. Includes information
4914+ * about who owns a file. May not be available for all file systems. Examples include
4915+ * "user" for getting the user name of the file owner. This information is often mapped from
4916+ * some backend specific data such as a unix UID.</entry></row>
4917+ * <row><entry>"thumbnail"</entry><entry>The "Thumbnail" namespace. Includes
4918+ * information about file thumbnails and their location within the file system. Examples of
4919+ * keys in this namespace include "path" to get the location of a thumbnail, and "failed"
4920+ * to check if thumbnailing of the file failed.</entry></row>
4921+ * <row><entry>"filesystem"</entry><entry>The "Filesystem" namespace. Gets information
4922+ * about the file system where a file is located, such as its type, how much
4923+ * space is left available, and the overall size of the file system.</entry></row>
4924+ * <row><entry>"gvfs"</entry><entry>The "GVFS" namespace. Keys in this namespace
4925+ * contain information about the current GVFS backend in use. </entry></row>
4926+ * <row><entry>"xattr"</entry><entry>The "xattr" namespace. Gets information
4927+ * about extended user attributes. See attr(5). The "user." prefix of the
4928+ * extended user attribute name is stripped away when constructing keys in
4929+ * this namespace, e.g. "xattr::mime_type" for the extended attribute with
4930+ * the name "user.mime_type". Note that this information is only available
4931+ * if GLib has been built with extended attribute support.</entry></row>
4932+ * <row><entry>"xattr-sys"</entry><entry>The "xattr-sys" namespace.
4933+ * Gets information about extended attributes which are not user-specific.
4934+ * See attr(5). Note that this information is only available if GLib
4935+ * has been built with extended attribute support.</entry></row>
4936+ * <row><entry>"selinux"</entry><entry>The "SELinux" namespace. Includes
4937+ * information about the SELinux context of files. Note that this information
4938+ * is only available if GLib has been built with SELinux support.</entry></row>
4939+ * </tbody>
4940+ * </tgroup>
4941+ * </table>
4942+ * </para>
4943+ *
4944+ * Please note that these are not all of the possible namespaces.
4945+ * More namespaces can be added from GIO modules or by individual applications.
4946+ * For more information about writing GIO modules, see #GIOModule.
4947+ *
4948+ * <!-- TODO: Implementation note about using extended attributes on supported
4949+ * file systems -->
4950+ *
4951+ * <para><table>
4952+ * <title>GFileAttributes Built-in Keys and Value Types</title>
4953+ * <tgroup cols='3' align='left'><thead>
4954+ * <row><entry>Enum Value</entry><entry>Namespace::Key</entry><entry>Value Type</entry></row>
4955+ * </thead><tbody>
4956+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_TYPE</entry><entry>standard::type</entry><entry>uint32 (#GFileType)</entry></row>
4957+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN</entry><entry>standard::is-hidden</entry><entry>boolean</entry></row>
4958+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP</entry><entry>standard::is-backup</entry><entry>boolean</entry></row>
4959+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK</entry><entry>standard::is-symlink</entry><entry>boolean</entry></row>
4960+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL</entry><entry>standard::is-virtual</entry><entry>boolean</entry></row>
4961+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_NAME</entry><entry>standard::name</entry><entry>byte string</entry></row>
4962+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME</entry><entry>standard::display-name</entry><entry>string</entry></row>
4963+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME</entry><entry>standard::edit-name</entry><entry>string</entry></row>
4964+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_ICON</entry><entry>standard::icon</entry><entry>object (#GIcon)</entry></row>
4965+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE</entry><entry>standard::content-type</entry><entry>string</entry></row>
4966+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE</entry><entry>standard::fast-content-type</entry><entry>string</entry></row>
4967+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_SIZE</entry><entry>standard::size</entry><entry>uint64</entry></row>
4968+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE</entry><entry>standard::allocated-size</entry><entry>uint64</entry></row>
4969+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET</entry><entry>standard::symlink-target</entry><entry>byte string</entry></row>
4970+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_TARGET_URI</entry><entry>standard::target-uri</entry><entry>string</entry></row>
4971+ * <row><entry>%G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER</entry><entry>standard::sort-order</entry><entry>int32</entry></row>
4972+ * <row><entry>%G_FILE_ATTRIBUTE_ETAG_VALUE</entry><entry>etag::value</entry><entry>string</entry></row>
4973+ * <row><entry>%G_FILE_ATTRIBUTE_ID_FILE</entry><entry>id::file</entry><entry>string</entry></row>
4974+ * <row><entry>%G_FILE_ATTRIBUTE_ID_FILESYSTEM</entry><entry>id::filesystem</entry><entry>string</entry></row>
4975+ * <row><entry>%G_FILE_ATTRIBUTE_ACCESS_CAN_READ</entry><entry>access::can-read</entry><entry>boolean</entry></row>
4976+ * <row><entry>%G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE</entry><entry>access::can-write</entry><entry>boolean</entry></row>
4977+ * <row><entry>%G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE</entry><entry>access::can-execute</entry><entry>boolean</entry></row>
4978+ * <row><entry>%G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE</entry><entry>access::can-delete</entry><entry>boolean</entry></row>
4979+ * <row><entry>%G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH</entry><entry>access::can-trash</entry><entry>boolean</entry></row>
4980+ * <row><entry>%G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME</entry><entry>access::can-rename</entry><entry>boolean</entry></row>
4981+ * <row><entry>%G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT</entry><entry>mountable::can-mount</entry><entry>boolean</entry></row>
4982+ * <row><entry>%G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT</entry><entry>mountable::can-unmount</entry><entry>boolean</entry></row>
4983+ * <row><entry>%G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT</entry><entry>mountable::can-eject</entry><entry>boolean</entry></row>
4984+ * <row><entry>%G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE</entry><entry>mountable::unix-device</entry><entry>uint32</entry></row>
4985+ * <row><entry>%G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE</entry><entry>mountable::unix-device-file</entry><entry>string</entry></row>
4986+ * <row><entry>%G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI</entry><entry>mountable::hal-udi</entry><entry>string</entry></row>
4987+ * <row><entry>%G_FILE_ATTRIBUTE_TIME_MODIFIED</entry><entry>time::modified</entry><entry>uint64</entry></row>
4988+ * <row><entry>%G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC</entry><entry>time::modified-usec</entry><entry>uint32</entry></row>
4989+ * <row><entry>%G_FILE_ATTRIBUTE_TIME_ACCESS</entry><entry>time::access</entry><entry>uint64</entry></row>
4990+ * <row><entry>%G_FILE_ATTRIBUTE_TIME_ACCESS_USEC</entry><entry>time::access-usec</entry><entry>uint32</entry></row>
4991+ * <row><entry>%G_FILE_ATTRIBUTE_TIME_CHANGED</entry><entry>time::changed</entry><entry>uint64</entry></row>
4992+ * <row><entry>%G_FILE_ATTRIBUTE_TIME_CHANGED_USEC</entry><entry>time::changed-usec</entry><entry>uint32</entry></row>
4993+ * <row><entry>%G_FILE_ATTRIBUTE_TIME_CREATED</entry><entry>time::created</entry><entry>uint64</entry></row>
4994+ * <row><entry>%G_FILE_ATTRIBUTE_TIME_CREATED_USEC</entry><entry>time::created-usec</entry><entry>uint32</entry></row>
4995+ * <row><entry>%G_FILE_ATTRIBUTE_UNIX_DEVICE</entry><entry>unix::device</entry><entry>uint32</entry></row>
4996+ * <row><entry>%G_FILE_ATTRIBUTE_UNIX_INODE</entry><entry>unix::inode</entry><entry>uint64</entry></row>
4997+ * <row><entry>%G_FILE_ATTRIBUTE_UNIX_MODE</entry><entry>unix::mode</entry><entry>uint32</entry></row>
4998+ * <row><entry>%G_FILE_ATTRIBUTE_UNIX_NLINK</entry><entry>unix::nlink</entry><entry>uint32</entry></row>
4999+ * <row><entry>%G_FILE_ATTRIBUTE_UNIX_UID</entry><entry>unix::uid</entry><entry>uint32</entry></row>
5000+ * <row><entry>%G_FILE_ATTRIBUTE_UNIX_GID</entry><entry>unix::gid</entry><entry>uint32</entry></row>
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: