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__ */ 655