gkdbus: Fix underflow and unreachable code bug
[platform/upstream/glib.git] / gio / giotypes.h
1 /* GIO - GLib Input, Output and Streaming Library
2  *
3  * Copyright (C) 2006-2007 Red Hat, Inc.
4  *
5  * SPDX-License-Identifier: LGPL-2.1-or-later
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General
18  * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
19  *
20  * Author: Alexander Larsson <alexl@redhat.com>
21  */
22
23 #ifndef __GIO_TYPES_H__
24 #define __GIO_TYPES_H__
25
26 #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
27 #error "Only <gio/gio.h> can be included directly."
28 #endif
29
30 #include <gio/gioenums.h>
31
32 G_BEGIN_DECLS
33
34 typedef struct _GAppLaunchContext             GAppLaunchContext;
35 typedef struct _GAppInfo                      GAppInfo; /* Dummy typedef */
36 typedef struct _GAsyncResult                  GAsyncResult; /* Dummy typedef */
37 typedef struct _GAsyncInitable                GAsyncInitable;
38 typedef struct _GBufferedInputStream          GBufferedInputStream;
39 typedef struct _GBufferedOutputStream         GBufferedOutputStream;
40 typedef struct _GCancellable                  GCancellable;
41 typedef struct _GCharsetConverter             GCharsetConverter;
42 typedef struct _GConverter                    GConverter;
43 typedef struct _GConverterInputStream         GConverterInputStream;
44 typedef struct _GConverterOutputStream        GConverterOutputStream;
45 typedef struct _GDatagramBased                GDatagramBased;
46 typedef struct _GDataInputStream              GDataInputStream;
47 typedef struct _GSimplePermission             GSimplePermission;
48 typedef struct _GZlibCompressor               GZlibCompressor;
49 typedef struct _GZlibDecompressor             GZlibDecompressor;
50
51 typedef struct _GSimpleActionGroup            GSimpleActionGroup;
52 typedef struct _GRemoteActionGroup            GRemoteActionGroup;
53 typedef struct _GDBusActionGroup              GDBusActionGroup;
54 typedef struct _GActionMap                    GActionMap;
55 typedef struct _GActionGroup                  GActionGroup;
56 typedef struct _GPropertyAction               GPropertyAction;
57 typedef struct _GSimpleAction                 GSimpleAction;
58 typedef struct _GAction                       GAction;
59 typedef struct _GApplication                  GApplication;
60 typedef struct _GApplicationCommandLine       GApplicationCommandLine;
61 typedef struct _GSettingsBackend              GSettingsBackend;
62 typedef struct _GSettings                     GSettings;
63 typedef struct _GPermission                   GPermission;
64
65 typedef struct _GMenuModel                    GMenuModel;
66 typedef struct _GNotification                 GNotification;
67
68 /**
69  * GDrive:
70  *
71  * Opaque drive object.
72  **/
73 typedef struct _GDrive                        GDrive; /* Dummy typedef */
74 typedef struct _GFileEnumerator               GFileEnumerator;
75 typedef struct _GFileMonitor                  GFileMonitor;
76 typedef struct _GFilterInputStream            GFilterInputStream;
77 typedef struct _GFilterOutputStream           GFilterOutputStream;
78
79 /**
80  * GFile:
81  *
82  * A handle to an object implementing the #GFileIface interface.
83  * Generally stores a location within the file system. Handles do not
84  * necessarily represent files or directories that currently exist.
85  **/
86 typedef struct _GFile                         GFile; /* Dummy typedef */
87 typedef struct _GFileInfo                     GFileInfo;
88
89 /**
90  * GFileAttributeMatcher:
91  *
92  * Determines if a string matches a file attribute.
93  **/
94 typedef struct _GFileAttributeMatcher         GFileAttributeMatcher;
95 typedef struct _GFileAttributeInfo            GFileAttributeInfo;
96 typedef struct _GFileAttributeInfoList        GFileAttributeInfoList;
97 typedef struct _GFileDescriptorBased          GFileDescriptorBased;
98 typedef struct _GFileInputStream              GFileInputStream;
99 typedef struct _GFileOutputStream             GFileOutputStream;
100 typedef struct _GFileIOStream                 GFileIOStream;
101 typedef struct _GFileIcon                     GFileIcon;
102 typedef struct _GFilenameCompleter            GFilenameCompleter;
103
104
105 typedef struct _GIcon                         GIcon; /* Dummy typedef */
106 typedef struct _GInetAddress                  GInetAddress;
107 typedef struct _GInetAddressMask              GInetAddressMask;
108 typedef struct _GInetSocketAddress            GInetSocketAddress;
109 typedef struct _GNativeSocketAddress          GNativeSocketAddress;
110 typedef struct _GInputStream                  GInputStream;
111 typedef struct _GInitable                     GInitable;
112 typedef struct _GIOModule                     GIOModule;
113 typedef struct _GIOExtensionPoint             GIOExtensionPoint;
114 typedef struct _GIOExtension                  GIOExtension;
115
116 /**
117  * GIOSchedulerJob:
118  *
119  * Opaque class for defining and scheduling IO jobs.
120  **/
121 typedef struct _GIOSchedulerJob               GIOSchedulerJob;
122 typedef struct _GIOStreamAdapter              GIOStreamAdapter;
123 typedef struct _GLoadableIcon                 GLoadableIcon; /* Dummy typedef */
124 typedef struct _GBytesIcon                    GBytesIcon;
125 typedef struct _GMemoryInputStream            GMemoryInputStream;
126 typedef struct _GMemoryOutputStream           GMemoryOutputStream;
127
128 /**
129  * GMount:
130  *
131  * A handle to an object implementing the #GMountIface interface.
132  **/
133 typedef struct _GMount                        GMount; /* Dummy typedef */
134 typedef struct _GMountOperation               GMountOperation;
135 typedef struct _GNetworkAddress               GNetworkAddress;
136 typedef struct _GNetworkMonitor               GNetworkMonitor;
137 typedef struct _GNetworkService               GNetworkService;
138 typedef struct _GOutputStream                 GOutputStream;
139 typedef struct _GIOStream                     GIOStream;
140 typedef struct _GSimpleIOStream               GSimpleIOStream;
141 typedef struct _GPollableInputStream          GPollableInputStream; /* Dummy typedef */
142 typedef struct _GPollableOutputStream         GPollableOutputStream; /* Dummy typedef */
143 typedef struct _GResolver                     GResolver;
144
145 /**
146  * GResource:
147  *
148  * A resource bundle.
149  *
150  * Since: 2.32
151  */
152 typedef struct _GResource                     GResource;
153 typedef struct _GSeekable                     GSeekable;
154 typedef struct _GSimpleAsyncResult            GSimpleAsyncResult;
155
156 /**
157  * GSocket:
158  *
159  * A lowlevel network socket object.
160  *
161  * Since: 2.22
162  **/
163 typedef struct _GSocket                       GSocket;
164
165 /**
166  * GSocketControlMessage:
167  *
168  * Base class for socket-type specific control messages that can be sent and
169  * received over #GSocket.
170  **/
171 typedef struct _GSocketControlMessage         GSocketControlMessage;
172 /**
173  * GSocketClient:
174  *
175  * A helper class for network clients to make connections.
176  *
177  * Since: 2.22
178  **/
179 typedef struct _GSocketClient                               GSocketClient;
180 /**
181  * GSocketConnection:
182  *
183  * A socket connection GIOStream object for connection-oriented sockets.
184  *
185  * Since: 2.22
186  **/
187 typedef struct _GSocketConnection                           GSocketConnection;
188 /**
189  * GSocketListener:
190  *
191  * A helper class for network servers to listen for and accept connections.
192  *
193  * Since: 2.22
194  **/
195 typedef struct _GSocketListener                             GSocketListener;
196 /**
197  * GSocketService:
198  *
199  * A helper class for handling accepting incoming connections in the
200  * glib mainloop.
201  *
202  * Since: 2.22
203  **/
204 typedef struct _GSocketService                              GSocketService;
205 typedef struct _GSocketAddress                GSocketAddress;
206 typedef struct _GSocketAddressEnumerator      GSocketAddressEnumerator;
207 typedef struct _GSocketConnectable            GSocketConnectable;
208 typedef struct _GSrvTarget                    GSrvTarget;
209 typedef struct _GTask                         GTask;
210 /**
211  * GTcpConnection:
212  *
213  * A #GSocketConnection for TCP/IP connections.
214  *
215  * Since: 2.22
216  **/
217 typedef struct _GTcpConnection                              GTcpConnection;
218 typedef struct _GTcpWrapperConnection                       GTcpWrapperConnection;
219 /**
220  * GThreadedSocketService:
221  *
222  * A helper class for handling accepting incoming connections in the
223  * glib mainloop and handling them in a thread.
224  *
225  * Since: 2.22
226  **/
227 typedef struct _GThreadedSocketService                      GThreadedSocketService;
228 typedef struct _GDtlsConnection               GDtlsConnection;
229 typedef struct _GDtlsClientConnection         GDtlsClientConnection; /* Dummy typedef */
230 typedef struct _GDtlsServerConnection         GDtlsServerConnection; /* Dummy typedef */
231 typedef struct _GThemedIcon                   GThemedIcon;
232 typedef struct _GTlsCertificate               GTlsCertificate;
233 typedef struct _GTlsClientConnection          GTlsClientConnection; /* Dummy typedef */
234 typedef struct _GTlsConnection                GTlsConnection;
235 typedef struct _GTlsDatabase                  GTlsDatabase;
236 typedef struct _GTlsFileDatabase              GTlsFileDatabase;
237 typedef struct _GTlsInteraction               GTlsInteraction;
238 typedef struct _GTlsPassword                  GTlsPassword;
239 typedef struct _GTlsServerConnection          GTlsServerConnection; /* Dummy typedef */
240 typedef struct _GVfs                          GVfs; /* Dummy typedef */
241
242 /**
243  * GProxyResolver:
244  *
245  * A helper class to enumerate proxies base on URI.
246  *
247  * Since: 2.26
248  **/
249 typedef struct _GProxyResolver                GProxyResolver;
250 typedef struct _GProxy                        GProxy;
251 typedef struct _GProxyAddress                 GProxyAddress;
252 typedef struct _GProxyAddressEnumerator       GProxyAddressEnumerator;
253
254 /**
255  * GVolume:
256  *
257  * Opaque mountable volume object.
258  **/
259 typedef struct _GVolume                       GVolume; /* Dummy typedef */
260 typedef struct _GVolumeMonitor                GVolumeMonitor;
261
262 /**
263  * GAsyncReadyCallback:
264  * @source_object: (nullable): the object the asynchronous operation was started with.
265  * @res: a #GAsyncResult.
266  * @data: user data passed to the callback.
267  *
268  * Type definition for a function that will be called back when an asynchronous
269  * operation within GIO has been completed. #GAsyncReadyCallback
270  * callbacks from #GTask are guaranteed to be invoked in a later
271  * iteration of the
272  * [thread-default main context][g-main-context-push-thread-default]
273  * where the #GTask was created. All other users of
274  * #GAsyncReadyCallback must likewise call it asynchronously in a
275  * later iteration of the main context.
276  *
277  * The asynchronous operation is guaranteed to have held a reference to
278  * @source_object from the time when the `*_async()` function was called, until
279  * after this callback returns.
280  **/
281 typedef void (*GAsyncReadyCallback) (GObject *source_object,
282                                      GAsyncResult *res,
283                                      gpointer data);
284
285 /**
286  * GFileProgressCallback:
287  * @current_num_bytes: the current number of bytes in the operation.
288  * @total_num_bytes: the total number of bytes in the operation.
289  * @data: user data passed to the callback.
290  *
291  * When doing file operations that may take a while, such as moving
292  * a file or copying a file, a progress callback is used to pass how
293  * far along that operation is to the application.
294  **/
295 typedef void (*GFileProgressCallback) (goffset current_num_bytes,
296                                        goffset total_num_bytes,
297                                        gpointer data);
298
299 /**
300  * GFileReadMoreCallback:
301  * @file_contents: the data as currently read.
302  * @file_size: the size of the data currently read.
303  * @callback_data: data passed to the callback.
304  *
305  * When loading the partial contents of a file with g_file_load_partial_contents_async(),
306  * it may become necessary to determine if any more data from the file should be loaded.
307  * A #GFileReadMoreCallback function facilitates this by returning %TRUE if more data
308  * should be read, or %FALSE otherwise.
309  *
310  * Returns: %TRUE if more data should be read back. %FALSE otherwise.
311  **/
312 typedef gboolean (* GFileReadMoreCallback) (const char *file_contents,
313                                             goffset file_size,
314                                             gpointer callback_data);
315
316 /**
317  * GFileMeasureProgressCallback:
318  * @reporting: %TRUE if more reports will come
319  * @current_size: the current cumulative size measurement
320  * @num_dirs: the number of directories visited so far
321  * @num_files: the number of non-directory files encountered
322  * @data: the data passed to the original request for this callback
323  *
324  * This callback type is used by g_file_measure_disk_usage() to make
325  * periodic progress reports when measuring the amount of disk spaced
326  * used by a directory.
327  *
328  * These calls are made on a best-effort basis and not all types of
329  * #GFile will support them.  At the minimum, however, one call will
330  * always be made immediately.
331  *
332  * In the case that there is no support, @reporting will be set to
333  * %FALSE (and the other values undefined) and no further calls will be
334  * made.  Otherwise, the @reporting will be %TRUE and the other values
335  * all-zeros during the first (immediate) call.  In this way, you can
336  * know which type of progress UI to show without a delay.
337  *
338  * For g_file_measure_disk_usage() the callback is made directly.  For
339  * g_file_measure_disk_usage_async() the callback is made via the
340  * default main context of the calling thread (ie: the same way that the
341  * final async result would be reported).
342  *
343  * @current_size is in the same units as requested by the operation (see
344  * %G_FILE_MEASURE_APPARENT_SIZE).
345  *
346  * The frequency of the updates is implementation defined, but is
347  * ideally about once every 200ms.
348  *
349  * The last progress callback may or may not be equal to the final
350  * result.  Always check the async result to get the final value.
351  *
352  * Since: 2.38
353  **/
354 typedef void (* GFileMeasureProgressCallback) (gboolean reporting,
355                                                guint64  current_size,
356                                                guint64  num_dirs,
357                                                guint64  num_files,
358                                                gpointer data);
359
360 /**
361  * GIOSchedulerJobFunc:
362  * @job: a #GIOSchedulerJob.
363  * @cancellable: optional #GCancellable object, %NULL to ignore.
364  * @data: data passed to the callback function
365  *
366  * I/O Job function.
367  *
368  * Long-running jobs should periodically check the @cancellable
369  * to see if they have been cancelled.
370  *
371  * Returns: %TRUE if this function should be called again to
372  *    complete the job, %FALSE if the job is complete (or cancelled)
373  **/
374 typedef gboolean (*GIOSchedulerJobFunc) (GIOSchedulerJob *job,
375                                          GCancellable    *cancellable,
376                                          gpointer         data);
377
378 /**
379  * GSimpleAsyncThreadFunc:
380  * @res: a #GSimpleAsyncResult.
381  * @object: a #GObject.
382  * @cancellable: optional #GCancellable object, %NULL to ignore.
383  *
384  * Simple thread function that runs an asynchronous operation and
385  * checks for cancellation.
386  **/
387 typedef void (*GSimpleAsyncThreadFunc) (GSimpleAsyncResult *res,
388                                         GObject *object,
389                                         GCancellable *cancellable);
390
391 /**
392  * GSocketSourceFunc:
393  * @socket: the #GSocket
394  * @condition: the current condition at the source fired.
395  * @data: data passed in by the user.
396  *
397  * This is the function type of the callback used for the #GSource
398  * returned by g_socket_create_source().
399  *
400  * Returns: it should return %FALSE if the source should be removed.
401  *
402  * Since: 2.22
403  */
404 typedef gboolean (*GSocketSourceFunc) (GSocket *socket,
405                                        GIOCondition condition,
406                                        gpointer data);
407
408 /**
409  * GDatagramBasedSourceFunc:
410  * @datagram_based: the #GDatagramBased
411  * @condition: the current condition at the source fired
412  * @data: data passed in by the user
413  *
414  * This is the function type of the callback used for the #GSource
415  * returned by g_datagram_based_create_source().
416  *
417  * Returns: %G_SOURCE_REMOVE if the source should be removed,
418  *   %G_SOURCE_CONTINUE otherwise
419  *
420  * Since: 2.48
421  */
422 typedef gboolean (*GDatagramBasedSourceFunc) (GDatagramBased *datagram_based,
423                                               GIOCondition    condition,
424                                               gpointer        data);
425
426 /**
427  * GInputVector:
428  * @buffer: Pointer to a buffer where data will be written.
429  * @size: the available size in @buffer.
430  *
431  * Structure used for scatter/gather data input.
432  * You generally pass in an array of #GInputVectors
433  * and the operation will store the read data starting in the
434  * first buffer, switching to the next as needed.
435  *
436  * Since: 2.22
437  */
438 typedef struct _GInputVector GInputVector;
439
440 struct _GInputVector {
441   gpointer buffer;
442   gsize size;
443 };
444
445 /**
446  * GInputMessage:
447  * @address: (optional) (out) (transfer full): return location
448  *   for a #GSocketAddress, or %NULL
449  * @vectors: (array length=num_vectors) (out): pointer to an
450  *   array of input vectors
451  * @num_vectors: the number of input vectors pointed to by @vectors
452  * @bytes_received: (out): will be set to the number of bytes that have been
453  *   received
454  * @flags: (out): collection of #GSocketMsgFlags for the received message,
455  *   outputted by the call
456  * @control_messages: (array length=num_control_messages) (optional)
457  *   (out) (transfer full): return location for a
458  *   caller-allocated array of #GSocketControlMessages, or %NULL
459  * @num_control_messages: (out) (optional): return location for the number of
460  *   elements in @control_messages
461  *
462  * Structure used for scatter/gather data input when receiving multiple
463  * messages or packets in one go. You generally pass in an array of empty
464  * #GInputVectors and the operation will use all the buffers as if they
465  * were one buffer, and will set @bytes_received to the total number of bytes
466  * received across all #GInputVectors.
467  *
468  * This structure closely mirrors `struct mmsghdr` and `struct msghdr` from
469  * the POSIX sockets API (see `man 2 recvmmsg`).
470  *
471  * If @address is non-%NULL then it is set to the source address the message
472  * was received from, and the caller must free it afterwards.
473  *
474  * If @control_messages is non-%NULL then it is set to an array of control
475  * messages received with the message (if any), and the caller must free it
476  * afterwards. @num_control_messages is set to the number of elements in
477  * this array, which may be zero.
478  *
479  * Flags relevant to this message will be returned in @flags. For example,
480  * `MSG_EOR` or `MSG_TRUNC`.
481  *
482  * Since: 2.48
483  */
484 typedef struct _GInputMessage GInputMessage;
485
486 struct _GInputMessage {
487   GSocketAddress         **address;
488
489   GInputVector            *vectors;
490   guint                    num_vectors;
491
492   gsize                    bytes_received;
493   gint                     flags;
494
495   GSocketControlMessage ***control_messages;
496   guint                   *num_control_messages;
497 };
498
499 /**
500  * GOutputVector:
501  * @buffer: Pointer to a buffer of data to read.
502  * @size: the size of @buffer.
503  *
504  * Structure used for scatter/gather data output.
505  * You generally pass in an array of #GOutputVectors
506  * and the operation will use all the buffers as if they were
507  * one buffer.
508  *
509  * Since: 2.22
510  */
511 typedef struct _GOutputVector GOutputVector;
512
513 struct _GOutputVector {
514   gconstpointer buffer;
515   gsize size;
516 };
517
518 /**
519  * GOutputMessage:
520  * @address: (nullable): a #GSocketAddress, or %NULL
521  * @vectors: pointer to an array of output vectors
522  * @num_vectors: the number of output vectors pointed to by @vectors.
523  * @bytes_sent: initialize to 0. Will be set to the number of bytes
524  *     that have been sent
525  * @control_messages: (array length=num_control_messages) (nullable): a pointer
526  *   to an array of #GSocketControlMessages, or %NULL.
527  * @num_control_messages: number of elements in @control_messages.
528  *
529  * Structure used for scatter/gather data output when sending multiple
530  * messages or packets in one go. You generally pass in an array of
531  * #GOutputVectors and the operation will use all the buffers as if they
532  * were one buffer.
533  *
534  * If @address is %NULL then the message is sent to the default receiver
535  * (as previously set by g_socket_connect()).
536  *
537  * Since: 2.44
538  */
539 typedef struct _GOutputMessage GOutputMessage;
540
541 struct _GOutputMessage {
542   GSocketAddress         *address;
543
544   GOutputVector          *vectors;
545   guint                   num_vectors;
546
547   guint                   bytes_sent;
548
549   GSocketControlMessage **control_messages;
550   guint                   num_control_messages;
551 };
552
553 typedef struct _GCredentials                  GCredentials;
554 typedef struct _GUnixCredentialsMessage       GUnixCredentialsMessage;
555 typedef struct _GUnixFDList                   GUnixFDList;
556 typedef struct _GDBusMessage                  GDBusMessage;
557 typedef struct _GDBusConnection               GDBusConnection;
558 typedef struct _GDBusProxy                    GDBusProxy;
559 typedef struct _GDBusMethodInvocation         GDBusMethodInvocation;
560 typedef struct _GDBusServer                   GDBusServer;
561 typedef struct _GDBusAuthObserver             GDBusAuthObserver;
562 typedef struct _GDBusErrorEntry               GDBusErrorEntry;
563 typedef struct _GDBusInterfaceVTable          GDBusInterfaceVTable;
564 typedef struct _GDBusSubtreeVTable            GDBusSubtreeVTable;
565 typedef struct _GDBusAnnotationInfo           GDBusAnnotationInfo;
566 typedef struct _GDBusArgInfo                  GDBusArgInfo;
567 typedef struct _GDBusMethodInfo               GDBusMethodInfo;
568 typedef struct _GDBusSignalInfo               GDBusSignalInfo;
569 typedef struct _GDBusPropertyInfo             GDBusPropertyInfo;
570 typedef struct _GDBusInterfaceInfo            GDBusInterfaceInfo;
571 typedef struct _GDBusNodeInfo                 GDBusNodeInfo;
572
573 /**
574  * GCancellableSourceFunc:
575  * @cancellable: the #GCancellable
576  * @data: data passed in by the user.
577  *
578  * This is the function type of the callback used for the #GSource
579  * returned by g_cancellable_source_new().
580  *
581  * Returns: it should return %FALSE if the source should be removed.
582  *
583  * Since: 2.28
584  */
585 typedef gboolean (*GCancellableSourceFunc) (GCancellable *cancellable,
586                                             gpointer      data);
587
588 /**
589  * GPollableSourceFunc:
590  * @pollable_stream: the #GPollableInputStream or #GPollableOutputStream
591  * @data: data passed in by the user.
592  *
593  * This is the function type of the callback used for the #GSource
594  * returned by g_pollable_input_stream_create_source() and
595  * g_pollable_output_stream_create_source().
596  *
597  * Returns: it should return %FALSE if the source should be removed.
598  *
599  * Since: 2.28
600  */
601 typedef gboolean (*GPollableSourceFunc) (GObject  *pollable_stream,
602                                          gpointer  data);
603
604 typedef struct _GDBusInterface              GDBusInterface; /* Dummy typedef */
605 typedef struct _GDBusInterfaceSkeleton      GDBusInterfaceSkeleton;
606 typedef struct _GDBusObject                 GDBusObject;  /* Dummy typedef */
607 typedef struct _GDBusObjectSkeleton         GDBusObjectSkeleton;
608 typedef struct _GDBusObjectProxy            GDBusObjectProxy;
609 typedef struct _GDBusObjectManager          GDBusObjectManager;  /* Dummy typedef */
610 typedef struct _GDBusObjectManagerClient    GDBusObjectManagerClient;
611 typedef struct _GDBusObjectManagerServer    GDBusObjectManagerServer;
612
613 /**
614  * GDBusProxyTypeFunc:
615  * @manager: A #GDBusObjectManagerClient.
616  * @object_path: The object path of the remote object.
617  * @interface_name: (nullable): The interface name of the remote object or %NULL if a #GDBusObjectProxy #GType is requested.
618  * @data: data passed in by the user.
619  *
620  * Function signature for a function used to determine the #GType to
621  * use for an interface proxy (if @interface_name is not %NULL) or
622  * object proxy (if @interface_name is %NULL).
623  *
624  * This function is called in the
625  * [thread-default main loop][g-main-context-push-thread-default]
626  * that @manager was constructed in.
627  *
628  * Returns: A #GType to use for the remote object. The returned type
629  *   must be a #GDBusProxy or #GDBusObjectProxy -derived
630  *   type.
631  *
632  * Since: 2.30
633  */
634 typedef GType (*GDBusProxyTypeFunc) (GDBusObjectManagerClient   *manager,
635                                      const gchar                *object_path,
636                                      const gchar                *interface_name,
637                                      gpointer                    data);
638
639 typedef struct _GTestDBus GTestDBus;
640
641 /**
642  * GSubprocess:
643  *
644  * A child process.
645  *
646  * Since: 2.40
647  */
648 typedef struct _GSubprocess                   GSubprocess;
649 /**
650  * GSubprocessLauncher:
651  *
652  * Options for launching a child process.
653  *
654  * Since: 2.40
655  */
656 typedef struct _GSubprocessLauncher           GSubprocessLauncher;
657
658 G_END_DECLS
659
660 #endif /* __GIO_TYPES_H__ */