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 (at) redhat.com> 21 */ 22 23 #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) 24 #error "Only <gio/gio.h> can be included directly." 25 #endif 26 27 #ifndef __GIO_ENUMS_H__ 28 #define __GIO_ENUMS_H__ 29 30 #include <glib-object.h> 31 32 G_BEGIN_DECLS 33 34 35 /** 36 * GAppInfoCreateFlags: 37 * @G_APP_INFO_CREATE_NONE: No flags. 38 * @G_APP_INFO_CREATE_NEEDS_TERMINAL: Application opens in a terminal window. 39 * @G_APP_INFO_CREATE_SUPPORTS_URIS: Application supports URI arguments. 40 * 41 * Flags used when creating a #GAppInfo. 42 */ 43 typedef enum { 44 G_APP_INFO_CREATE_NONE = 0, /*< nick=none >*/ 45 G_APP_INFO_CREATE_NEEDS_TERMINAL = (1 << 0), /*< nick=needs-terminal >*/ 46 G_APP_INFO_CREATE_SUPPORTS_URIS = (1 << 1) /*< nick=supports-uris >*/ 47 } GAppInfoCreateFlags; 48 49 50 /** 51 * GDataStreamByteOrder: 52 * @G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN: Selects Big Endian byte order. 53 * @G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN: Selects Little Endian byte order. 54 * @G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN: Selects endianness based on host machine's architecture. 55 * 56 * #GDataStreamByteOrder is used to ensure proper endianness of streaming data sources 57 * across various machine architectures. 58 * 59 **/ 60 typedef enum { 61 G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN, 62 G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN, 63 G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN 64 } GDataStreamByteOrder; 65 66 67 /** 68 * GDataStreamNewlineType: 69 * @G_DATA_STREAM_NEWLINE_TYPE_LF: Selects "LF" line endings, common on most modern UNIX platforms. 70 * @G_DATA_STREAM_NEWLINE_TYPE_CR: Selects "CR" line endings. 71 * @G_DATA_STREAM_NEWLINE_TYPE_CR_LF: Selects "CR, LF" line ending, common on Microsoft Windows. 72 * @G_DATA_STREAM_NEWLINE_TYPE_ANY: Automatically try to handle any line ending type. 73 * 74 * #GDataStreamNewlineType is used when checking for or setting the line endings for a given file. 75 **/ 76 typedef enum { 77 G_DATA_STREAM_NEWLINE_TYPE_LF, 78 G_DATA_STREAM_NEWLINE_TYPE_CR, 79 G_DATA_STREAM_NEWLINE_TYPE_CR_LF, 80 G_DATA_STREAM_NEWLINE_TYPE_ANY 81 } GDataStreamNewlineType; 82 83 84 /** 85 * GFileAttributeType: 86 * @G_FILE_ATTRIBUTE_TYPE_INVALID: indicates an invalid or uninitalized type. 87 * @G_FILE_ATTRIBUTE_TYPE_STRING: a null terminated UTF8 string. 88 * @G_FILE_ATTRIBUTE_TYPE_BYTE_STRING: a zero terminated string of non-zero bytes. 89 * @G_FILE_ATTRIBUTE_TYPE_BOOLEAN: a boolean value. 90 * @G_FILE_ATTRIBUTE_TYPE_UINT32: an unsigned 4-byte/32-bit integer. 91 * @G_FILE_ATTRIBUTE_TYPE_INT32: a signed 4-byte/32-bit integer. 92 * @G_FILE_ATTRIBUTE_TYPE_UINT64: an unsigned 8-byte/64-bit integer. 93 * @G_FILE_ATTRIBUTE_TYPE_INT64: a signed 8-byte/64-bit integer. 94 * @G_FILE_ATTRIBUTE_TYPE_OBJECT: a #GObject. 95 * 96 * The data types for file attributes. 97 **/ 98 typedef enum { 99 G_FILE_ATTRIBUTE_TYPE_INVALID = 0, 100 G_FILE_ATTRIBUTE_TYPE_STRING, 101 G_FILE_ATTRIBUTE_TYPE_BYTE_STRING, /* zero terminated string of non-zero bytes */ 102 G_FILE_ATTRIBUTE_TYPE_BOOLEAN, 103 G_FILE_ATTRIBUTE_TYPE_UINT32, 104 G_FILE_ATTRIBUTE_TYPE_INT32, 105 G_FILE_ATTRIBUTE_TYPE_UINT64, 106 G_FILE_ATTRIBUTE_TYPE_INT64, 107 G_FILE_ATTRIBUTE_TYPE_OBJECT 108 } GFileAttributeType; 109 110 111 /** 112 * GFileAttributeInfoFlags: 113 * @G_FILE_ATTRIBUTE_INFO_NONE: no flags set. 114 * @G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE: copy the attribute values when the file is copied. 115 * @G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED: copy the attribute values when the file is moved. 116 * 117 * Flags specifying the behaviour of an attribute. 118 **/ 119 typedef enum { 120 G_FILE_ATTRIBUTE_INFO_NONE = 0, 121 G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE = (1 << 0), 122 G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED = (1 << 1) 123 } GFileAttributeInfoFlags; 124 125 126 /** 127 * GFileAttributeStatus: 128 * @G_FILE_ATTRIBUTE_STATUS_UNSET: Attribute value is unset (empty). 129 * @G_FILE_ATTRIBUTE_STATUS_SET: Attribute value is set. 130 * @G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING: Indicates an error in setting the value. 131 * 132 * Used by g_file_set_attributes_from_info() when setting file attributes. 133 **/ 134 typedef enum { 135 G_FILE_ATTRIBUTE_STATUS_UNSET = 0, 136 G_FILE_ATTRIBUTE_STATUS_SET, 137 G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING 138 } GFileAttributeStatus; 139 140 141 /** 142 * GFileQueryInfoFlags: 143 * @G_FILE_QUERY_INFO_NONE: No flags set. 144 * @G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS: Don't follow symlinks. 145 * 146 * Flags used when querying a #GFileInfo. 147 */ 148 typedef enum { 149 G_FILE_QUERY_INFO_NONE = 0, 150 G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS = (1 << 0) /*< nick=nofollow-symlinks >*/ 151 } GFileQueryInfoFlags; 152 153 154 /** 155 * GFileCreateFlags: 156 * @G_FILE_CREATE_NONE: No flags set. 157 * @G_FILE_CREATE_PRIVATE: Create a file that can only be 158 * accessed by the current user. 159 * @G_FILE_CREATE_REPLACE_DESTINATION: Replace the destination 160 * as if it didn't exist before. Don't try to keep any old 161 * permissions, replace instead of following links. This 162 * is generally useful if you're doing a "copy over" 163 * rather than a "save new version of" replace operation. 164 * You can think of it as "unlink destination" before 165 * writing to it, although the implementation may not 166 * be exactly like that. Since 2.20 167 * 168 * Flags used when an operation may create a file. 169 */ 170 typedef enum { 171 G_FILE_CREATE_NONE = 0, 172 G_FILE_CREATE_PRIVATE = (1 << 0), 173 G_FILE_CREATE_REPLACE_DESTINATION = (1 << 1) 174 } GFileCreateFlags; 175 176 177 /** 178 * GMountMountFlags: 179 * @G_MOUNT_MOUNT_NONE: No flags set. 180 * 181 * Flags used when mounting a mount. 182 */ 183 typedef enum { 184 G_MOUNT_MOUNT_NONE = 0 185 } GMountMountFlags; 186 187 188 /** 189 * GMountUnmountFlags: 190 * @G_MOUNT_UNMOUNT_NONE: No flags set. 191 * @G_MOUNT_UNMOUNT_FORCE: Unmount even if there are outstanding 192 * file operations on the mount. 193 * 194 * Flags used when an unmounting a mount. 195 */ 196 typedef enum { 197 G_MOUNT_UNMOUNT_NONE = 0, 198 G_MOUNT_UNMOUNT_FORCE = (1 << 0) 199 } GMountUnmountFlags; 200 201 202 /** 203 * GFileCopyFlags: 204 * @G_FILE_COPY_NONE: No flags set. 205 * @G_FILE_COPY_OVERWRITE: Overwrite any existing files 206 * @G_FILE_COPY_BACKUP: Make a backup of any existing files. 207 * @G_FILE_COPY_NOFOLLOW_SYMLINKS: Don't follow symlinks. 208 * @G_FILE_COPY_ALL_METADATA: Copy all file metadata instead of just default set used for copy (see #GFileInfo). 209 * @G_FILE_COPY_NO_FALLBACK_FOR_MOVE: Don't use copy and delete fallback if native move not supported. 210 * @G_FILE_COPY_TARGET_DEFAULT_PERMS: Leaves target file with default perms, instead of setting the source file perms. 211 * 212 * Flags used when copying or moving files. 213 */ 214 typedef enum { 215 G_FILE_COPY_NONE = 0, /*< nick=none >*/ 216 G_FILE_COPY_OVERWRITE = (1 << 0), 217 G_FILE_COPY_BACKUP = (1 << 1), 218 G_FILE_COPY_NOFOLLOW_SYMLINKS = (1 << 2), 219 G_FILE_COPY_ALL_METADATA = (1 << 3), 220 G_FILE_COPY_NO_FALLBACK_FOR_MOVE = (1 << 4), 221 G_FILE_COPY_TARGET_DEFAULT_PERMS = (1 << 5) 222 } GFileCopyFlags; 223 224 225 /** 226 * GFileMonitorFlags: 227 * @G_FILE_MONITOR_NONE: No flags set. 228 * @G_FILE_MONITOR_WATCH_MOUNTS: Watch for mount events. 229 * 230 * Flags used to set what a #GFileMonitor will watch for. 231 */ 232 typedef enum { 233 G_FILE_MONITOR_NONE = 0, 234 G_FILE_MONITOR_WATCH_MOUNTS = (1 << 0) 235 } GFileMonitorFlags; 236 237 238 /** 239 * GFileType: 240 * @G_FILE_TYPE_UNKNOWN: File's type is unknown. 241 * @G_FILE_TYPE_REGULAR: File handle represents a regular file. 242 * @G_FILE_TYPE_DIRECTORY: File handle represents a directory. 243 * @G_FILE_TYPE_SYMBOLIC_LINK: File handle represents a symbolic link 244 * (Unix systems). 245 * @G_FILE_TYPE_SPECIAL: File is a "special" file, such as a socket, fifo, 246 * block device, or character device. 247 * @G_FILE_TYPE_SHORTCUT: File is a shortcut (Windows systems). 248 * @G_FILE_TYPE_MOUNTABLE: File is a mountable location. 249 * 250 * Indicates the file's on-disk type. 251 **/ 252 typedef enum { 253 G_FILE_TYPE_UNKNOWN = 0, 254 G_FILE_TYPE_REGULAR, 255 G_FILE_TYPE_DIRECTORY, 256 G_FILE_TYPE_SYMBOLIC_LINK, 257 G_FILE_TYPE_SPECIAL, /* socket, fifo, blockdev, chardev */ 258 G_FILE_TYPE_SHORTCUT, 259 G_FILE_TYPE_MOUNTABLE 260 } GFileType; 261 262 263 /** 264 * GFilesystemPreviewType: 265 * @G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS: Only preview files if user has explicitly requested it. 266 * @G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL: Preview files if user has requested preview of "local" files. 267 * @G_FILESYSTEM_PREVIEW_TYPE_NEVER: Never preview files. 268 * 269 * Indicates a hint from the file system whether files should be 270 * previewed in a file manager. Returned as the value of the key 271 * #G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW. 272 **/ 273 typedef enum { 274 G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS = 0, 275 G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL, 276 G_FILESYSTEM_PREVIEW_TYPE_NEVER 277 } GFilesystemPreviewType; 278 279 280 /** 281 * GFileMonitorEvent: 282 * @G_FILE_MONITOR_EVENT_CHANGED: a file changed. 283 * @G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT: a hint that this was probably the last change in a set of changes. 284 * @G_FILE_MONITOR_EVENT_DELETED: a file was deleted. 285 * @G_FILE_MONITOR_EVENT_CREATED: a file was created. 286 * @G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED: a file attribute was changed. 287 * @G_FILE_MONITOR_EVENT_PRE_UNMOUNT: the file location will soon be unmounted. 288 * @G_FILE_MONITOR_EVENT_UNMOUNTED: the file location was unmounted. 289 * 290 * Specifies what type of event a monitor event is. 291 **/ 292 typedef enum { 293 G_FILE_MONITOR_EVENT_CHANGED, 294 G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, 295 G_FILE_MONITOR_EVENT_DELETED, 296 G_FILE_MONITOR_EVENT_CREATED, 297 G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED, 298 G_FILE_MONITOR_EVENT_PRE_UNMOUNT, 299 G_FILE_MONITOR_EVENT_UNMOUNTED 300 } GFileMonitorEvent; 301 302 303 /* This enumeration conflicts with GIOError in giochannel.h. However, 304 * that is only used as a return value in some deprecated functions. 305 * So, we reuse the same prefix for the enumeration values, but call 306 * the actual enumeration (which is rarely used) GIOErrorEnum. 307 */ 308 /** 309 * GIOErrorEnum: 310 * @G_IO_ERROR_FAILED: Generic error condition for when any operation fails. 311 * @G_IO_ERROR_NOT_FOUND: File not found error. 312 * @G_IO_ERROR_EXISTS: File already exists error. 313 * @G_IO_ERROR_IS_DIRECTORY: File is a directory error. 314 * @G_IO_ERROR_NOT_DIRECTORY: File is not a directory. 315 * @G_IO_ERROR_NOT_EMPTY: File is a directory that isn't empty. 316 * @G_IO_ERROR_NOT_REGULAR_FILE: File is not a regular file. 317 * @G_IO_ERROR_NOT_SYMBOLIC_LINK: File is not a symbolic link. 318 * @G_IO_ERROR_NOT_MOUNTABLE_FILE: File cannot be mounted. 319 * @G_IO_ERROR_FILENAME_TOO_LONG: Filename is too many characters. 320 * @G_IO_ERROR_INVALID_FILENAME: Filename is invalid or contains invalid characters. 321 * @G_IO_ERROR_TOO_MANY_LINKS: File contains too many symbolic links. 322 * @G_IO_ERROR_NO_SPACE: No space left on drive. 323 * @G_IO_ERROR_INVALID_ARGUMENT: Invalid argument. 324 * @G_IO_ERROR_PERMISSION_DENIED: Permission denied. 325 * @G_IO_ERROR_NOT_SUPPORTED: Operation not supported for the current backend. 326 * @G_IO_ERROR_NOT_MOUNTED: File isn't mounted. 327 * @G_IO_ERROR_ALREADY_MOUNTED: File is already mounted. 328 * @G_IO_ERROR_CLOSED: File was closed. 329 * @G_IO_ERROR_CANCELLED: Operation was cancelled. See #GCancellable. 330 * @G_IO_ERROR_PENDING: Operations are still pending. 331 * @G_IO_ERROR_READ_ONLY: File is read only. 332 * @G_IO_ERROR_CANT_CREATE_BACKUP: Backup couldn't be created. 333 * @G_IO_ERROR_WRONG_ETAG: File's Entity Tag was incorrect. 334 * @G_IO_ERROR_TIMED_OUT: Operation timed out. 335 * @G_IO_ERROR_WOULD_RECURSE: Operation would be recursive. 336 * @G_IO_ERROR_BUSY: File is busy. 337 * @G_IO_ERROR_WOULD_BLOCK: Operation would block. 338 * @G_IO_ERROR_HOST_NOT_FOUND: Host couldn't be found (remote operations). 339 * @G_IO_ERROR_WOULD_MERGE: Operation would merge files. 340 * @G_IO_ERROR_FAILED_HANDLED: Operation failed and a helper program has 341 * already interacted with the user. Do not display any error dialog. 342 * @G_IO_ERROR_TOO_MANY_OPEN_FILES: The current process has too many files 343 * open and can't open any more. Duplicate descriptors do count toward 344 * this limit. Since 2.20 345 * 346 * Error codes returned by GIO functions. 347 * 348 **/ 349 typedef enum { 350 G_IO_ERROR_FAILED, 351 G_IO_ERROR_NOT_FOUND, 352 G_IO_ERROR_EXISTS, 353 G_IO_ERROR_IS_DIRECTORY, 354 G_IO_ERROR_NOT_DIRECTORY, 355 G_IO_ERROR_NOT_EMPTY, 356 G_IO_ERROR_NOT_REGULAR_FILE, 357 G_IO_ERROR_NOT_SYMBOLIC_LINK, 358 G_IO_ERROR_NOT_MOUNTABLE_FILE, 359 G_IO_ERROR_FILENAME_TOO_LONG, 360 G_IO_ERROR_INVALID_FILENAME, 361 G_IO_ERROR_TOO_MANY_LINKS, 362 G_IO_ERROR_NO_SPACE, 363 G_IO_ERROR_INVALID_ARGUMENT, 364 G_IO_ERROR_PERMISSION_DENIED, 365 G_IO_ERROR_NOT_SUPPORTED, 366 G_IO_ERROR_NOT_MOUNTED, 367 G_IO_ERROR_ALREADY_MOUNTED, 368 G_IO_ERROR_CLOSED, 369 G_IO_ERROR_CANCELLED, 370 G_IO_ERROR_PENDING, 371 G_IO_ERROR_READ_ONLY, 372 G_IO_ERROR_CANT_CREATE_BACKUP, 373 G_IO_ERROR_WRONG_ETAG, 374 G_IO_ERROR_TIMED_OUT, 375 G_IO_ERROR_WOULD_RECURSE, 376 G_IO_ERROR_BUSY, 377 G_IO_ERROR_WOULD_BLOCK, 378 G_IO_ERROR_HOST_NOT_FOUND, 379 G_IO_ERROR_WOULD_MERGE, 380 G_IO_ERROR_FAILED_HANDLED, 381 G_IO_ERROR_TOO_MANY_OPEN_FILES 382 } GIOErrorEnum; 383 384 385 /** 386 * GAskPasswordFlags: 387 * @G_ASK_PASSWORD_NEED_PASSWORD: operation requires a password. 388 * @G_ASK_PASSWORD_NEED_USERNAME: operation requires a username. 389 * @G_ASK_PASSWORD_NEED_DOMAIN: operation requires a domain. 390 * @G_ASK_PASSWORD_SAVING_SUPPORTED: operation supports saving settings. 391 * @G_ASK_PASSWORD_ANONYMOUS_SUPPORTED: operation supports anonymous users. 392 * 393 * #GAskPasswordFlags are used to request specific information from the 394 * user, or to notify the user of their choices in an authentication 395 * situation. 396 **/ 397 typedef enum { 398 G_ASK_PASSWORD_NEED_PASSWORD = (1 << 0), 399 G_ASK_PASSWORD_NEED_USERNAME = (1 << 1), 400 G_ASK_PASSWORD_NEED_DOMAIN = (1 << 2), 401 G_ASK_PASSWORD_SAVING_SUPPORTED = (1 << 3), 402 G_ASK_PASSWORD_ANONYMOUS_SUPPORTED = (1 << 4) 403 } GAskPasswordFlags; 404 405 406 /** 407 * GPasswordSave: 408 * @G_PASSWORD_SAVE_NEVER: never save a password. 409 * @G_PASSWORD_SAVE_FOR_SESSION: save a password for the session. 410 * @G_PASSWORD_SAVE_PERMANENTLY: save a password permanently. 411 * 412 * #GPasswordSave is used to indicate the lifespan of a saved password. 413 * 414 * #Gvfs stores passwords in the Gnome keyring when this flag allows it 415 * to, and later retrieves it again from there. 416 **/ 417 typedef enum { 418 G_PASSWORD_SAVE_NEVER, 419 G_PASSWORD_SAVE_FOR_SESSION, 420 G_PASSWORD_SAVE_PERMANENTLY 421 } GPasswordSave; 422 423 424 /** 425 * GMountOperationResult: 426 * @G_MOUNT_OPERATION_HANDLED: The request was fulfilled and the 427 * user specified data is now available 428 * @G_MOUNT_OPERATION_ABORTED: The user requested the mount operation 429 * to be aborted 430 * @G_MOUNT_OPERATION_UNHANDLED: The request was unhandled (i.e. not 431 * implemented) 432 * 433 * #GMountOperationResult is returned as a result when a request for 434 * information is send by the mounting operation. 435 **/ 436 typedef enum { 437 G_MOUNT_OPERATION_HANDLED, 438 G_MOUNT_OPERATION_ABORTED, 439 G_MOUNT_OPERATION_UNHANDLED 440 } GMountOperationResult; 441 442 443 /** 444 * GOutputStreamSpliceFlags: 445 * @G_OUTPUT_STREAM_SPLICE_NONE: Do not close either stream. 446 * @G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE: Close the source stream after 447 * the splice. 448 * @G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET: Close the target stream after 449 * the splice. 450 * 451 * GOutputStreamSpliceFlags determine how streams should be spliced. 452 **/ 453 typedef enum { 454 G_OUTPUT_STREAM_SPLICE_NONE = 0, 455 G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE = (1 << 0), 456 G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET = (1 << 1) 457 } GOutputStreamSpliceFlags; 458 459 460 /** 461 * GEmblemOrigin: 462 * @G_EMBLEM_ORIGIN_UNKNOWN: Emblem of unknown origin 463 * @G_EMBLEM_ORIGIN_DEVICE: Embleme adds device-specific information 464 * @G_EMBLEM_ORIGIN_LIVEMETADATA: Emblem depicts live metadata, such as "readonly" 465 * @G_EMBLEM_ORIGIN_TAG: Emblem comes from a user-defined tag, e.g. set by nautilus (in the future) 466 * 467 * GEmblemOrigin is used to add information about the origin of the emblem 468 * to #GEmblem. 469 * 470 * Since: 2.18 471 */ 472 typedef enum { 473 G_EMBLEM_ORIGIN_UNKNOWN, 474 G_EMBLEM_ORIGIN_DEVICE, 475 G_EMBLEM_ORIGIN_LIVEMETADATA, 476 G_EMBLEM_ORIGIN_TAG 477 } GEmblemOrigin; 478 479 480 G_END_DECLS 481 482 #endif /* __GIO_ENUMS_H__ */ 483