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