Add GNotification
[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 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, write to the
17  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18  * Boston, MA 02111-1307, USA.
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 _GDataInputStream              GDataInputStream;
46 typedef struct _GSimplePermission             GSimplePermission;
47 typedef struct _GZlibCompressor               GZlibCompressor;
48 typedef struct _GZlibDecompressor             GZlibDecompressor;
49
50 typedef struct _GSimpleActionGroup            GSimpleActionGroup;
51 typedef struct _GRemoteActionGroup            GRemoteActionGroup;
52 typedef struct _GDBusActionGroup              GDBusActionGroup;
53 typedef struct _GActionMap                    GActionMap;
54 typedef struct _GActionGroup                  GActionGroup;
55 typedef struct _GPropertyAction               GPropertyAction;
56 typedef struct _GSimpleAction                 GSimpleAction;
57 typedef struct _GAction                       GAction;
58 typedef struct _GApplication                  GApplication;
59 typedef struct _GApplicationCommandLine       GApplicationCommandLine;
60 typedef struct _GSettingsBackend              GSettingsBackend;
61 typedef struct _GSettings                     GSettings;
62 typedef struct _GPermission                   GPermission;
63
64 typedef struct _GMenuModel                    GMenuModel;
65 typedef struct _GNotificationBackend          GNotificationBackend;
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 _GInputStream                  GInputStream;
110 typedef struct _GInitable                     GInitable;
111 typedef struct _GIOModule                     GIOModule;
112 typedef struct _GIOExtensionPoint             GIOExtensionPoint;
113 typedef struct _GIOExtension                  GIOExtension;
114
115 /**
116  * GIOSchedulerJob:
117  *
118  * Opaque class for defining and scheduling IO jobs.
119  **/
120 typedef struct _GIOSchedulerJob               GIOSchedulerJob;
121 typedef struct _GIOStreamAdapter              GIOStreamAdapter;
122 typedef struct _GLoadableIcon                 GLoadableIcon; /* Dummy typedef */
123 typedef struct _GBytesIcon                    GBytesIcon;
124 typedef struct _GMemoryInputStream            GMemoryInputStream;
125 typedef struct _GMemoryOutputStream           GMemoryOutputStream;
126
127 /**
128  * GMount:
129  *
130  * A handle to an object implementing the #GMountIface interface.
131  **/
132 typedef struct _GMount                        GMount; /* Dummy typedef */
133 typedef struct _GMountOperation               GMountOperation;
134 typedef struct _GNetworkAddress               GNetworkAddress;
135 typedef struct _GNetworkMonitor               GNetworkMonitor;
136 typedef struct _GNetworkService               GNetworkService;
137 typedef struct _GOutputStream                 GOutputStream;
138 typedef struct _GIOStream                     GIOStream;
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 incomming 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 _GThemedIcon                   GThemedIcon;
227 typedef struct _GTlsCertificate               GTlsCertificate;
228 typedef struct _GTlsClientConnection          GTlsClientConnection; /* Dummy typedef */
229 typedef struct _GTlsConnection                GTlsConnection;
230 typedef struct _GTlsDatabase                  GTlsDatabase;
231 typedef struct _GTlsFileDatabase              GTlsFileDatabase;
232 typedef struct _GTlsInteraction               GTlsInteraction;
233 typedef struct _GTlsPassword                  GTlsPassword;
234 typedef struct _GTlsServerConnection          GTlsServerConnection; /* Dummy typedef */
235 typedef struct _GVfs                          GVfs; /* Dummy typedef */
236
237 /**
238  * GProxyResolver:
239  *
240  * A helper class to enumerate proxies base on URI.
241  *
242  * Since: 2.26
243  **/
244 typedef struct _GProxyResolver                GProxyResolver;
245 typedef struct _GProxy                        GProxy;
246 typedef struct _GProxyAddress                 GProxyAddress;
247 typedef struct _GProxyAddressEnumerator       GProxyAddressEnumerator;
248
249 /**
250  * GVolume:
251  *
252  * Opaque mountable volume object.
253  **/
254 typedef struct _GVolume                       GVolume; /* Dummy typedef */
255 typedef struct _GVolumeMonitor                GVolumeMonitor;
256
257 /**
258  * GAsyncReadyCallback:
259  * @source_object: the object the asynchronous operation was started with.
260  * @res: a #GAsyncResult.
261  * @user_data: user data passed to the callback.
262  *
263  * Type definition for a function that will be called back when an asynchronous
264  * operation within GIO has been completed.
265  **/
266 typedef void (*GAsyncReadyCallback) (GObject *source_object,
267                                      GAsyncResult *res,
268                                      gpointer user_data);
269
270 /**
271  * GFileProgressCallback:
272  * @current_num_bytes: the current number of bytes in the operation.
273  * @total_num_bytes: the total number of bytes in the operation.
274  * @user_data: user data passed to the callback.
275  *
276  * When doing file operations that may take a while, such as moving
277  * a file or copying a file, a progress callback is used to pass how
278  * far along that operation is to the application.
279  **/
280 typedef void (*GFileProgressCallback) (goffset current_num_bytes,
281                                        goffset total_num_bytes,
282                                        gpointer user_data);
283
284 /**
285  * GFileReadMoreCallback:
286  * @file_contents: the data as currently read.
287  * @file_size: the size of the data currently read.
288  * @callback_data: data passed to the callback.
289  *
290  * When loading the partial contents of a file with g_file_load_partial_contents_async(),
291  * it may become necessary to determine if any more data from the file should be loaded.
292  * A #GFileReadMoreCallback function facilitates this by returning %TRUE if more data
293  * should be read, or %FALSE otherwise.
294  *
295  * Returns: %TRUE if more data should be read back. %FALSE otherwise.
296  **/
297 typedef gboolean (* GFileReadMoreCallback) (const char *file_contents,
298                                             goffset file_size,
299                                             gpointer callback_data);
300
301 /**
302  * GFileMeasureProgressCallback:
303  * @reporting: %TRUE if more reports will come
304  * @current_size: the current cumulative size measurement
305  * @num_dirs: the number of directories visited so far
306  * @num_files: the number of non-directory files encountered
307  * @user_data: the data passed to the original request for this callback
308  *
309  * This callback type is used by g_file_measure_disk_usage() to make
310  * periodic progress reports when measuring the amount of disk spaced
311  * used by a directory.
312  *
313  * These calls are made on a best-effort basis and not all types of
314  * #GFile will support them.  At the minimum, however, one call will
315  * always be made immediately.
316  *
317  * In the case that there is no support, @reporting will be set to
318  * %FALSE (and the other values undefined) and no further calls will be
319  * made.  Otherwise, the @reporting will be %TRUE and the other values
320  * all-zeros during the first (immediate) call.  In this way, you can
321  * know which type of progress UI to show without a delay.
322  *
323  * For g_file_measure_disk_usage() the callback is made directly.  For
324  * g_file_measure_disk_usage_async() the callback is made via the
325  * default main context of the calling thread (ie: the same way that the
326  * final async result would be reported).
327  *
328  * @current_size is in the same units as requested by the operation (see
329  * %G_FILE_DISK_USAGE_APPARENT_SIZE).
330  *
331  * The frequency of the updates is implementation defined, but is
332  * ideally about once every 200ms.
333  *
334  * The last progress callback may or may not be equal to the final
335  * result.  Always check the async result to get the final value.
336  *
337  * Since: 2.38
338  **/
339 typedef void (* GFileMeasureProgressCallback) (gboolean reporting,
340                                                guint64  current_size,
341                                                guint64  num_dirs,
342                                                guint64  num_files,
343                                                gpointer user_data);
344
345 /**
346  * GIOSchedulerJobFunc:
347  * @job: a #GIOSchedulerJob.
348  * @cancellable: optional #GCancellable object, %NULL to ignore.
349  * @user_data: the data to pass to callback function
350  *
351  * I/O Job function.
352  *
353  * Long-running jobs should periodically check the @cancellable
354  * to see if they have been cancelled.
355  *
356  * Returns: %TRUE if this function should be called again to
357  *    complete the job, %FALSE if the job is complete (or cancelled)
358  **/
359 typedef gboolean (*GIOSchedulerJobFunc) (GIOSchedulerJob *job,
360                                          GCancellable    *cancellable,
361                                          gpointer         user_data);
362
363 /**
364  * GSimpleAsyncThreadFunc:
365  * @res: a #GSimpleAsyncResult.
366  * @object: a #GObject.
367  * @cancellable: optional #GCancellable object, %NULL to ignore.
368  *
369  * Simple thread function that runs an asynchronous operation and
370  * checks for cancellation.
371  **/
372 typedef void (*GSimpleAsyncThreadFunc) (GSimpleAsyncResult *res,
373                                         GObject *object,
374                                         GCancellable *cancellable);
375
376 /**
377  * GSocketSourceFunc:
378  * @socket: the #GSocket
379  * @condition: the current condition at the source fired.
380  * @user_data: data passed in by the user.
381  *
382  * This is the function type of the callback used for the #GSource
383  * returned by g_socket_create_source().
384  *
385  * Returns: it should return %FALSE if the source should be removed.
386  *
387  * Since: 2.22
388  */
389 typedef gboolean (*GSocketSourceFunc) (GSocket *socket,
390                                        GIOCondition condition,
391                                        gpointer user_data);
392
393 /**
394  * GInputVector:
395  * @buffer: Pointer to a buffer where data will be written.
396  * @size: the available size in @buffer.
397  *
398  * Structure used for scatter/gather data input.
399  * You generally pass in an array of #GInputVector<!-- -->s
400  * and the operation will store the read data starting in the
401  * first buffer, switching to the next as needed.
402  *
403  * Since: 2.22
404  */
405 typedef struct _GInputVector GInputVector;
406
407 struct _GInputVector {
408   gpointer buffer;
409   gsize size;
410 };
411
412 /**
413  * GOutputVector:
414  * @buffer: Pointer to a buffer of data to read.
415  * @size: the size of @buffer.
416  *
417  * Structure used for scatter/gather data output.
418  * You generally pass in an array of #GOutputVector<!-- -->s
419  * and the operation will use all the buffers as if they were
420  * one buffer.
421  *
422  * Since: 2.22
423  */
424 typedef struct _GOutputVector GOutputVector;
425
426 struct _GOutputVector {
427   gconstpointer buffer;
428   gsize size;
429 };
430
431 typedef struct _GCredentials                  GCredentials;
432 typedef struct _GUnixCredentialsMessage       GUnixCredentialsMessage;
433 typedef struct _GUnixFDList                   GUnixFDList;
434 typedef struct _GDBusMessage                  GDBusMessage;
435 typedef struct _GDBusConnection               GDBusConnection;
436 typedef struct _GDBusProxy                    GDBusProxy;
437 typedef struct _GDBusMethodInvocation         GDBusMethodInvocation;
438 typedef struct _GDBusServer                   GDBusServer;
439 typedef struct _GDBusAuthObserver             GDBusAuthObserver;
440 typedef struct _GDBusErrorEntry               GDBusErrorEntry;
441 typedef struct _GDBusInterfaceVTable          GDBusInterfaceVTable;
442 typedef struct _GDBusSubtreeVTable            GDBusSubtreeVTable;
443 typedef struct _GDBusAnnotationInfo           GDBusAnnotationInfo;
444 typedef struct _GDBusArgInfo                  GDBusArgInfo;
445 typedef struct _GDBusMethodInfo               GDBusMethodInfo;
446 typedef struct _GDBusSignalInfo               GDBusSignalInfo;
447 typedef struct _GDBusPropertyInfo             GDBusPropertyInfo;
448 typedef struct _GDBusInterfaceInfo            GDBusInterfaceInfo;
449 typedef struct _GDBusNodeInfo                 GDBusNodeInfo;
450
451 /**
452  * GCancellableSourceFunc:
453  * @cancellable: the #GCancellable
454  * @user_data: data passed in by the user.
455  *
456  * This is the function type of the callback used for the #GSource
457  * returned by g_cancellable_source_new().
458  *
459  * Returns: it should return %FALSE if the source should be removed.
460  *
461  * Since: 2.28
462  */
463 typedef gboolean (*GCancellableSourceFunc) (GCancellable *cancellable,
464                                             gpointer      user_data);
465
466 /**
467  * GPollableSourceFunc:
468  * @pollable_stream: the #GPollableInputStream or #GPollableOutputStream
469  * @user_data: data passed in by the user.
470  *
471  * This is the function type of the callback used for the #GSource
472  * returned by g_pollable_input_stream_create_source() and
473  * g_pollable_output_stream_create_source().
474  *
475  * Returns: it should return %FALSE if the source should be removed.
476  *
477  * Since: 2.28
478  */
479 typedef gboolean (*GPollableSourceFunc) (GObject  *pollable_stream,
480                                          gpointer  user_data);
481
482 typedef struct _GDBusInterface              GDBusInterface; /* Dummy typedef */
483 typedef struct _GDBusInterfaceSkeleton      GDBusInterfaceSkeleton;
484 typedef struct _GDBusObject                 GDBusObject;  /* Dummy typedef */
485 typedef struct _GDBusObjectSkeleton         GDBusObjectSkeleton;
486 typedef struct _GDBusObjectProxy            GDBusObjectProxy;
487 typedef struct _GDBusObjectManager          GDBusObjectManager;  /* Dummy typedef */
488 typedef struct _GDBusObjectManagerClient    GDBusObjectManagerClient;
489 typedef struct _GDBusObjectManagerServer    GDBusObjectManagerServer;
490
491 /**
492  * GDBusProxyTypeFunc:
493  * @manager: A #GDBusObjectManagerClient.
494  * @object_path: The object path of the remote object.
495  * @interface_name: (allow-none): The interface name of the remote object or %NULL if a #GDBusObjectProxy #GType is requested.
496  * @user_data: User data.
497  *
498  * Function signature for a function used to determine the #GType to
499  * use for an interface proxy (if @interface_name is not %NULL) or
500  * object proxy (if @interface_name is %NULL).
501  *
502  * This function is called in the
503  * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
504  * that @manager was constructed in.
505  *
506  * Returns: A #GType to use for the remote object. The returned type
507  *   must be a #GDBusProxy<!-- -->- or #GDBusObjectProxy<!-- -->-derived
508  *   type.
509  *
510  * Since: 2.30
511  */
512 typedef GType (*GDBusProxyTypeFunc) (GDBusObjectManagerClient   *manager,
513                                      const gchar                *object_path,
514                                      const gchar                *interface_name,
515                                      gpointer                    user_data);
516
517 typedef struct _GTestDBus GTestDBus;
518
519 /**
520  * GSubprocess:
521  *
522  * A child process.
523  *
524  * Since: 2.36
525  */
526 typedef struct _GSubprocess                   GSubprocess;
527 /**
528  * GSubprocessLauncher:
529  *
530  * Options for launching a child process.
531  *
532  * Since: 2.36
533  */
534 typedef struct _GSubprocessLauncher           GSubprocessLauncher;
535
536 G_END_DECLS
537
538 #endif /* __GIO_TYPES_H__ */