glib (2.79.0)

(root)/
include/
glib-2.0/
gio/
gioenums.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_ENUMS_H__
      24  #define __GIO_ENUMS_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 <glib-object.h>
      31  #include <gio/gio-visibility.h>
      32  
      33  G_BEGIN_DECLS
      34  
      35  
      36  /**
      37   * GAppInfoCreateFlags:
      38   * @G_APP_INFO_CREATE_NONE: No flags.
      39   * @G_APP_INFO_CREATE_NEEDS_TERMINAL: Application opens in a terminal window.
      40   * @G_APP_INFO_CREATE_SUPPORTS_URIS: Application supports URI arguments.
      41   * @G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION: Application supports startup notification. Since 2.26
      42   *
      43   * Flags used when creating a #GAppInfo.
      44   */
      45  typedef enum {
      46    G_APP_INFO_CREATE_NONE                           = 0,         /*< nick=none >*/
      47    G_APP_INFO_CREATE_NEEDS_TERMINAL                 = (1 << 0),  /*< nick=needs-terminal >*/
      48    G_APP_INFO_CREATE_SUPPORTS_URIS                  = (1 << 1),  /*< nick=supports-uris >*/
      49    G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION  = (1 << 2)   /*< nick=supports-startup-notification >*/
      50  } GAppInfoCreateFlags;
      51  
      52  /**
      53   * GConverterFlags:
      54   * @G_CONVERTER_NO_FLAGS: No flags.
      55   * @G_CONVERTER_INPUT_AT_END: At end of input data
      56   * @G_CONVERTER_FLUSH: Flush data
      57   *
      58   * Flags used when calling a g_converter_convert().
      59   *
      60   * Since: 2.24
      61   */
      62  typedef enum {
      63    G_CONVERTER_NO_FLAGS     = 0,         /*< nick=none >*/
      64    G_CONVERTER_INPUT_AT_END = (1 << 0),  /*< nick=input-at-end >*/
      65    G_CONVERTER_FLUSH        = (1 << 1)   /*< nick=flush >*/
      66  } GConverterFlags;
      67  
      68  /**
      69   * GConverterResult:
      70   * @G_CONVERTER_ERROR: There was an error during conversion.
      71   * @G_CONVERTER_CONVERTED: Some data was consumed or produced
      72   * @G_CONVERTER_FINISHED: The conversion is finished
      73   * @G_CONVERTER_FLUSHED: Flushing is finished
      74   *
      75   * Results returned from g_converter_convert().
      76   *
      77   * Since: 2.24
      78   */
      79  typedef enum {
      80    G_CONVERTER_ERROR     = 0,  /*< nick=error >*/
      81    G_CONVERTER_CONVERTED = 1,  /*< nick=converted >*/
      82    G_CONVERTER_FINISHED  = 2,  /*< nick=finished >*/
      83    G_CONVERTER_FLUSHED   = 3   /*< nick=flushed >*/
      84  } GConverterResult;
      85  
      86  
      87  /**
      88   * GDataStreamByteOrder:
      89   * @G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN: Selects Big Endian byte order.
      90   * @G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN: Selects Little Endian byte order.
      91   * @G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN: Selects endianness based on host machine's architecture.
      92   *
      93   * #GDataStreamByteOrder is used to ensure proper endianness of streaming data sources
      94   * across various machine architectures.
      95   *
      96   **/
      97  typedef enum {
      98    G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN,
      99    G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN,
     100    G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN
     101  } GDataStreamByteOrder;
     102  
     103  
     104  /**
     105   * GDataStreamNewlineType:
     106   * @G_DATA_STREAM_NEWLINE_TYPE_LF: Selects "LF" line endings, common on most modern UNIX platforms.
     107   * @G_DATA_STREAM_NEWLINE_TYPE_CR: Selects "CR" line endings.
     108   * @G_DATA_STREAM_NEWLINE_TYPE_CR_LF: Selects "CR, LF" line ending, common on Microsoft Windows.
     109   * @G_DATA_STREAM_NEWLINE_TYPE_ANY: Automatically try to handle any line ending type.
     110   *
     111   * #GDataStreamNewlineType is used when checking for or setting the line endings for a given file.
     112   **/
     113  typedef enum {
     114    G_DATA_STREAM_NEWLINE_TYPE_LF,
     115    G_DATA_STREAM_NEWLINE_TYPE_CR,
     116    G_DATA_STREAM_NEWLINE_TYPE_CR_LF,
     117    G_DATA_STREAM_NEWLINE_TYPE_ANY
     118  } GDataStreamNewlineType;
     119  
     120  
     121  /**
     122   * GFileAttributeType:
     123   * @G_FILE_ATTRIBUTE_TYPE_INVALID: indicates an invalid or uninitialized type.
     124   * @G_FILE_ATTRIBUTE_TYPE_STRING: a null terminated UTF8 string.
     125   * @G_FILE_ATTRIBUTE_TYPE_BYTE_STRING: a zero terminated string of non-zero bytes.
     126   * @G_FILE_ATTRIBUTE_TYPE_BOOLEAN: a boolean value.
     127   * @G_FILE_ATTRIBUTE_TYPE_UINT32: an unsigned 4-byte/32-bit integer.
     128   * @G_FILE_ATTRIBUTE_TYPE_INT32: a signed 4-byte/32-bit integer.
     129   * @G_FILE_ATTRIBUTE_TYPE_UINT64: an unsigned 8-byte/64-bit integer.
     130   * @G_FILE_ATTRIBUTE_TYPE_INT64: a signed 8-byte/64-bit integer.
     131   * @G_FILE_ATTRIBUTE_TYPE_OBJECT: a #GObject.
     132   * @G_FILE_ATTRIBUTE_TYPE_STRINGV: a %NULL terminated char **. Since 2.22
     133   *
     134   * The data types for file attributes.
     135   **/
     136  typedef enum {
     137    G_FILE_ATTRIBUTE_TYPE_INVALID = 0,
     138    G_FILE_ATTRIBUTE_TYPE_STRING,
     139    G_FILE_ATTRIBUTE_TYPE_BYTE_STRING, /* zero terminated string of non-zero bytes */
     140    G_FILE_ATTRIBUTE_TYPE_BOOLEAN,
     141    G_FILE_ATTRIBUTE_TYPE_UINT32,
     142    G_FILE_ATTRIBUTE_TYPE_INT32,
     143    G_FILE_ATTRIBUTE_TYPE_UINT64,
     144    G_FILE_ATTRIBUTE_TYPE_INT64,
     145    G_FILE_ATTRIBUTE_TYPE_OBJECT,
     146    G_FILE_ATTRIBUTE_TYPE_STRINGV
     147  } GFileAttributeType;
     148  
     149  
     150  /**
     151   * GFileAttributeInfoFlags:
     152   * @G_FILE_ATTRIBUTE_INFO_NONE: no flags set.
     153   * @G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE: copy the attribute values when the file is copied.
     154   * @G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED: copy the attribute values when the file is moved.
     155   *
     156   * Flags specifying the behaviour of an attribute.
     157   **/
     158  typedef enum {
     159    G_FILE_ATTRIBUTE_INFO_NONE            = 0,
     160    G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE  = (1 << 0),
     161    G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED = (1 << 1)
     162  } GFileAttributeInfoFlags;
     163  
     164  
     165  /**
     166   * GFileAttributeStatus:
     167   * @G_FILE_ATTRIBUTE_STATUS_UNSET: Attribute value is unset (empty).
     168   * @G_FILE_ATTRIBUTE_STATUS_SET: Attribute value is set.
     169   * @G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING: Indicates an error in setting the value.
     170   *
     171   * Used by g_file_set_attributes_from_info() when setting file attributes.
     172   **/
     173  typedef enum {
     174    G_FILE_ATTRIBUTE_STATUS_UNSET = 0,
     175    G_FILE_ATTRIBUTE_STATUS_SET,
     176    G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING
     177  } GFileAttributeStatus;
     178  
     179  
     180  /**
     181   * GFileQueryInfoFlags:
     182   * @G_FILE_QUERY_INFO_NONE: No flags set.
     183   * @G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS: Don't follow symlinks.
     184   *
     185   * Flags used when querying a #GFileInfo.
     186   */
     187  typedef enum {
     188    G_FILE_QUERY_INFO_NONE              = 0,
     189    G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS = (1 << 0)   /*< nick=nofollow-symlinks >*/
     190  } GFileQueryInfoFlags;
     191  
     192  
     193  /**
     194   * GFileCreateFlags:
     195   * @G_FILE_CREATE_NONE: No flags set.
     196   * @G_FILE_CREATE_PRIVATE: Create a file that can only be
     197   *    accessed by the current user.
     198   * @G_FILE_CREATE_REPLACE_DESTINATION: Replace the destination
     199   *    as if it didn't exist before. Don't try to keep any old
     200   *    permissions, replace instead of following links. This
     201   *    is generally useful if you're doing a "copy over"
     202   *    rather than a "save new version of" replace operation.
     203   *    You can think of it as "unlink destination" before
     204   *    writing to it, although the implementation may not
     205   *    be exactly like that. This flag can only be used with
     206   *    g_file_replace() and its variants, including g_file_replace_contents().
     207   *    Since 2.20
     208   *
     209   * Flags used when an operation may create a file.
     210   */
     211  typedef enum {
     212    G_FILE_CREATE_NONE    = 0,
     213    G_FILE_CREATE_PRIVATE = (1 << 0),
     214    G_FILE_CREATE_REPLACE_DESTINATION = (1 << 1)
     215  } GFileCreateFlags;
     216  
     217  /**
     218   * GFileMeasureFlags:
     219   * @G_FILE_MEASURE_NONE: No flags set.
     220   * @G_FILE_MEASURE_REPORT_ANY_ERROR: Report any error encountered
     221   *   while traversing the directory tree.  Normally errors are only
     222   *   reported for the toplevel file.
     223   * @G_FILE_MEASURE_APPARENT_SIZE: Tally usage based on apparent file
     224   *   sizes.  Normally, the block-size is used, if available, as this is a
     225   *   more accurate representation of disk space used.
     226   *   Compare with `du --apparent-size`.
     227   *   Since GLib 2.78. and similarly to `du` since GNU Coreutils 9.2, this will
     228   *   ignore the sizes of file types other than regular files and links, as the
     229   *   sizes of other file types are not specified in a standard way.
     230   * @G_FILE_MEASURE_NO_XDEV: Do not cross mount point boundaries.
     231   *   Compare with `du -x`.
     232   *
     233   * Flags that can be used with g_file_measure_disk_usage().
     234   *
     235   * Since: 2.38
     236   **/
     237  typedef enum {
     238    G_FILE_MEASURE_NONE                 = 0,
     239    G_FILE_MEASURE_REPORT_ANY_ERROR     = (1 << 1),
     240    G_FILE_MEASURE_APPARENT_SIZE        = (1 << 2),
     241    G_FILE_MEASURE_NO_XDEV              = (1 << 3)
     242  } GFileMeasureFlags;
     243  
     244  /**
     245   * GMountMountFlags:
     246   * @G_MOUNT_MOUNT_NONE: No flags set.
     247   *
     248   * Flags used when mounting a mount.
     249   */
     250  typedef enum /*< flags >*/ {
     251    G_MOUNT_MOUNT_NONE = 0
     252  } GMountMountFlags;
     253  
     254  
     255  /**
     256   * GMountUnmountFlags:
     257   * @G_MOUNT_UNMOUNT_NONE: No flags set.
     258   * @G_MOUNT_UNMOUNT_FORCE: Unmount even if there are outstanding
     259   *  file operations on the mount.
     260   *
     261   * Flags used when an unmounting a mount.
     262   */
     263  typedef enum {
     264    G_MOUNT_UNMOUNT_NONE  = 0,
     265    G_MOUNT_UNMOUNT_FORCE = (1 << 0)
     266  } GMountUnmountFlags;
     267  
     268  /**
     269   * GDriveStartFlags:
     270   * @G_DRIVE_START_NONE: No flags set.
     271   *
     272   * Flags used when starting a drive.
     273   *
     274   * Since: 2.22
     275   */
     276  typedef enum /*< flags >*/ {
     277    G_DRIVE_START_NONE = 0
     278  } GDriveStartFlags;
     279  
     280  /**
     281   * GDriveStartStopType:
     282   * @G_DRIVE_START_STOP_TYPE_UNKNOWN: Unknown or drive doesn't support
     283   *    start/stop.
     284   * @G_DRIVE_START_STOP_TYPE_SHUTDOWN: The stop method will physically
     285   *    shut down the drive and e.g. power down the port the drive is
     286   *    attached to.
     287   * @G_DRIVE_START_STOP_TYPE_NETWORK: The start/stop methods are used
     288   *    for connecting/disconnect to the drive over the network.
     289   * @G_DRIVE_START_STOP_TYPE_MULTIDISK: The start/stop methods will
     290   *    assemble/disassemble a virtual drive from several physical
     291   *    drives.
     292   * @G_DRIVE_START_STOP_TYPE_PASSWORD: The start/stop methods will
     293   *    unlock/lock the disk (for example using the ATA <quote>SECURITY
     294   *    UNLOCK DEVICE</quote> command)
     295   *
     296   * Enumeration describing how a drive can be started/stopped.
     297   *
     298   * Since: 2.22
     299   */
     300  typedef enum {
     301    G_DRIVE_START_STOP_TYPE_UNKNOWN,
     302    G_DRIVE_START_STOP_TYPE_SHUTDOWN,
     303    G_DRIVE_START_STOP_TYPE_NETWORK,
     304    G_DRIVE_START_STOP_TYPE_MULTIDISK,
     305    G_DRIVE_START_STOP_TYPE_PASSWORD
     306  } GDriveStartStopType;
     307  
     308  /**
     309   * GFileCopyFlags:
     310   * @G_FILE_COPY_NONE: No flags set.
     311   * @G_FILE_COPY_OVERWRITE: Overwrite any existing files
     312   * @G_FILE_COPY_BACKUP: Make a backup of any existing files.
     313   * @G_FILE_COPY_NOFOLLOW_SYMLINKS: Don't follow symlinks.
     314   * @G_FILE_COPY_ALL_METADATA: Copy all file metadata instead of just default set used for copy (see #GFileInfo).
     315   * @G_FILE_COPY_NO_FALLBACK_FOR_MOVE: Don't use copy and delete fallback if native move not supported.
     316   * @G_FILE_COPY_TARGET_DEFAULT_PERMS: Leaves target file with default perms, instead of setting the source file perms.
     317   * @G_FILE_COPY_TARGET_DEFAULT_MODIFIED_TIME: Use default modification
     318   *     timestamps instead of copying them from the source file. Since 2.80
     319   *
     320   * Flags used when copying or moving files.
     321   */
     322  typedef enum {
     323    G_FILE_COPY_NONE                 = 0,          /*< nick=none >*/
     324    G_FILE_COPY_OVERWRITE            = (1 << 0),
     325    G_FILE_COPY_BACKUP               = (1 << 1),
     326    G_FILE_COPY_NOFOLLOW_SYMLINKS    = (1 << 2),
     327    G_FILE_COPY_ALL_METADATA         = (1 << 3),
     328    G_FILE_COPY_NO_FALLBACK_FOR_MOVE = (1 << 4),
     329    G_FILE_COPY_TARGET_DEFAULT_PERMS = (1 << 5),
     330    G_FILE_COPY_TARGET_DEFAULT_MODIFIED_TIME GIO_AVAILABLE_ENUMERATOR_IN_2_80 = (1 << 6),
     331  } GFileCopyFlags;
     332  
     333  
     334  /**
     335   * GFileMonitorFlags:
     336   * @G_FILE_MONITOR_NONE: No flags set.
     337   * @G_FILE_MONITOR_WATCH_MOUNTS: Watch for mount events.
     338   * @G_FILE_MONITOR_SEND_MOVED: Pair DELETED and CREATED events caused
     339   *   by file renames (moves) and send a single G_FILE_MONITOR_EVENT_MOVED
     340   *   event instead (NB: not supported on all backends; the default
     341   *   behaviour -without specifying this flag- is to send single DELETED
     342   *   and CREATED events).  Deprecated since 2.46: use
     343   *   %G_FILE_MONITOR_WATCH_MOVES instead.
     344   * @G_FILE_MONITOR_WATCH_HARD_LINKS: Watch for changes to the file made
     345   *   via another hard link. Since 2.36.
     346   * @G_FILE_MONITOR_WATCH_MOVES: Watch for rename operations on a
     347   *   monitored directory.  This causes %G_FILE_MONITOR_EVENT_RENAMED,
     348   *   %G_FILE_MONITOR_EVENT_MOVED_IN and %G_FILE_MONITOR_EVENT_MOVED_OUT
     349   *   events to be emitted when possible.  Since: 2.46.
     350   *
     351   * Flags used to set what a #GFileMonitor will watch for.
     352   */
     353  typedef enum {
     354    G_FILE_MONITOR_NONE             = 0,
     355    G_FILE_MONITOR_WATCH_MOUNTS     = (1 << 0),
     356    G_FILE_MONITOR_SEND_MOVED       = (1 << 1),
     357    G_FILE_MONITOR_WATCH_HARD_LINKS = (1 << 2),
     358    G_FILE_MONITOR_WATCH_MOVES      = (1 << 3)
     359  } GFileMonitorFlags;
     360  
     361  
     362  /**
     363   * GFileType:
     364   * @G_FILE_TYPE_UNKNOWN: File's type is unknown.
     365   * @G_FILE_TYPE_REGULAR: File handle represents a regular file.
     366   * @G_FILE_TYPE_DIRECTORY: File handle represents a directory.
     367   * @G_FILE_TYPE_SYMBOLIC_LINK: File handle represents a symbolic link
     368   *    (Unix systems).
     369   * @G_FILE_TYPE_SPECIAL: File is a "special" file, such as a socket, fifo,
     370   *    block device, or character device.
     371   * @G_FILE_TYPE_SHORTCUT: File is a shortcut (Windows systems).
     372   * @G_FILE_TYPE_MOUNTABLE: File is a mountable location.
     373   *
     374   * Indicates the file's on-disk type.
     375   *
     376   * On Windows systems a file will never have %G_FILE_TYPE_SYMBOLIC_LINK type;
     377   * use #GFileInfo and %G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK to determine
     378   * whether a file is a symlink or not. This is due to the fact that NTFS does
     379   * not have a single filesystem object type for symbolic links - it has
     380   * files that symlink to files, and directories that symlink to directories.
     381   * #GFileType enumeration cannot precisely represent this important distinction,
     382   * which is why all Windows symlinks will continue to be reported as
     383   * %G_FILE_TYPE_REGULAR or %G_FILE_TYPE_DIRECTORY.
     384   **/
     385  typedef enum {
     386    G_FILE_TYPE_UNKNOWN = 0,
     387    G_FILE_TYPE_REGULAR,
     388    G_FILE_TYPE_DIRECTORY,
     389    G_FILE_TYPE_SYMBOLIC_LINK,
     390    G_FILE_TYPE_SPECIAL, /* socket, fifo, blockdev, chardev */
     391    G_FILE_TYPE_SHORTCUT,
     392    G_FILE_TYPE_MOUNTABLE
     393  } GFileType;
     394  
     395  
     396  /**
     397   * GFilesystemPreviewType:
     398   * @G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS: Only preview files if user has explicitly requested it.
     399   * @G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL: Preview files if user has requested preview of "local" files.
     400   * @G_FILESYSTEM_PREVIEW_TYPE_NEVER: Never preview files.
     401   *
     402   * Indicates a hint from the file system whether files should be
     403   * previewed in a file manager. Returned as the value of the key
     404   * %G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW.
     405   **/
     406  typedef enum {
     407    G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS = 0,
     408    G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL,
     409    G_FILESYSTEM_PREVIEW_TYPE_NEVER
     410  } GFilesystemPreviewType;
     411  
     412  
     413  /**
     414   * GFileMonitorEvent:
     415   * @G_FILE_MONITOR_EVENT_CHANGED: a file changed.
     416   * @G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT: a hint that this was probably the last change in a set of changes.
     417   * @G_FILE_MONITOR_EVENT_DELETED: a file was deleted.
     418   * @G_FILE_MONITOR_EVENT_CREATED: a file was created.
     419   * @G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED: a file attribute was changed.
     420   * @G_FILE_MONITOR_EVENT_PRE_UNMOUNT: the file location will soon be unmounted.
     421   * @G_FILE_MONITOR_EVENT_UNMOUNTED: the file location was unmounted.
     422   * @G_FILE_MONITOR_EVENT_MOVED: the file was moved -- only sent if the
     423   *   (deprecated) %G_FILE_MONITOR_SEND_MOVED flag is set
     424   * @G_FILE_MONITOR_EVENT_RENAMED: the file was renamed within the
     425   *   current directory -- only sent if the %G_FILE_MONITOR_WATCH_MOVES
     426   *   flag is set.  Since: 2.46.
     427   * @G_FILE_MONITOR_EVENT_MOVED_IN: the file was moved into the
     428   *   monitored directory from another location -- only sent if the
     429   *   %G_FILE_MONITOR_WATCH_MOVES flag is set.  Since: 2.46.
     430   * @G_FILE_MONITOR_EVENT_MOVED_OUT: the file was moved out of the
     431   *   monitored directory to another location -- only sent if the
     432   *   %G_FILE_MONITOR_WATCH_MOVES flag is set.  Since: 2.46
     433   *
     434   * Specifies what type of event a monitor event is.
     435   **/
     436  typedef enum {
     437    G_FILE_MONITOR_EVENT_CHANGED,
     438    G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT,
     439    G_FILE_MONITOR_EVENT_DELETED,
     440    G_FILE_MONITOR_EVENT_CREATED,
     441    G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED,
     442    G_FILE_MONITOR_EVENT_PRE_UNMOUNT,
     443    G_FILE_MONITOR_EVENT_UNMOUNTED,
     444    G_FILE_MONITOR_EVENT_MOVED,
     445    G_FILE_MONITOR_EVENT_RENAMED,
     446    G_FILE_MONITOR_EVENT_MOVED_IN,
     447    G_FILE_MONITOR_EVENT_MOVED_OUT
     448  } GFileMonitorEvent;
     449  
     450  
     451  /* This enumeration conflicts with GIOError in giochannel.h. However,
     452   * that is only used as a return value in some deprecated functions.
     453   * So, we reuse the same prefix for the enumeration values, but call
     454   * the actual enumeration (which is rarely used) GIOErrorEnum.
     455   */
     456  /**
     457   * GIOErrorEnum:
     458   * @G_IO_ERROR_FAILED: Generic error condition for when an operation fails
     459   *     and no more specific #GIOErrorEnum value is defined.
     460   * @G_IO_ERROR_NOT_FOUND: File not found.
     461   * @G_IO_ERROR_EXISTS: File already exists.
     462   * @G_IO_ERROR_IS_DIRECTORY: File is a directory.
     463   * @G_IO_ERROR_NOT_DIRECTORY: File is not a directory.
     464   * @G_IO_ERROR_NOT_EMPTY: File is a directory that isn't empty.
     465   * @G_IO_ERROR_NOT_REGULAR_FILE: File is not a regular file.
     466   * @G_IO_ERROR_NOT_SYMBOLIC_LINK: File is not a symbolic link.
     467   * @G_IO_ERROR_NOT_MOUNTABLE_FILE: File cannot be mounted.
     468   * @G_IO_ERROR_FILENAME_TOO_LONG: Filename is too many characters.
     469   * @G_IO_ERROR_INVALID_FILENAME: Filename is invalid or contains invalid characters.
     470   * @G_IO_ERROR_TOO_MANY_LINKS: File contains too many symbolic links.
     471   * @G_IO_ERROR_NO_SPACE: No space left on drive.
     472   * @G_IO_ERROR_INVALID_ARGUMENT: Invalid argument.
     473   * @G_IO_ERROR_PERMISSION_DENIED: Permission denied.
     474   * @G_IO_ERROR_NOT_SUPPORTED: Operation (or one of its parameters) not supported
     475   * @G_IO_ERROR_NOT_MOUNTED: File isn't mounted.
     476   * @G_IO_ERROR_ALREADY_MOUNTED: File is already mounted.
     477   * @G_IO_ERROR_CLOSED: File was closed.
     478   * @G_IO_ERROR_CANCELLED: Operation was cancelled. See #GCancellable.
     479   * @G_IO_ERROR_PENDING: Operations are still pending.
     480   * @G_IO_ERROR_READ_ONLY: File is read only.
     481   * @G_IO_ERROR_CANT_CREATE_BACKUP: Backup couldn't be created.
     482   * @G_IO_ERROR_WRONG_ETAG: File's Entity Tag was incorrect.
     483   * @G_IO_ERROR_TIMED_OUT: Operation timed out.
     484   * @G_IO_ERROR_WOULD_RECURSE: Operation would be recursive.
     485   * @G_IO_ERROR_BUSY: File is busy.
     486   * @G_IO_ERROR_WOULD_BLOCK: Operation would block.
     487   * @G_IO_ERROR_HOST_NOT_FOUND: Host couldn't be found (remote operations).
     488   * @G_IO_ERROR_WOULD_MERGE: Operation would merge files.
     489   * @G_IO_ERROR_FAILED_HANDLED: Operation failed and a helper program has
     490   *     already interacted with the user. Do not display any error dialog.
     491   * @G_IO_ERROR_TOO_MANY_OPEN_FILES: The current process has too many files
     492   *     open and can't open any more. Duplicate descriptors do count toward
     493   *     this limit. Since 2.20
     494   * @G_IO_ERROR_NOT_INITIALIZED: The object has not been initialized. Since 2.22
     495   * @G_IO_ERROR_ADDRESS_IN_USE: The requested address is already in use. Since 2.22
     496   * @G_IO_ERROR_PARTIAL_INPUT: Need more input to finish operation. Since 2.24
     497   * @G_IO_ERROR_INVALID_DATA: The input data was invalid. Since 2.24
     498   * @G_IO_ERROR_DBUS_ERROR: A remote object generated an error that
     499   *     doesn't correspond to a locally registered #GError error
     500   *     domain. Use g_dbus_error_get_remote_error() to extract the D-Bus
     501   *     error name and g_dbus_error_strip_remote_error() to fix up the
     502   *     message so it matches what was received on the wire. Since 2.26.
     503   * @G_IO_ERROR_HOST_UNREACHABLE: Host unreachable. Since 2.26
     504   * @G_IO_ERROR_NETWORK_UNREACHABLE: Network unreachable. Since 2.26
     505   * @G_IO_ERROR_CONNECTION_REFUSED: Connection refused. Since 2.26
     506   * @G_IO_ERROR_PROXY_FAILED: Connection to proxy server failed. Since 2.26
     507   * @G_IO_ERROR_PROXY_AUTH_FAILED: Proxy authentication failed. Since 2.26
     508   * @G_IO_ERROR_PROXY_NEED_AUTH: Proxy server needs authentication. Since 2.26
     509   * @G_IO_ERROR_PROXY_NOT_ALLOWED: Proxy connection is not allowed by ruleset.
     510   *     Since 2.26
     511   * @G_IO_ERROR_BROKEN_PIPE: Broken pipe. Since 2.36
     512   * @G_IO_ERROR_CONNECTION_CLOSED: Connection closed by peer. Note that this
     513   *     is the same code as %G_IO_ERROR_BROKEN_PIPE; before 2.44 some
     514   *     "connection closed" errors returned %G_IO_ERROR_BROKEN_PIPE, but others
     515   *     returned %G_IO_ERROR_FAILED. Now they should all return the same
     516   *     value, which has this more logical name. Since 2.44.
     517   * @G_IO_ERROR_NOT_CONNECTED: Transport endpoint is not connected. Since 2.44
     518   * @G_IO_ERROR_MESSAGE_TOO_LARGE: Message too large. Since 2.48.
     519   * @G_IO_ERROR_NO_SUCH_DEVICE: No such device found. Since 2.74
     520   * @G_IO_ERROR_DESTINATION_UNSET: Destination address unset. Since 2.80
     521   *
     522   * Error codes returned by GIO functions.
     523   *
     524   * Note that this domain may be extended in future GLib releases. In
     525   * general, new error codes either only apply to new APIs, or else
     526   * replace %G_IO_ERROR_FAILED in cases that were not explicitly
     527   * distinguished before. You should therefore avoid writing code like
     528   * |[<!-- language="C" -->
     529   * if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_FAILED))
     530   *   {
     531   *     // Assume that this is EPRINTERONFIRE
     532   *     ...
     533   *   }
     534   * ]|
     535   * but should instead treat all unrecognized error codes the same as
     536   * %G_IO_ERROR_FAILED.
     537   *
     538   * See also #GPollableReturn for a cheaper way of returning
     539   * %G_IO_ERROR_WOULD_BLOCK to callers without allocating a #GError.
     540   **/
     541  typedef enum {
     542    G_IO_ERROR_FAILED,
     543    G_IO_ERROR_NOT_FOUND,
     544    G_IO_ERROR_EXISTS,
     545    G_IO_ERROR_IS_DIRECTORY,
     546    G_IO_ERROR_NOT_DIRECTORY,
     547    G_IO_ERROR_NOT_EMPTY,
     548    G_IO_ERROR_NOT_REGULAR_FILE,
     549    G_IO_ERROR_NOT_SYMBOLIC_LINK,
     550    G_IO_ERROR_NOT_MOUNTABLE_FILE,
     551    G_IO_ERROR_FILENAME_TOO_LONG,
     552    G_IO_ERROR_INVALID_FILENAME,
     553    G_IO_ERROR_TOO_MANY_LINKS,
     554    G_IO_ERROR_NO_SPACE,
     555    G_IO_ERROR_INVALID_ARGUMENT,
     556    G_IO_ERROR_PERMISSION_DENIED,
     557    G_IO_ERROR_NOT_SUPPORTED,
     558    G_IO_ERROR_NOT_MOUNTED,
     559    G_IO_ERROR_ALREADY_MOUNTED,
     560    G_IO_ERROR_CLOSED,
     561    G_IO_ERROR_CANCELLED,
     562    G_IO_ERROR_PENDING,
     563    G_IO_ERROR_READ_ONLY,
     564    G_IO_ERROR_CANT_CREATE_BACKUP,
     565    G_IO_ERROR_WRONG_ETAG,
     566    G_IO_ERROR_TIMED_OUT,
     567    G_IO_ERROR_WOULD_RECURSE,
     568    G_IO_ERROR_BUSY,
     569    G_IO_ERROR_WOULD_BLOCK,
     570    G_IO_ERROR_HOST_NOT_FOUND,
     571    G_IO_ERROR_WOULD_MERGE,
     572    G_IO_ERROR_FAILED_HANDLED,
     573    G_IO_ERROR_TOO_MANY_OPEN_FILES,
     574    G_IO_ERROR_NOT_INITIALIZED,
     575    G_IO_ERROR_ADDRESS_IN_USE,
     576    G_IO_ERROR_PARTIAL_INPUT,
     577    G_IO_ERROR_INVALID_DATA,
     578    G_IO_ERROR_DBUS_ERROR,
     579    G_IO_ERROR_HOST_UNREACHABLE,
     580    G_IO_ERROR_NETWORK_UNREACHABLE,
     581    G_IO_ERROR_CONNECTION_REFUSED,
     582    G_IO_ERROR_PROXY_FAILED,
     583    G_IO_ERROR_PROXY_AUTH_FAILED,
     584    G_IO_ERROR_PROXY_NEED_AUTH,
     585    G_IO_ERROR_PROXY_NOT_ALLOWED,
     586    G_IO_ERROR_BROKEN_PIPE,
     587    G_IO_ERROR_CONNECTION_CLOSED = G_IO_ERROR_BROKEN_PIPE,
     588    G_IO_ERROR_NOT_CONNECTED,
     589    G_IO_ERROR_MESSAGE_TOO_LARGE,
     590    G_IO_ERROR_NO_SUCH_DEVICE GIO_AVAILABLE_ENUMERATOR_IN_2_74,
     591    G_IO_ERROR_DESTINATION_UNSET GIO_AVAILABLE_ENUMERATOR_IN_2_80,
     592  } GIOErrorEnum;
     593  
     594  
     595  /**
     596   * GAskPasswordFlags:
     597   * @G_ASK_PASSWORD_NEED_PASSWORD: operation requires a password.
     598   * @G_ASK_PASSWORD_NEED_USERNAME: operation requires a username.
     599   * @G_ASK_PASSWORD_NEED_DOMAIN: operation requires a domain.
     600   * @G_ASK_PASSWORD_SAVING_SUPPORTED: operation supports saving settings.
     601   * @G_ASK_PASSWORD_ANONYMOUS_SUPPORTED: operation supports anonymous users.
     602   * @G_ASK_PASSWORD_TCRYPT: operation takes TCRYPT parameters (Since: 2.58)
     603   *
     604   * #GAskPasswordFlags are used to request specific information from the
     605   * user, or to notify the user of their choices in an authentication
     606   * situation.
     607   **/
     608  typedef enum {
     609    G_ASK_PASSWORD_NEED_PASSWORD           = (1 << 0),
     610    G_ASK_PASSWORD_NEED_USERNAME           = (1 << 1),
     611    G_ASK_PASSWORD_NEED_DOMAIN             = (1 << 2),
     612    G_ASK_PASSWORD_SAVING_SUPPORTED        = (1 << 3),
     613    G_ASK_PASSWORD_ANONYMOUS_SUPPORTED     = (1 << 4),
     614    G_ASK_PASSWORD_TCRYPT                  = (1 << 5),
     615  } GAskPasswordFlags;
     616  
     617  
     618  /**
     619   * GPasswordSave:
     620   * @G_PASSWORD_SAVE_NEVER: never save a password.
     621   * @G_PASSWORD_SAVE_FOR_SESSION: save a password for the session.
     622   * @G_PASSWORD_SAVE_PERMANENTLY: save a password permanently.
     623   *
     624   * #GPasswordSave is used to indicate the lifespan of a saved password.
     625   *
     626   * #Gvfs stores passwords in the Gnome keyring when this flag allows it
     627   * to, and later retrieves it again from there.
     628   **/
     629  typedef enum {
     630    G_PASSWORD_SAVE_NEVER,
     631    G_PASSWORD_SAVE_FOR_SESSION,
     632    G_PASSWORD_SAVE_PERMANENTLY
     633  } GPasswordSave;
     634  
     635  
     636  /**
     637   * GMountOperationResult:
     638   * @G_MOUNT_OPERATION_HANDLED: The request was fulfilled and the
     639   *     user specified data is now available
     640   * @G_MOUNT_OPERATION_ABORTED: The user requested the mount operation
     641   *     to be aborted
     642   * @G_MOUNT_OPERATION_UNHANDLED: The request was unhandled (i.e. not
     643   *     implemented)
     644   *
     645   * #GMountOperationResult is returned as a result when a request for
     646   * information is send by the mounting operation.
     647   **/
     648  typedef enum {
     649    G_MOUNT_OPERATION_HANDLED,
     650    G_MOUNT_OPERATION_ABORTED,
     651    G_MOUNT_OPERATION_UNHANDLED
     652  } GMountOperationResult;
     653  
     654  
     655  /**
     656   * GOutputStreamSpliceFlags:
     657   * @G_OUTPUT_STREAM_SPLICE_NONE: Do not close either stream.
     658   * @G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE: Close the source stream after
     659   *     the splice.
     660   * @G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET: Close the target stream after
     661   *     the splice.
     662   *
     663   * GOutputStreamSpliceFlags determine how streams should be spliced.
     664   **/
     665  typedef enum {
     666    G_OUTPUT_STREAM_SPLICE_NONE         = 0,
     667    G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE = (1 << 0),
     668    G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET = (1 << 1)
     669  } GOutputStreamSpliceFlags;
     670  
     671  
     672  /**
     673   * GIOStreamSpliceFlags:
     674   * @G_IO_STREAM_SPLICE_NONE: Do not close either stream.
     675   * @G_IO_STREAM_SPLICE_CLOSE_STREAM1: Close the first stream after
     676   *     the splice.
     677   * @G_IO_STREAM_SPLICE_CLOSE_STREAM2: Close the second stream after
     678   *     the splice.
     679   * @G_IO_STREAM_SPLICE_WAIT_FOR_BOTH: Wait for both splice operations to finish
     680   *     before calling the callback.
     681   *
     682   * GIOStreamSpliceFlags determine how streams should be spliced.
     683   *
     684   * Since: 2.28
     685   **/
     686  typedef enum {
     687    G_IO_STREAM_SPLICE_NONE          = 0,
     688    G_IO_STREAM_SPLICE_CLOSE_STREAM1 = (1 << 0),
     689    G_IO_STREAM_SPLICE_CLOSE_STREAM2 = (1 << 1),
     690    G_IO_STREAM_SPLICE_WAIT_FOR_BOTH = (1 << 2)
     691  } GIOStreamSpliceFlags;
     692  
     693  /**
     694   * GEmblemOrigin:
     695   * @G_EMBLEM_ORIGIN_UNKNOWN: Emblem of unknown origin
     696   * @G_EMBLEM_ORIGIN_DEVICE: Emblem adds device-specific information
     697   * @G_EMBLEM_ORIGIN_LIVEMETADATA: Emblem depicts live metadata, such as "readonly"
     698   * @G_EMBLEM_ORIGIN_TAG: Emblem comes from a user-defined tag, e.g. set by nautilus (in the future)
     699   *
     700   * GEmblemOrigin is used to add information about the origin of the emblem
     701   * to #GEmblem.
     702   *
     703   * Since: 2.18
     704   */
     705  typedef enum  {
     706    G_EMBLEM_ORIGIN_UNKNOWN,
     707    G_EMBLEM_ORIGIN_DEVICE,
     708    G_EMBLEM_ORIGIN_LIVEMETADATA,
     709    G_EMBLEM_ORIGIN_TAG
     710  } GEmblemOrigin;
     711  
     712  /**
     713   * GResolverError:
     714   * @G_RESOLVER_ERROR_NOT_FOUND: the requested name/address/service was not
     715   *     found
     716   * @G_RESOLVER_ERROR_TEMPORARY_FAILURE: the requested information could not
     717   *     be looked up due to a network error or similar problem
     718   * @G_RESOLVER_ERROR_INTERNAL: unknown error
     719   *
     720   * An error code used with %G_RESOLVER_ERROR in a #GError returned
     721   * from a #GResolver routine.
     722   *
     723   * Since: 2.22
     724   */
     725  typedef enum {
     726    G_RESOLVER_ERROR_NOT_FOUND,
     727    G_RESOLVER_ERROR_TEMPORARY_FAILURE,
     728    G_RESOLVER_ERROR_INTERNAL
     729  } GResolverError;
     730  
     731  /**
     732   * GResolverRecordType:
     733   * @G_RESOLVER_RECORD_SRV: look up DNS SRV records for a domain
     734   * @G_RESOLVER_RECORD_MX: look up DNS MX records for a domain
     735   * @G_RESOLVER_RECORD_TXT: look up DNS TXT records for a name
     736   * @G_RESOLVER_RECORD_SOA: look up DNS SOA records for a zone
     737   * @G_RESOLVER_RECORD_NS: look up DNS NS records for a domain
     738   *
     739   * The type of record that g_resolver_lookup_records() or
     740   * g_resolver_lookup_records_async() should retrieve. The records are returned
     741   * as lists of #GVariant tuples. Each record type has different values in
     742   * the variant tuples returned.
     743   *
     744   * %G_RESOLVER_RECORD_SRV records are returned as variants with the signature
     745   * `(qqqs)`, containing a `guint16` with the priority, a `guint16` with the
     746   * weight, a `guint16` with the port, and a string of the hostname.
     747   *
     748   * %G_RESOLVER_RECORD_MX records are returned as variants with the signature
     749   * `(qs)`, representing a `guint16` with the preference, and a string containing
     750   * the mail exchanger hostname.
     751   *
     752   * %G_RESOLVER_RECORD_TXT records are returned as variants with the signature
     753   * `(as)`, representing an array of the strings in the text record. Note: Most TXT
     754   * records only contain a single string, but
     755   * [RFC 1035](https://tools.ietf.org/html/rfc1035#section-3.3.14) does allow a
     756   * record to contain multiple strings. The RFC which defines the interpretation
     757   * of a specific TXT record will likely require concatenation of multiple
     758   * strings if they are present, as with
     759   * [RFC 7208](https://tools.ietf.org/html/rfc7208#section-3.3).
     760   *
     761   * %G_RESOLVER_RECORD_SOA records are returned as variants with the signature
     762   * `(ssuuuuu)`, representing a string containing the primary name server, a
     763   * string containing the administrator, the serial as a `guint32`, the refresh
     764   * interval as a `guint32`, the retry interval as a `guint32`, the expire timeout
     765   * as a `guint32`, and the TTL as a `guint32`.
     766   *
     767   * %G_RESOLVER_RECORD_NS records are returned as variants with the signature
     768   * `(s)`, representing a string of the hostname of the name server.
     769   *
     770   * Since: 2.34
     771   */
     772  typedef enum {
     773    G_RESOLVER_RECORD_SRV = 1,
     774    G_RESOLVER_RECORD_MX,
     775    G_RESOLVER_RECORD_TXT,
     776    G_RESOLVER_RECORD_SOA,
     777    G_RESOLVER_RECORD_NS
     778  } GResolverRecordType;
     779  
     780  /**
     781   * GResourceError:
     782   * @G_RESOURCE_ERROR_NOT_FOUND: no file was found at the requested path
     783   * @G_RESOURCE_ERROR_INTERNAL: unknown error
     784   *
     785   * An error code used with %G_RESOURCE_ERROR in a #GError returned
     786   * from a #GResource routine.
     787   *
     788   * Since: 2.32
     789   */
     790  typedef enum {
     791    G_RESOURCE_ERROR_NOT_FOUND,
     792    G_RESOURCE_ERROR_INTERNAL
     793  } GResourceError;
     794  
     795  /**
     796   * GResourceFlags:
     797   * @G_RESOURCE_FLAGS_NONE: No flags set.
     798   * @G_RESOURCE_FLAGS_COMPRESSED: The file is compressed.
     799   *
     800   * GResourceFlags give information about a particular file inside a resource
     801   * bundle.
     802   * 
     803   * Since: 2.32
     804   **/
     805  typedef enum {
     806    G_RESOURCE_FLAGS_NONE       = 0,
     807    G_RESOURCE_FLAGS_COMPRESSED = (1<<0)
     808  } GResourceFlags;
     809  
     810  /**
     811   * GResourceLookupFlags:
     812   * @G_RESOURCE_LOOKUP_FLAGS_NONE: No flags set.
     813   *
     814   * GResourceLookupFlags determine how resource path lookups are handled.
     815   * 
     816   * Since: 2.32
     817   **/
     818  typedef enum /*< flags >*/ {
     819    G_RESOURCE_LOOKUP_FLAGS_NONE       = 0
     820  } GResourceLookupFlags;
     821  
     822  /**
     823   * GSocketFamily:
     824   * @G_SOCKET_FAMILY_INVALID: no address family
     825   * @G_SOCKET_FAMILY_IPV4: the IPv4 family
     826   * @G_SOCKET_FAMILY_IPV6: the IPv6 family
     827   * @G_SOCKET_FAMILY_UNIX: the UNIX domain family
     828   *
     829   * The protocol family of a #GSocketAddress. (These values are
     830   * identical to the system defines %AF_INET, %AF_INET6 and %AF_UNIX,
     831   * if available.)
     832   *
     833   * Since: 2.22
     834   */
     835  typedef enum {
     836    G_SOCKET_FAMILY_INVALID,
     837    G_SOCKET_FAMILY_UNIX = GLIB_SYSDEF_AF_UNIX,
     838    G_SOCKET_FAMILY_IPV4 = GLIB_SYSDEF_AF_INET,
     839    G_SOCKET_FAMILY_IPV6 = GLIB_SYSDEF_AF_INET6
     840  } GSocketFamily;
     841  
     842  /**
     843   * GSocketType:
     844   * @G_SOCKET_TYPE_INVALID: Type unknown or wrong
     845   * @G_SOCKET_TYPE_STREAM: Reliable connection-based byte streams (e.g. TCP).
     846   * @G_SOCKET_TYPE_DATAGRAM: Connectionless, unreliable datagram passing.
     847   *     (e.g. UDP)
     848   * @G_SOCKET_TYPE_SEQPACKET: Reliable connection-based passing of datagrams
     849   *     of fixed maximum length (e.g. SCTP).
     850   *
     851   * Flags used when creating a #GSocket. Some protocols may not implement
     852   * all the socket types.
     853   *
     854   * Since: 2.22
     855   */
     856  typedef enum
     857  {
     858    G_SOCKET_TYPE_INVALID,
     859    G_SOCKET_TYPE_STREAM,
     860    G_SOCKET_TYPE_DATAGRAM,
     861    G_SOCKET_TYPE_SEQPACKET
     862  } GSocketType;
     863  
     864  /**
     865   * GSocketMsgFlags:
     866   * @G_SOCKET_MSG_NONE: No flags.
     867   * @G_SOCKET_MSG_OOB: Request to send/receive out of band data.
     868   * @G_SOCKET_MSG_PEEK: Read data from the socket without removing it from
     869   *     the queue.
     870   * @G_SOCKET_MSG_DONTROUTE: Don't use a gateway to send out the packet,
     871   *     only send to hosts on directly connected networks.
     872   *
     873   * Flags used in g_socket_receive_message() and g_socket_send_message().
     874   * The flags listed in the enum are some commonly available flags, but the
     875   * values used for them are the same as on the platform, and any other flags
     876   * are passed in/out as is. So to use a platform specific flag, just include
     877   * the right system header and pass in the flag.
     878   *
     879   * Since: 2.22
     880   */
     881  typedef enum /*< flags >*/
     882  {
     883    G_SOCKET_MSG_NONE,
     884    G_SOCKET_MSG_OOB = GLIB_SYSDEF_MSG_OOB,
     885    G_SOCKET_MSG_PEEK = GLIB_SYSDEF_MSG_PEEK,
     886    G_SOCKET_MSG_DONTROUTE = GLIB_SYSDEF_MSG_DONTROUTE
     887  } GSocketMsgFlags;
     888  
     889  /**
     890   * GSocketProtocol:
     891   * @G_SOCKET_PROTOCOL_UNKNOWN: The protocol type is unknown
     892   * @G_SOCKET_PROTOCOL_DEFAULT: The default protocol for the family/type
     893   * @G_SOCKET_PROTOCOL_TCP: TCP over IP
     894   * @G_SOCKET_PROTOCOL_UDP: UDP over IP
     895   * @G_SOCKET_PROTOCOL_SCTP: SCTP over IP
     896   *
     897   * A protocol identifier is specified when creating a #GSocket, which is a
     898   * family/type specific identifier, where 0 means the default protocol for
     899   * the particular family/type.
     900   *
     901   * This enum contains a set of commonly available and used protocols. You
     902   * can also pass any other identifiers handled by the platform in order to
     903   * use protocols not listed here.
     904   *
     905   * Since: 2.22
     906   */
     907  typedef enum {
     908    G_SOCKET_PROTOCOL_UNKNOWN = -1,
     909    G_SOCKET_PROTOCOL_DEFAULT = 0,
     910    G_SOCKET_PROTOCOL_TCP     = 6,
     911    G_SOCKET_PROTOCOL_UDP     = 17,
     912    G_SOCKET_PROTOCOL_SCTP    = 132
     913  } GSocketProtocol;
     914  
     915  /**
     916   * GZlibCompressorFormat:
     917   * @G_ZLIB_COMPRESSOR_FORMAT_ZLIB: deflate compression with zlib header
     918   * @G_ZLIB_COMPRESSOR_FORMAT_GZIP: gzip file format
     919   * @G_ZLIB_COMPRESSOR_FORMAT_RAW: deflate compression with no header
     920   *
     921   * Used to select the type of data format to use for #GZlibDecompressor
     922   * and #GZlibCompressor.
     923   *
     924   * Since: 2.24
     925   */
     926  typedef enum {
     927    G_ZLIB_COMPRESSOR_FORMAT_ZLIB,
     928    G_ZLIB_COMPRESSOR_FORMAT_GZIP,
     929    G_ZLIB_COMPRESSOR_FORMAT_RAW
     930  } GZlibCompressorFormat;
     931  
     932  /**
     933   * GUnixSocketAddressType:
     934   * @G_UNIX_SOCKET_ADDRESS_INVALID: invalid
     935   * @G_UNIX_SOCKET_ADDRESS_ANONYMOUS: anonymous
     936   * @G_UNIX_SOCKET_ADDRESS_PATH: a filesystem path
     937   * @G_UNIX_SOCKET_ADDRESS_ABSTRACT: an abstract name
     938   * @G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED: an abstract name, 0-padded
     939   *   to the full length of a unix socket name
     940   *
     941   * The type of name used by a #GUnixSocketAddress.
     942   * %G_UNIX_SOCKET_ADDRESS_PATH indicates a traditional unix domain
     943   * socket bound to a filesystem path. %G_UNIX_SOCKET_ADDRESS_ANONYMOUS
     944   * indicates a socket not bound to any name (eg, a client-side socket,
     945   * or a socket created with socketpair()).
     946   *
     947   * For abstract sockets, there are two incompatible ways of naming
     948   * them; the man pages suggest using the entire `struct sockaddr_un`
     949   * as the name, padding the unused parts of the %sun_path field with
     950   * zeroes; this corresponds to %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED.
     951   * However, many programs instead just use a portion of %sun_path, and
     952   * pass an appropriate smaller length to bind() or connect(). This is
     953   * %G_UNIX_SOCKET_ADDRESS_ABSTRACT.
     954   *
     955   * Since: 2.26
     956   */
     957  typedef enum {
     958    G_UNIX_SOCKET_ADDRESS_INVALID,
     959    G_UNIX_SOCKET_ADDRESS_ANONYMOUS,
     960    G_UNIX_SOCKET_ADDRESS_PATH,
     961    G_UNIX_SOCKET_ADDRESS_ABSTRACT,
     962    G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED
     963  } GUnixSocketAddressType;
     964  
     965  /**
     966   * GBusType:
     967   * @G_BUS_TYPE_STARTER: An alias for the message bus that activated the process, if any.
     968   * @G_BUS_TYPE_NONE: Not a message bus.
     969   * @G_BUS_TYPE_SYSTEM: The system-wide message bus.
     970   * @G_BUS_TYPE_SESSION: The login session message bus.
     971   *
     972   * An enumeration for well-known message buses.
     973   *
     974   * Since: 2.26
     975   */
     976  typedef enum
     977  {
     978    G_BUS_TYPE_STARTER = -1,
     979    G_BUS_TYPE_NONE = 0,
     980    G_BUS_TYPE_SYSTEM  = 1,
     981    G_BUS_TYPE_SESSION = 2
     982  } GBusType;
     983  
     984  /**
     985   * GBusNameOwnerFlags:
     986   * @G_BUS_NAME_OWNER_FLAGS_NONE: No flags set.
     987   * @G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT: Allow another message bus connection to claim the name.
     988   * @G_BUS_NAME_OWNER_FLAGS_REPLACE: If another message bus connection owns the name and have
     989   * specified %G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT, then take the name from the other connection.
     990   * @G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE: If another message bus connection owns the name, immediately
     991   * return an error from g_bus_own_name() rather than entering the waiting queue for that name. (Since 2.54)
     992   *
     993   * Flags used in g_bus_own_name().
     994   *
     995   * Since: 2.26
     996   */
     997  typedef enum
     998  {
     999    G_BUS_NAME_OWNER_FLAGS_NONE = 0,                    /*< nick=none >*/
    1000    G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT = (1<<0),  /*< nick=allow-replacement >*/
    1001    G_BUS_NAME_OWNER_FLAGS_REPLACE = (1<<1),           /*< nick=replace >*/
    1002    G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE = (1<<2)       /*< nick=do-not-queue >*/
    1003  } GBusNameOwnerFlags;
    1004  /* When adding new flags, their numeric values must currently match those
    1005   * used in the D-Bus Specification. */
    1006  
    1007  /**
    1008   * GBusNameWatcherFlags:
    1009   * @G_BUS_NAME_WATCHER_FLAGS_NONE: No flags set.
    1010   * @G_BUS_NAME_WATCHER_FLAGS_AUTO_START: If no-one owns the name when
    1011   * beginning to watch the name, ask the bus to launch an owner for the
    1012   * name.
    1013   *
    1014   * Flags used in g_bus_watch_name().
    1015   *
    1016   * Since: 2.26
    1017   */
    1018  typedef enum
    1019  {
    1020    G_BUS_NAME_WATCHER_FLAGS_NONE = 0,
    1021    G_BUS_NAME_WATCHER_FLAGS_AUTO_START = (1<<0)
    1022  } GBusNameWatcherFlags;
    1023  
    1024  /**
    1025   * GDBusProxyFlags:
    1026   * @G_DBUS_PROXY_FLAGS_NONE: No flags set.
    1027   * @G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES: Don't load properties.
    1028   * @G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS: Don't connect to signals on the remote object.
    1029   * @G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START: If the proxy is for a well-known name,
    1030   * do not ask the bus to launch an owner during proxy initialization or a method call.
    1031   * This flag is only meaningful in proxies for well-known names.
    1032   * @G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES: If set, the property value for any __invalidated property__ will be (asynchronously) retrieved upon receiving the [`PropertiesChanged`](http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties) D-Bus signal and the property will not cause emission of the #GDBusProxy::g-properties-changed signal. When the value is received the #GDBusProxy::g-properties-changed signal is emitted for the property along with the retrieved value. Since 2.32.
    1033   * @G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION: If the proxy is for a well-known name,
    1034   * do not ask the bus to launch an owner during proxy initialization, but allow it to be
    1035   * autostarted by a method call. This flag is only meaningful in proxies for well-known names,
    1036   * and only if %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START is not also specified.
    1037   * @G_DBUS_PROXY_FLAGS_NO_MATCH_RULE: Don't actually send the AddMatch D-Bus
    1038   *    call for this signal subscription. This gives you more control
    1039   *    over which match rules you add (but you must add them manually). (Since: 2.72)
    1040   *
    1041   * Flags used when constructing an instance of a #GDBusProxy derived class.
    1042   *
    1043   * Since: 2.26
    1044   */
    1045  typedef enum
    1046  {
    1047    G_DBUS_PROXY_FLAGS_NONE = 0,
    1048    G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES = (1<<0),
    1049    G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS = (1<<1),
    1050    G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = (1<<2),
    1051    G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = (1<<3),
    1052    G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION = (1<<4),
    1053    G_DBUS_PROXY_FLAGS_NO_MATCH_RULE GIO_AVAILABLE_ENUMERATOR_IN_2_72 = (1<<5)
    1054  } GDBusProxyFlags;
    1055  
    1056  /**
    1057   * GDBusError:
    1058   * @G_DBUS_ERROR_FAILED:
    1059   * A generic error; "something went wrong" - see the error message for
    1060   * more.
    1061   * @G_DBUS_ERROR_NO_MEMORY:
    1062   * There was not enough memory to complete an operation.
    1063   * @G_DBUS_ERROR_SERVICE_UNKNOWN:
    1064   * The bus doesn't know how to launch a service to supply the bus name
    1065   * you wanted.
    1066   * @G_DBUS_ERROR_NAME_HAS_NO_OWNER:
    1067   * The bus name you referenced doesn't exist (i.e. no application owns
    1068   * it).
    1069   * @G_DBUS_ERROR_NO_REPLY:
    1070   * No reply to a message expecting one, usually means a timeout occurred.
    1071   * @G_DBUS_ERROR_IO_ERROR:
    1072   * Something went wrong reading or writing to a socket, for example.
    1073   * @G_DBUS_ERROR_BAD_ADDRESS:
    1074   * A D-Bus bus address was malformed.
    1075   * @G_DBUS_ERROR_NOT_SUPPORTED:
    1076   * Requested operation isn't supported (like ENOSYS on UNIX).
    1077   * @G_DBUS_ERROR_LIMITS_EXCEEDED:
    1078   * Some limited resource is exhausted.
    1079   * @G_DBUS_ERROR_ACCESS_DENIED:
    1080   * Security restrictions don't allow doing what you're trying to do.
    1081   * @G_DBUS_ERROR_AUTH_FAILED:
    1082   * Authentication didn't work.
    1083   * @G_DBUS_ERROR_NO_SERVER:
    1084   * Unable to connect to server (probably caused by ECONNREFUSED on a
    1085   * socket).
    1086   * @G_DBUS_ERROR_TIMEOUT:
    1087   * Certain timeout errors, possibly ETIMEDOUT on a socket.  Note that
    1088   * %G_DBUS_ERROR_NO_REPLY is used for message reply timeouts. Warning:
    1089   * this is confusingly-named given that %G_DBUS_ERROR_TIMED_OUT also
    1090   * exists. We can't fix it for compatibility reasons so just be
    1091   * careful.
    1092   * @G_DBUS_ERROR_NO_NETWORK:
    1093   * No network access (probably ENETUNREACH on a socket).
    1094   * @G_DBUS_ERROR_ADDRESS_IN_USE:
    1095   * Can't bind a socket since its address is in use (i.e. EADDRINUSE).
    1096   * @G_DBUS_ERROR_DISCONNECTED:
    1097   * The connection is disconnected and you're trying to use it.
    1098   * @G_DBUS_ERROR_INVALID_ARGS:
    1099   * Invalid arguments passed to a method call.
    1100   * @G_DBUS_ERROR_FILE_NOT_FOUND:
    1101   * Missing file.
    1102   * @G_DBUS_ERROR_FILE_EXISTS:
    1103   * Existing file and the operation you're using does not silently overwrite.
    1104   * @G_DBUS_ERROR_UNKNOWN_METHOD:
    1105   * Method name you invoked isn't known by the object you invoked it on.
    1106   * @G_DBUS_ERROR_UNKNOWN_OBJECT:
    1107   * Object you invoked a method on isn't known. Since 2.42
    1108   * @G_DBUS_ERROR_UNKNOWN_INTERFACE:
    1109   * Interface you invoked a method on isn't known by the object. Since 2.42
    1110   * @G_DBUS_ERROR_UNKNOWN_PROPERTY:
    1111   * Property you tried to access isn't known by the object. Since 2.42
    1112   * @G_DBUS_ERROR_PROPERTY_READ_ONLY:
    1113   * Property you tried to set is read-only. Since 2.42
    1114   * @G_DBUS_ERROR_TIMED_OUT:
    1115   * Certain timeout errors, e.g. while starting a service. Warning: this is
    1116   * confusingly-named given that %G_DBUS_ERROR_TIMEOUT also exists. We
    1117   * can't fix it for compatibility reasons so just be careful.
    1118   * @G_DBUS_ERROR_MATCH_RULE_NOT_FOUND:
    1119   * Tried to remove or modify a match rule that didn't exist.
    1120   * @G_DBUS_ERROR_MATCH_RULE_INVALID:
    1121   * The match rule isn't syntactically valid.
    1122   * @G_DBUS_ERROR_SPAWN_EXEC_FAILED:
    1123   * While starting a new process, the exec() call failed.
    1124   * @G_DBUS_ERROR_SPAWN_FORK_FAILED:
    1125   * While starting a new process, the fork() call failed.
    1126   * @G_DBUS_ERROR_SPAWN_CHILD_EXITED:
    1127   * While starting a new process, the child exited with a status code.
    1128   * @G_DBUS_ERROR_SPAWN_CHILD_SIGNALED:
    1129   * While starting a new process, the child exited on a signal.
    1130   * @G_DBUS_ERROR_SPAWN_FAILED:
    1131   * While starting a new process, something went wrong.
    1132   * @G_DBUS_ERROR_SPAWN_SETUP_FAILED:
    1133   * We failed to setup the environment correctly.
    1134   * @G_DBUS_ERROR_SPAWN_CONFIG_INVALID:
    1135   * We failed to setup the config parser correctly.
    1136   * @G_DBUS_ERROR_SPAWN_SERVICE_INVALID:
    1137   * Bus name was not valid.
    1138   * @G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND:
    1139   * Service file not found in system-services directory.
    1140   * @G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID:
    1141   * Permissions are incorrect on the setuid helper.
    1142   * @G_DBUS_ERROR_SPAWN_FILE_INVALID:
    1143   * Service file invalid (Name, User or Exec missing).
    1144   * @G_DBUS_ERROR_SPAWN_NO_MEMORY:
    1145   * Tried to get a UNIX process ID and it wasn't available.
    1146   * @G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN:
    1147   * Tried to get a UNIX process ID and it wasn't available.
    1148   * @G_DBUS_ERROR_INVALID_SIGNATURE:
    1149   * A type signature is not valid.
    1150   * @G_DBUS_ERROR_INVALID_FILE_CONTENT:
    1151   * A file contains invalid syntax or is otherwise broken.
    1152   * @G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN:
    1153   * Asked for SELinux security context and it wasn't available.
    1154   * @G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN:
    1155   * Asked for ADT audit data and it wasn't available.
    1156   * @G_DBUS_ERROR_OBJECT_PATH_IN_USE:
    1157   * There's already an object with the requested object path.
    1158   *
    1159   * Error codes for the %G_DBUS_ERROR error domain.
    1160   *
    1161   * Since: 2.26
    1162   */
    1163  typedef enum
    1164  {
    1165    /* Well-known errors in the org.freedesktop.DBus.Error namespace */
    1166    G_DBUS_ERROR_FAILED,                           /* org.freedesktop.DBus.Error.Failed */
    1167    G_DBUS_ERROR_NO_MEMORY,                        /* org.freedesktop.DBus.Error.NoMemory */
    1168    G_DBUS_ERROR_SERVICE_UNKNOWN,                  /* org.freedesktop.DBus.Error.ServiceUnknown */
    1169    G_DBUS_ERROR_NAME_HAS_NO_OWNER,                /* org.freedesktop.DBus.Error.NameHasNoOwner */
    1170    G_DBUS_ERROR_NO_REPLY,                         /* org.freedesktop.DBus.Error.NoReply */
    1171    G_DBUS_ERROR_IO_ERROR,                         /* org.freedesktop.DBus.Error.IOError */
    1172    G_DBUS_ERROR_BAD_ADDRESS,                      /* org.freedesktop.DBus.Error.BadAddress */
    1173    G_DBUS_ERROR_NOT_SUPPORTED,                    /* org.freedesktop.DBus.Error.NotSupported */
    1174    G_DBUS_ERROR_LIMITS_EXCEEDED,                  /* org.freedesktop.DBus.Error.LimitsExceeded */
    1175    G_DBUS_ERROR_ACCESS_DENIED,                    /* org.freedesktop.DBus.Error.AccessDenied */
    1176    G_DBUS_ERROR_AUTH_FAILED,                      /* org.freedesktop.DBus.Error.AuthFailed */
    1177    G_DBUS_ERROR_NO_SERVER,                        /* org.freedesktop.DBus.Error.NoServer */
    1178    G_DBUS_ERROR_TIMEOUT,                          /* org.freedesktop.DBus.Error.Timeout */
    1179    G_DBUS_ERROR_NO_NETWORK,                       /* org.freedesktop.DBus.Error.NoNetwork */
    1180    G_DBUS_ERROR_ADDRESS_IN_USE,                   /* org.freedesktop.DBus.Error.AddressInUse */
    1181    G_DBUS_ERROR_DISCONNECTED,                     /* org.freedesktop.DBus.Error.Disconnected */
    1182    G_DBUS_ERROR_INVALID_ARGS,                     /* org.freedesktop.DBus.Error.InvalidArgs */
    1183    G_DBUS_ERROR_FILE_NOT_FOUND,                   /* org.freedesktop.DBus.Error.FileNotFound */
    1184    G_DBUS_ERROR_FILE_EXISTS,                      /* org.freedesktop.DBus.Error.FileExists */
    1185    G_DBUS_ERROR_UNKNOWN_METHOD,                   /* org.freedesktop.DBus.Error.UnknownMethod */
    1186    G_DBUS_ERROR_TIMED_OUT,                        /* org.freedesktop.DBus.Error.TimedOut */
    1187    G_DBUS_ERROR_MATCH_RULE_NOT_FOUND,             /* org.freedesktop.DBus.Error.MatchRuleNotFound */
    1188    G_DBUS_ERROR_MATCH_RULE_INVALID,               /* org.freedesktop.DBus.Error.MatchRuleInvalid */
    1189    G_DBUS_ERROR_SPAWN_EXEC_FAILED,                /* org.freedesktop.DBus.Error.Spawn.ExecFailed */
    1190    G_DBUS_ERROR_SPAWN_FORK_FAILED,                /* org.freedesktop.DBus.Error.Spawn.ForkFailed */
    1191    G_DBUS_ERROR_SPAWN_CHILD_EXITED,               /* org.freedesktop.DBus.Error.Spawn.ChildExited */
    1192    G_DBUS_ERROR_SPAWN_CHILD_SIGNALED,             /* org.freedesktop.DBus.Error.Spawn.ChildSignaled */
    1193    G_DBUS_ERROR_SPAWN_FAILED,                     /* org.freedesktop.DBus.Error.Spawn.Failed */
    1194    G_DBUS_ERROR_SPAWN_SETUP_FAILED,               /* org.freedesktop.DBus.Error.Spawn.FailedToSetup */
    1195    G_DBUS_ERROR_SPAWN_CONFIG_INVALID,             /* org.freedesktop.DBus.Error.Spawn.ConfigInvalid */
    1196    G_DBUS_ERROR_SPAWN_SERVICE_INVALID,            /* org.freedesktop.DBus.Error.Spawn.ServiceNotValid */
    1197    G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND,          /* org.freedesktop.DBus.Error.Spawn.ServiceNotFound */
    1198    G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID,        /* org.freedesktop.DBus.Error.Spawn.PermissionsInvalid */
    1199    G_DBUS_ERROR_SPAWN_FILE_INVALID,               /* org.freedesktop.DBus.Error.Spawn.FileInvalid */
    1200    G_DBUS_ERROR_SPAWN_NO_MEMORY,                  /* org.freedesktop.DBus.Error.Spawn.NoMemory */
    1201    G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN,          /* org.freedesktop.DBus.Error.UnixProcessIdUnknown */
    1202    G_DBUS_ERROR_INVALID_SIGNATURE,                /* org.freedesktop.DBus.Error.InvalidSignature */
    1203    G_DBUS_ERROR_INVALID_FILE_CONTENT,             /* org.freedesktop.DBus.Error.InvalidFileContent */
    1204    G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN, /* org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown */
    1205    G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN,           /* org.freedesktop.DBus.Error.AdtAuditDataUnknown */
    1206    G_DBUS_ERROR_OBJECT_PATH_IN_USE,               /* org.freedesktop.DBus.Error.ObjectPathInUse */
    1207    G_DBUS_ERROR_UNKNOWN_OBJECT,                   /* org.freedesktop.DBus.Error.UnknownObject */
    1208    G_DBUS_ERROR_UNKNOWN_INTERFACE,                /* org.freedesktop.DBus.Error.UnknownInterface */
    1209    G_DBUS_ERROR_UNKNOWN_PROPERTY,                 /* org.freedesktop.DBus.Error.UnknownProperty */
    1210    G_DBUS_ERROR_PROPERTY_READ_ONLY                /* org.freedesktop.DBus.Error.PropertyReadOnly */
    1211  } GDBusError;
    1212  /* Remember to update g_dbus_error_quark() in gdbuserror.c if you extend this enumeration */
    1213  
    1214  /**
    1215   * GDBusConnectionFlags:
    1216   * @G_DBUS_CONNECTION_FLAGS_NONE: No flags set.
    1217   * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT: Perform authentication against server.
    1218   * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER: Perform authentication against client.
    1219   * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS: When
    1220   * authenticating as a server, allow the anonymous authentication
    1221   * method.
    1222   * @G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION: Pass this flag if connecting to a peer that is a
    1223   * message bus. This means that the Hello() method will be invoked as part of the connection setup.
    1224   * @G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING: If set, processing of D-Bus messages is
    1225   * delayed until g_dbus_connection_start_message_processing() is called.
    1226   * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER: When authenticating
    1227   * as a server, require the UID of the peer to be the same as the UID of the server. (Since: 2.68)
    1228   * @G_DBUS_CONNECTION_FLAGS_CROSS_NAMESPACE: When authenticating, try to use
    1229   *  protocols that work across a Linux user namespace boundary, even if this
    1230   *  reduces interoperability with older D-Bus implementations. This currently
    1231   *  affects client-side `EXTERNAL` authentication, for which this flag makes
    1232   *  connections to a server in another user namespace succeed, but causes
    1233   *  a deadlock when connecting to a GDBus server older than 2.73.3. Since: 2.74
    1234   *
    1235   * Flags used when creating a new #GDBusConnection.
    1236   *
    1237   * Since: 2.26
    1238   */
    1239  typedef enum {
    1240    G_DBUS_CONNECTION_FLAGS_NONE = 0,
    1241    G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT = (1<<0),
    1242    G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER = (1<<1),
    1243    G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<2),
    1244    G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION = (1<<3),
    1245    G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING = (1<<4),
    1246    G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GIO_AVAILABLE_ENUMERATOR_IN_2_68 = (1<<5),
    1247    G_DBUS_CONNECTION_FLAGS_CROSS_NAMESPACE GIO_AVAILABLE_ENUMERATOR_IN_2_74 = (1<<6)
    1248  } GDBusConnectionFlags;
    1249  
    1250  /**
    1251   * GDBusCapabilityFlags:
    1252   * @G_DBUS_CAPABILITY_FLAGS_NONE: No flags set.
    1253   * @G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING: The connection
    1254   * supports exchanging UNIX file descriptors with the remote peer.
    1255   *
    1256   * Capabilities negotiated with the remote peer.
    1257   *
    1258   * Since: 2.26
    1259   */
    1260  typedef enum {
    1261    G_DBUS_CAPABILITY_FLAGS_NONE = 0,
    1262    G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING = (1<<0)
    1263  } GDBusCapabilityFlags;
    1264  
    1265  /**
    1266   * GDBusCallFlags:
    1267   * @G_DBUS_CALL_FLAGS_NONE: No flags set.
    1268   * @G_DBUS_CALL_FLAGS_NO_AUTO_START: The bus must not launch
    1269   * an owner for the destination name in response to this method
    1270   * invocation.
    1271   * @G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION: the caller is prepared to
    1272   * wait for interactive authorization. Since 2.46.
    1273   *
    1274   * Flags used in g_dbus_connection_call() and similar APIs.
    1275   *
    1276   * Since: 2.26
    1277   */
    1278  typedef enum {
    1279    G_DBUS_CALL_FLAGS_NONE = 0,
    1280    G_DBUS_CALL_FLAGS_NO_AUTO_START = (1<<0),
    1281    G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION = (1<<1)
    1282  } GDBusCallFlags;
    1283  /* (1<<31) is reserved for internal use by GDBusConnection, do not use it. */
    1284  
    1285  /**
    1286   * GDBusMessageType:
    1287   * @G_DBUS_MESSAGE_TYPE_INVALID: Message is of invalid type.
    1288   * @G_DBUS_MESSAGE_TYPE_METHOD_CALL: Method call.
    1289   * @G_DBUS_MESSAGE_TYPE_METHOD_RETURN: Method reply.
    1290   * @G_DBUS_MESSAGE_TYPE_ERROR: Error reply.
    1291   * @G_DBUS_MESSAGE_TYPE_SIGNAL: Signal emission.
    1292   *
    1293   * Message types used in #GDBusMessage.
    1294   *
    1295   * Since: 2.26
    1296   */
    1297  typedef enum {
    1298    G_DBUS_MESSAGE_TYPE_INVALID,
    1299    G_DBUS_MESSAGE_TYPE_METHOD_CALL,
    1300    G_DBUS_MESSAGE_TYPE_METHOD_RETURN,
    1301    G_DBUS_MESSAGE_TYPE_ERROR,
    1302    G_DBUS_MESSAGE_TYPE_SIGNAL
    1303  } GDBusMessageType;
    1304  
    1305  /**
    1306   * GDBusMessageFlags:
    1307   * @G_DBUS_MESSAGE_FLAGS_NONE: No flags set.
    1308   * @G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED: A reply is not expected.
    1309   * @G_DBUS_MESSAGE_FLAGS_NO_AUTO_START: The bus must not launch an
    1310   * owner for the destination name in response to this message.
    1311   * @G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION: If set on a method
    1312   * call, this flag means that the caller is prepared to wait for interactive
    1313   * authorization. Since 2.46.
    1314   *
    1315   * Message flags used in #GDBusMessage.
    1316   *
    1317   * Since: 2.26
    1318   */
    1319  typedef enum {
    1320    G_DBUS_MESSAGE_FLAGS_NONE = 0,
    1321    G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED = (1<<0),
    1322    G_DBUS_MESSAGE_FLAGS_NO_AUTO_START = (1<<1),
    1323    G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION = (1<<2)
    1324  } GDBusMessageFlags;
    1325  
    1326  /**
    1327   * GDBusMessageHeaderField:
    1328   * @G_DBUS_MESSAGE_HEADER_FIELD_INVALID: Not a valid header field.
    1329   * @G_DBUS_MESSAGE_HEADER_FIELD_PATH: The object path.
    1330   * @G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE: The interface name.
    1331   * @G_DBUS_MESSAGE_HEADER_FIELD_MEMBER: The method or signal name.
    1332   * @G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME: The name of the error that occurred.
    1333   * @G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL: The serial number the message is a reply to.
    1334   * @G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION: The name the message is intended for.
    1335   * @G_DBUS_MESSAGE_HEADER_FIELD_SENDER: Unique name of the sender of the message (filled in by the bus).
    1336   * @G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE: The signature of the message body.
    1337   * @G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS: The number of UNIX file descriptors that accompany the message.
    1338   *
    1339   * Header fields used in #GDBusMessage.
    1340   *
    1341   * Since: 2.26
    1342   */
    1343  typedef enum {
    1344    G_DBUS_MESSAGE_HEADER_FIELD_INVALID,
    1345    G_DBUS_MESSAGE_HEADER_FIELD_PATH,
    1346    G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE,
    1347    G_DBUS_MESSAGE_HEADER_FIELD_MEMBER,
    1348    G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME,
    1349    G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL,
    1350    G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION,
    1351    G_DBUS_MESSAGE_HEADER_FIELD_SENDER,
    1352    G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE,
    1353    G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS
    1354  } GDBusMessageHeaderField;
    1355  
    1356  /**
    1357   * GDBusPropertyInfoFlags:
    1358   * @G_DBUS_PROPERTY_INFO_FLAGS_NONE: No flags set.
    1359   * @G_DBUS_PROPERTY_INFO_FLAGS_READABLE: Property is readable.
    1360   * @G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE: Property is writable.
    1361   *
    1362   * Flags describing the access control of a D-Bus property.
    1363   *
    1364   * Since: 2.26
    1365   */
    1366  typedef enum
    1367  {
    1368    G_DBUS_PROPERTY_INFO_FLAGS_NONE = 0,
    1369    G_DBUS_PROPERTY_INFO_FLAGS_READABLE = (1<<0),
    1370    G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE = (1<<1)
    1371  } GDBusPropertyInfoFlags;
    1372  
    1373  /**
    1374   * GDBusSubtreeFlags:
    1375   * @G_DBUS_SUBTREE_FLAGS_NONE: No flags set.
    1376   * @G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES: Method calls to objects not in the enumerated range
    1377   *                                                       will still be dispatched. This is useful if you want
    1378   *                                                       to dynamically spawn objects in the subtree.
    1379   *
    1380   * Flags passed to g_dbus_connection_register_subtree().
    1381   *
    1382   * Since: 2.26
    1383   */
    1384  typedef enum
    1385  {
    1386    G_DBUS_SUBTREE_FLAGS_NONE = 0,
    1387    G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES = (1<<0)
    1388  } GDBusSubtreeFlags;
    1389  
    1390  /**
    1391   * GDBusServerFlags:
    1392   * @G_DBUS_SERVER_FLAGS_NONE: No flags set.
    1393   * @G_DBUS_SERVER_FLAGS_RUN_IN_THREAD: All #GDBusServer::new-connection
    1394   * signals will run in separated dedicated threads (see signal for
    1395   * details).
    1396   * @G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS: Allow the anonymous
    1397   * authentication method.
    1398   * @G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER: Require the UID of the
    1399   * peer to be the same as the UID of the server when authenticating. (Since: 2.68)
    1400   *
    1401   * Flags used when creating a #GDBusServer.
    1402   *
    1403   * Since: 2.26
    1404   */
    1405  typedef enum
    1406  {
    1407    G_DBUS_SERVER_FLAGS_NONE = 0,
    1408    G_DBUS_SERVER_FLAGS_RUN_IN_THREAD = (1<<0),
    1409    G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<1),
    1410    G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GIO_AVAILABLE_ENUMERATOR_IN_2_68 = (1<<2)
    1411  } GDBusServerFlags;
    1412  
    1413  /**
    1414   * GDBusSignalFlags:
    1415   * @G_DBUS_SIGNAL_FLAGS_NONE: No flags set.
    1416   * @G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE: Don't actually send the AddMatch
    1417   * D-Bus call for this signal subscription.  This gives you more control
    1418   * over which match rules you add (but you must add them manually).
    1419   * @G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE: Match first arguments that
    1420   * contain a bus or interface name with the given namespace.
    1421   * @G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH: Match first arguments that
    1422   * contain an object path that is either equivalent to the given path,
    1423   * or one of the paths is a subpath of the other.
    1424   *
    1425   * Flags used when subscribing to signals via g_dbus_connection_signal_subscribe().
    1426   *
    1427   * Since: 2.26
    1428   */
    1429  typedef enum /*< flags >*/
    1430  {
    1431    G_DBUS_SIGNAL_FLAGS_NONE = 0,
    1432    G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE = (1<<0),
    1433    G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE = (1<<1),
    1434    G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH = (1<<2)
    1435  } GDBusSignalFlags;
    1436  
    1437  /**
    1438   * GDBusSendMessageFlags:
    1439   * @G_DBUS_SEND_MESSAGE_FLAGS_NONE: No flags set.
    1440   * @G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL: Do not automatically
    1441   * assign a serial number from the #GDBusConnection object when
    1442   * sending a message.
    1443   *
    1444   * Flags used when sending #GDBusMessages on a #GDBusConnection.
    1445   *
    1446   * Since: 2.26
    1447   */
    1448  typedef enum
    1449  {
    1450    G_DBUS_SEND_MESSAGE_FLAGS_NONE = 0,
    1451    G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL = (1<<0)
    1452  } GDBusSendMessageFlags;
    1453  /* (1<<31) is reserved for internal use by GDBusConnection, do not use it. */
    1454  
    1455  /**
    1456   * GCredentialsType:
    1457   * @G_CREDENTIALS_TYPE_INVALID: Indicates an invalid native credential type.
    1458   * @G_CREDENTIALS_TYPE_LINUX_UCRED: The native credentials type is a `struct ucred`.
    1459   * @G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED: The native credentials type is a `struct cmsgcred`.
    1460   * @G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED: The native credentials type is a `struct sockpeercred`. Added in 2.30.
    1461   * @G_CREDENTIALS_TYPE_SOLARIS_UCRED: The native credentials type is a `ucred_t`. Added in 2.40.
    1462   * @G_CREDENTIALS_TYPE_NETBSD_UNPCBID: The native credentials type is a `struct unpcbid`. Added in 2.42.
    1463   * @G_CREDENTIALS_TYPE_APPLE_XUCRED: The native credentials type is a `struct xucred`. Added in 2.66.
    1464   * @G_CREDENTIALS_TYPE_WIN32_PID: The native credentials type is a PID `DWORD`. Added in 2.72.
    1465   *
    1466   * Enumeration describing different kinds of native credential types.
    1467   *
    1468   * Since: 2.26
    1469   */
    1470  typedef enum
    1471  {
    1472    G_CREDENTIALS_TYPE_INVALID,
    1473    G_CREDENTIALS_TYPE_LINUX_UCRED,
    1474    G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED,
    1475    G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED,
    1476    G_CREDENTIALS_TYPE_SOLARIS_UCRED,
    1477    G_CREDENTIALS_TYPE_NETBSD_UNPCBID,
    1478    G_CREDENTIALS_TYPE_APPLE_XUCRED,
    1479    G_CREDENTIALS_TYPE_WIN32_PID,
    1480  } GCredentialsType;
    1481  
    1482  /**
    1483   * GDBusMessageByteOrder:
    1484   * @G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN: The byte order is big endian.
    1485   * @G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN: The byte order is little endian.
    1486   *
    1487   * Enumeration used to describe the byte order of a D-Bus message.
    1488   *
    1489   * Since: 2.26
    1490   */
    1491  typedef enum
    1492  {
    1493    G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN    = 'B',
    1494    G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN = 'l'
    1495  } GDBusMessageByteOrder;
    1496  
    1497  /**
    1498   * GApplicationFlags:
    1499   * @G_APPLICATION_FLAGS_NONE: Default. Deprecated in 2.74, use
    1500   *   %G_APPLICATION_DEFAULT_FLAGS instead
    1501   * @G_APPLICATION_DEFAULT_FLAGS: Default flags. Since: 2.74
    1502   * @G_APPLICATION_IS_SERVICE: Run as a service. In this mode, registration
    1503   *      fails if the service is already running, and the application
    1504   *      will initially wait up to 10 seconds for an initial activation
    1505   *      message to arrive.
    1506   * @G_APPLICATION_IS_LAUNCHER: Don't try to become the primary instance.
    1507   * @G_APPLICATION_HANDLES_OPEN: This application handles opening files (in
    1508   *     the primary instance). Note that this flag only affects the default
    1509   *     implementation of local_command_line(), and has no effect if
    1510   *     %G_APPLICATION_HANDLES_COMMAND_LINE is given.
    1511   *     See g_application_run() for details.
    1512   * @G_APPLICATION_HANDLES_COMMAND_LINE: This application handles command line
    1513   *     arguments (in the primary instance). Note that this flag only affect
    1514   *     the default implementation of local_command_line().
    1515   *     See g_application_run() for details.
    1516   * @G_APPLICATION_SEND_ENVIRONMENT: Send the environment of the
    1517   *     launching process to the primary instance. Set this flag if your
    1518   *     application is expected to behave differently depending on certain
    1519   *     environment variables. For instance, an editor might be expected
    1520   *     to use the `GIT_COMMITTER_NAME` environment variable
    1521   *     when editing a git commit message. The environment is available
    1522   *     to the #GApplication::command-line signal handler, via
    1523   *     g_application_command_line_getenv().
    1524   * @G_APPLICATION_NON_UNIQUE: Make no attempts to do any of the typical
    1525   *     single-instance application negotiation, even if the application
    1526   *     ID is given.  The application neither attempts to become the
    1527   *     owner of the application ID nor does it check if an existing
    1528   *     owner already exists.  Everything occurs in the local process.
    1529   *     Since: 2.30.
    1530   * @G_APPLICATION_CAN_OVERRIDE_APP_ID: Allow users to override the
    1531   *     application ID from the command line with `--gapplication-app-id`.
    1532   *     Since: 2.48
    1533   * @G_APPLICATION_ALLOW_REPLACEMENT: Allow another instance to take over
    1534   *     the bus name. Since: 2.60
    1535   * @G_APPLICATION_REPLACE: Take over from another instance. This flag is
    1536   *     usually set by passing `--gapplication-replace` on the commandline.
    1537   *     Since: 2.60
    1538   *
    1539   * Flags used to define the behaviour of a #GApplication.
    1540   *
    1541   * Since: 2.28
    1542   **/
    1543  typedef enum /*< prefix=G_APPLICATION >*/
    1544  {
    1545    G_APPLICATION_FLAGS_NONE GIO_DEPRECATED_ENUMERATOR_IN_2_74_FOR(G_APPLICATION_DEFAULT_FLAGS),
    1546    G_APPLICATION_DEFAULT_FLAGS GIO_AVAILABLE_ENUMERATOR_IN_2_74 = 0,
    1547    G_APPLICATION_IS_SERVICE  =          (1 << 0),
    1548    G_APPLICATION_IS_LAUNCHER =          (1 << 1),
    1549  
    1550    G_APPLICATION_HANDLES_OPEN =         (1 << 2),
    1551    G_APPLICATION_HANDLES_COMMAND_LINE = (1 << 3),
    1552    G_APPLICATION_SEND_ENVIRONMENT    =  (1 << 4),
    1553  
    1554    G_APPLICATION_NON_UNIQUE =           (1 << 5),
    1555  
    1556    G_APPLICATION_CAN_OVERRIDE_APP_ID =  (1 << 6),
    1557    G_APPLICATION_ALLOW_REPLACEMENT   =  (1 << 7),
    1558    G_APPLICATION_REPLACE             =  (1 << 8)
    1559  } GApplicationFlags;
    1560  
    1561  /**
    1562   * GTlsError:
    1563   * @G_TLS_ERROR_UNAVAILABLE: No TLS provider is available
    1564   * @G_TLS_ERROR_MISC: Miscellaneous TLS error
    1565   * @G_TLS_ERROR_BAD_CERTIFICATE: The certificate presented could not
    1566   *   be parsed or failed validation.
    1567   * @G_TLS_ERROR_NOT_TLS: The TLS handshake failed because the
    1568   *   peer does not seem to be a TLS server.
    1569   * @G_TLS_ERROR_HANDSHAKE: The TLS handshake failed because the
    1570   *   peer's certificate was not acceptable.
    1571   * @G_TLS_ERROR_CERTIFICATE_REQUIRED: The TLS handshake failed because
    1572   *   the server requested a client-side certificate, but none was
    1573   *   provided. See g_tls_connection_set_certificate().
    1574   * @G_TLS_ERROR_EOF: The TLS connection was closed without proper
    1575   *   notice, which may indicate an attack. See
    1576   *   g_tls_connection_set_require_close_notify().
    1577   * @G_TLS_ERROR_INAPPROPRIATE_FALLBACK: The TLS handshake failed
    1578   *   because the client sent the fallback SCSV, indicating a protocol
    1579   *   downgrade attack. Since: 2.60
    1580   * @G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD: The certificate failed
    1581   *   to load because a password was incorrect. Since: 2.72
    1582   *
    1583   * An error code used with %G_TLS_ERROR in a #GError returned from a
    1584   * TLS-related routine.
    1585   *
    1586   * Since: 2.28
    1587   */
    1588  typedef enum {
    1589    G_TLS_ERROR_UNAVAILABLE,
    1590    G_TLS_ERROR_MISC,
    1591    G_TLS_ERROR_BAD_CERTIFICATE,
    1592    G_TLS_ERROR_NOT_TLS,
    1593    G_TLS_ERROR_HANDSHAKE,
    1594    G_TLS_ERROR_CERTIFICATE_REQUIRED,
    1595    G_TLS_ERROR_EOF,
    1596    G_TLS_ERROR_INAPPROPRIATE_FALLBACK,
    1597    G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD
    1598  } GTlsError;
    1599  
    1600  /**
    1601   * GTlsCertificateFlags:
    1602   * @G_TLS_CERTIFICATE_NO_FLAGS: No flags set. Since: 2.74
    1603   * @G_TLS_CERTIFICATE_UNKNOWN_CA: The signing certificate authority is
    1604   *   not known.
    1605   * @G_TLS_CERTIFICATE_BAD_IDENTITY: The certificate does not match the
    1606   *   expected identity of the site that it was retrieved from.
    1607   * @G_TLS_CERTIFICATE_NOT_ACTIVATED: The certificate's activation time
    1608   *   is still in the future
    1609   * @G_TLS_CERTIFICATE_EXPIRED: The certificate has expired
    1610   * @G_TLS_CERTIFICATE_REVOKED: The certificate has been revoked
    1611   *   according to the #GTlsConnection's certificate revocation list.
    1612   * @G_TLS_CERTIFICATE_INSECURE: The certificate's algorithm is
    1613   *   considered insecure.
    1614   * @G_TLS_CERTIFICATE_GENERIC_ERROR: Some other error occurred validating
    1615   *   the certificate
    1616   * @G_TLS_CERTIFICATE_VALIDATE_ALL: the combination of all of the above
    1617   *   flags
    1618   *
    1619   * A set of flags describing TLS certification validation. This can be
    1620   * used to describe why a particular certificate was rejected (for
    1621   * example, in #GTlsConnection::accept-certificate).
    1622   *
    1623   * GLib guarantees that if certificate verification fails, at least one
    1624   * flag will be set, but it does not guarantee that all possible flags
    1625   * will be set. Accordingly, you may not safely decide to ignore any
    1626   * particular type of error. For example, it would be incorrect to mask
    1627   * %G_TLS_CERTIFICATE_EXPIRED if you want to allow expired certificates,
    1628   * because this could potentially be the only error flag set even if
    1629   * other problems exist with the certificate.
    1630   *
    1631   * Since: 2.28
    1632   */
    1633  typedef enum {
    1634    G_TLS_CERTIFICATE_NO_FLAGS GIO_AVAILABLE_ENUMERATOR_IN_2_74 = 0,
    1635    G_TLS_CERTIFICATE_UNKNOWN_CA    = (1 << 0),
    1636    G_TLS_CERTIFICATE_BAD_IDENTITY  = (1 << 1),
    1637    G_TLS_CERTIFICATE_NOT_ACTIVATED = (1 << 2),
    1638    G_TLS_CERTIFICATE_EXPIRED       = (1 << 3),
    1639    G_TLS_CERTIFICATE_REVOKED       = (1 << 4),
    1640    G_TLS_CERTIFICATE_INSECURE      = (1 << 5),
    1641    G_TLS_CERTIFICATE_GENERIC_ERROR = (1 << 6),
    1642  
    1643    G_TLS_CERTIFICATE_VALIDATE_ALL  = 0x007f
    1644  } GTlsCertificateFlags;
    1645  
    1646  /**
    1647   * GTlsAuthenticationMode:
    1648   * @G_TLS_AUTHENTICATION_NONE: client authentication not required
    1649   * @G_TLS_AUTHENTICATION_REQUESTED: client authentication is requested
    1650   * @G_TLS_AUTHENTICATION_REQUIRED: client authentication is required
    1651   *
    1652   * The client authentication mode for a #GTlsServerConnection.
    1653   *
    1654   * Since: 2.28
    1655   */
    1656  typedef enum {
    1657    G_TLS_AUTHENTICATION_NONE,
    1658    G_TLS_AUTHENTICATION_REQUESTED,
    1659    G_TLS_AUTHENTICATION_REQUIRED
    1660  } GTlsAuthenticationMode;
    1661  
    1662  /**
    1663   * GTlsChannelBindingType:
    1664   * @G_TLS_CHANNEL_BINDING_TLS_UNIQUE:
    1665   *    [`tls-unique`](https://tools.ietf.org/html/rfc5929#section-3) binding
    1666   *    type
    1667   * @G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT:
    1668   *    [`tls-server-end-point`](https://tools.ietf.org/html/rfc5929#section-4)
    1669   *    binding type
    1670   * @G_TLS_CHANNEL_BINDING_TLS_EXPORTER:
    1671   *    [`tls-exporter`](https://www.rfc-editor.org/rfc/rfc9266.html) binding
    1672   *    type. Since: 2.74
    1673   *
    1674   * The type of TLS channel binding data to retrieve from #GTlsConnection
    1675   * or #GDtlsConnection, as documented by RFC 5929 or RFC 9266. The
    1676   * [`tls-unique-for-telnet`](https://tools.ietf.org/html/rfc5929#section-5)
    1677   * binding type is not currently implemented.
    1678   *
    1679   * Since: 2.66
    1680   */
    1681  GIO_AVAILABLE_TYPE_IN_2_66
    1682  typedef enum {
    1683    G_TLS_CHANNEL_BINDING_TLS_UNIQUE,
    1684    G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT,
    1685    G_TLS_CHANNEL_BINDING_TLS_EXPORTER GIO_AVAILABLE_ENUMERATOR_IN_2_74,
    1686  } GTlsChannelBindingType;
    1687  
    1688  /**
    1689   * GTlsChannelBindingError:
    1690   * @G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED: Either entire binding
    1691   *    retrieval facility or specific binding type is not implemented in the
    1692   *    TLS backend.
    1693   * @G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE: The handshake is not yet
    1694   *    complete on the connection which is a strong requirement for any existing
    1695   *    binding type.
    1696   * @G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE: Handshake is complete but
    1697   *    binding data is not available. That normally indicates the TLS
    1698   *    implementation failed to provide the binding data. For example, some
    1699   *    implementations do not provide a peer certificate for resumed connections.
    1700   * @G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED: Binding type is not supported
    1701   *    on the current connection. This error could be triggered when requesting
    1702   *    `tls-server-end-point` binding data for a certificate which has no hash
    1703   *    function or uses multiple hash functions.
    1704   * @G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR: Any other backend error
    1705   *    preventing binding data retrieval.
    1706   *
    1707   * An error code used with %G_TLS_CHANNEL_BINDING_ERROR in a #GError to
    1708   * indicate a TLS channel binding retrieval error.
    1709   *
    1710   * Since: 2.66
    1711   */
    1712  GIO_AVAILABLE_TYPE_IN_2_66
    1713  typedef enum {
    1714    G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED,
    1715    G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE,
    1716    G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE,
    1717    G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED,
    1718    G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR
    1719  } GTlsChannelBindingError;
    1720  
    1721  /**
    1722   * GTlsRehandshakeMode:
    1723   * @G_TLS_REHANDSHAKE_NEVER: Never allow rehandshaking
    1724   * @G_TLS_REHANDSHAKE_SAFELY: Allow safe rehandshaking only
    1725   * @G_TLS_REHANDSHAKE_UNSAFELY: Allow unsafe rehandshaking
    1726   *
    1727   * When to allow rehandshaking. See
    1728   * g_tls_connection_set_rehandshake_mode().
    1729   *
    1730   * Since: 2.28
    1731   *
    1732   * Deprecated: 2.60. Changing the rehandshake mode is no longer
    1733   *   required for compatibility. Also, rehandshaking has been removed
    1734   *   from the TLS protocol in TLS 1.3.
    1735   */
    1736  typedef enum {
    1737    G_TLS_REHANDSHAKE_NEVER,
    1738    G_TLS_REHANDSHAKE_SAFELY,
    1739    G_TLS_REHANDSHAKE_UNSAFELY
    1740  } GTlsRehandshakeMode GIO_DEPRECATED_TYPE_IN_2_60;
    1741  
    1742  /**
    1743   * GTlsPasswordFlags:
    1744   * @G_TLS_PASSWORD_NONE: No flags
    1745   * @G_TLS_PASSWORD_RETRY: The password was wrong, and the user should retry.
    1746   * @G_TLS_PASSWORD_MANY_TRIES: Hint to the user that the password has been
    1747   *    wrong many times, and the user may not have many chances left.
    1748   * @G_TLS_PASSWORD_FINAL_TRY: Hint to the user that this is the last try to get
    1749   *    this password right.
    1750   * @G_TLS_PASSWORD_PKCS11_USER: For PKCS #11, the user PIN is required.
    1751   *    Since: 2.70.
    1752   * @G_TLS_PASSWORD_PKCS11_SECURITY_OFFICER: For PKCS #11, the security officer
    1753   *    PIN is required. Since: 2.70.
    1754   * @G_TLS_PASSWORD_PKCS11_CONTEXT_SPECIFIC: For PKCS #11, the context-specific
    1755   *    PIN is required. Since: 2.70.
    1756   *
    1757   * Various flags for the password.
    1758   *
    1759   * Since: 2.30
    1760   */
    1761  
    1762  typedef enum _GTlsPasswordFlags
    1763  {
    1764    G_TLS_PASSWORD_NONE = 0,
    1765    G_TLS_PASSWORD_RETRY = 1 << 1,
    1766    G_TLS_PASSWORD_MANY_TRIES = 1 << 2,
    1767    G_TLS_PASSWORD_FINAL_TRY = 1 << 3,
    1768    G_TLS_PASSWORD_PKCS11_USER = 1 << 4,
    1769    G_TLS_PASSWORD_PKCS11_SECURITY_OFFICER = 1 << 5,
    1770    G_TLS_PASSWORD_PKCS11_CONTEXT_SPECIFIC = 1 << 6
    1771  } GTlsPasswordFlags;
    1772  
    1773  /**
    1774   * GTlsInteractionResult:
    1775   * @G_TLS_INTERACTION_UNHANDLED: The interaction was unhandled (i.e. not
    1776   *     implemented).
    1777   * @G_TLS_INTERACTION_HANDLED: The interaction completed, and resulting data
    1778   *     is available.
    1779   * @G_TLS_INTERACTION_FAILED: The interaction has failed, or was cancelled.
    1780   *     and the operation should be aborted.
    1781   *
    1782   * #GTlsInteractionResult is returned by various functions in #GTlsInteraction
    1783   * when finishing an interaction request.
    1784   *
    1785   * Since: 2.30
    1786   */
    1787  typedef enum {
    1788    G_TLS_INTERACTION_UNHANDLED,
    1789    G_TLS_INTERACTION_HANDLED,
    1790    G_TLS_INTERACTION_FAILED
    1791  } GTlsInteractionResult;
    1792  
    1793  /**
    1794   * GDBusInterfaceSkeletonFlags:
    1795   * @G_DBUS_INTERFACE_SKELETON_FLAGS_NONE: No flags set.
    1796   * @G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD: Each method invocation is handled in
    1797   *   a thread dedicated to the invocation. This means that the method implementation can use blocking IO
    1798   *   without blocking any other part of the process. It also means that the method implementation must
    1799   *   use locking to access data structures used by other threads.
    1800   *
    1801   * Flags describing the behavior of a #GDBusInterfaceSkeleton instance.
    1802   *
    1803   * Since: 2.30
    1804   */
    1805  typedef enum
    1806  {
    1807    G_DBUS_INTERFACE_SKELETON_FLAGS_NONE = 0,
    1808    G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD = (1<<0)
    1809  } GDBusInterfaceSkeletonFlags;
    1810  
    1811  /**
    1812   * GDBusObjectManagerClientFlags:
    1813   * @G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE: No flags set.
    1814   * @G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START: If not set and the
    1815   *   manager is for a well-known name, then request the bus to launch
    1816   *   an owner for the name if no-one owns the name. This flag can only
    1817   *   be used in managers for well-known names.
    1818   *
    1819   * Flags used when constructing a #GDBusObjectManagerClient.
    1820   *
    1821   * Since: 2.30
    1822   */
    1823  typedef enum
    1824  {
    1825    G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE = 0,
    1826    G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START = (1<<0)
    1827  } GDBusObjectManagerClientFlags;
    1828  
    1829  /**
    1830   * GTlsDatabaseVerifyFlags:
    1831   * @G_TLS_DATABASE_VERIFY_NONE: No verification flags
    1832   *
    1833   * Flags for g_tls_database_verify_chain().
    1834   *
    1835   * Since: 2.30
    1836   */
    1837  typedef enum /*< flags >*/ {
    1838    G_TLS_DATABASE_VERIFY_NONE = 0
    1839  } GTlsDatabaseVerifyFlags;
    1840  
    1841  /**
    1842   * GTlsDatabaseLookupFlags:
    1843   * @G_TLS_DATABASE_LOOKUP_NONE: No lookup flags
    1844   * @G_TLS_DATABASE_LOOKUP_KEYPAIR: Restrict lookup to certificates that have
    1845   *     a private key.
    1846   *
    1847   * Flags for g_tls_database_lookup_certificate_for_handle(),
    1848   * g_tls_database_lookup_certificate_issuer(),
    1849   * and g_tls_database_lookup_certificates_issued_by().
    1850   *
    1851   * Since: 2.30
    1852   */
    1853  typedef enum {
    1854    G_TLS_DATABASE_LOOKUP_NONE = 0,
    1855    G_TLS_DATABASE_LOOKUP_KEYPAIR = 1
    1856  } GTlsDatabaseLookupFlags;
    1857  
    1858  /**
    1859   * GTlsCertificateRequestFlags:
    1860   * @G_TLS_CERTIFICATE_REQUEST_NONE: No flags
    1861   *
    1862   * Flags for g_tls_interaction_request_certificate(),
    1863   * g_tls_interaction_request_certificate_async(), and
    1864   * g_tls_interaction_invoke_request_certificate().
    1865   *
    1866   * Since: 2.40
    1867   */
    1868  typedef enum {
    1869    G_TLS_CERTIFICATE_REQUEST_NONE = 0
    1870  } GTlsCertificateRequestFlags;
    1871  
    1872  /**
    1873   * GTlsProtocolVersion:
    1874   * @G_TLS_PROTOCOL_VERSION_UNKNOWN: No protocol version or unknown protocol version
    1875   * @G_TLS_PROTOCOL_VERSION_SSL_3_0: SSL 3.0, which is insecure and should not be used
    1876   * @G_TLS_PROTOCOL_VERSION_TLS_1_0: TLS 1.0, which is insecure and should not be used
    1877   * @G_TLS_PROTOCOL_VERSION_TLS_1_1: TLS 1.1, which is insecure and should not be used
    1878   * @G_TLS_PROTOCOL_VERSION_TLS_1_2: TLS 1.2, defined by [RFC 5246](https://datatracker.ietf.org/doc/html/rfc5246)
    1879   * @G_TLS_PROTOCOL_VERSION_TLS_1_3: TLS 1.3, defined by [RFC 8446](https://datatracker.ietf.org/doc/html/rfc8446)
    1880   * @G_TLS_PROTOCOL_VERSION_DTLS_1_0: DTLS 1.0, which is insecure and should not be used
    1881   * @G_TLS_PROTOCOL_VERSION_DTLS_1_2: DTLS 1.2, defined by [RFC 6347](https://datatracker.ietf.org/doc/html/rfc6347)
    1882   *
    1883   * The TLS or DTLS protocol version used by a #GTlsConnection or
    1884   * #GDtlsConnection. The integer values of these versions are sequential
    1885   * to ensure newer known protocol versions compare greater than older
    1886   * known versions. Any known DTLS protocol version will compare greater
    1887   * than any SSL or TLS protocol version. The protocol version may be
    1888   * %G_TLS_PROTOCOL_VERSION_UNKNOWN if the TLS backend supports a newer
    1889   * protocol version that GLib does not yet know about. This means that
    1890   * it's possible for an unknown DTLS protocol version to compare less
    1891   * than the TLS protocol versions.
    1892   *
    1893   * Since: 2.70
    1894   */
    1895  typedef enum {
    1896    G_TLS_PROTOCOL_VERSION_UNKNOWN = 0,
    1897    G_TLS_PROTOCOL_VERSION_SSL_3_0 = 1,
    1898    G_TLS_PROTOCOL_VERSION_TLS_1_0 = 2,
    1899    G_TLS_PROTOCOL_VERSION_TLS_1_1 = 3,
    1900    G_TLS_PROTOCOL_VERSION_TLS_1_2 = 4,
    1901    G_TLS_PROTOCOL_VERSION_TLS_1_3 = 5,
    1902    G_TLS_PROTOCOL_VERSION_DTLS_1_0 = 201,
    1903    G_TLS_PROTOCOL_VERSION_DTLS_1_2 = 202,
    1904  } GTlsProtocolVersion;
    1905  
    1906  /**
    1907   * GIOModuleScopeFlags:
    1908   * @G_IO_MODULE_SCOPE_NONE: No module scan flags
    1909   * @G_IO_MODULE_SCOPE_BLOCK_DUPLICATES: When using this scope to load or
    1910   *     scan modules, automatically block a modules which has the same base
    1911   *     basename as previously loaded module.
    1912   *
    1913   * Flags for use with g_io_module_scope_new().
    1914   *
    1915   * Since: 2.30
    1916   */
    1917  typedef enum {
    1918    G_IO_MODULE_SCOPE_NONE,
    1919    G_IO_MODULE_SCOPE_BLOCK_DUPLICATES
    1920  } GIOModuleScopeFlags;
    1921  
    1922  /**
    1923   * GSocketClientEvent:
    1924   * @G_SOCKET_CLIENT_RESOLVING: The client is doing a DNS lookup.
    1925   * @G_SOCKET_CLIENT_RESOLVED: The client has completed a DNS lookup.
    1926   * @G_SOCKET_CLIENT_CONNECTING: The client is connecting to a remote
    1927   *   host (either a proxy or the destination server).
    1928   * @G_SOCKET_CLIENT_CONNECTED: The client has connected to a remote
    1929   *   host.
    1930   * @G_SOCKET_CLIENT_PROXY_NEGOTIATING: The client is negotiating
    1931   *   with a proxy to connect to the destination server.
    1932   * @G_SOCKET_CLIENT_PROXY_NEGOTIATED: The client has negotiated
    1933   *   with the proxy server.
    1934   * @G_SOCKET_CLIENT_TLS_HANDSHAKING: The client is performing a
    1935   *   TLS handshake.
    1936   * @G_SOCKET_CLIENT_TLS_HANDSHAKED: The client has performed a
    1937   *   TLS handshake.
    1938   * @G_SOCKET_CLIENT_COMPLETE: The client is done with a particular
    1939   *   #GSocketConnectable.
    1940   *
    1941   * Describes an event occurring on a #GSocketClient. See the
    1942   * #GSocketClient::event signal for more details.
    1943   *
    1944   * Additional values may be added to this type in the future.
    1945   *
    1946   * Since: 2.32
    1947   */
    1948  typedef enum {
    1949    G_SOCKET_CLIENT_RESOLVING,
    1950    G_SOCKET_CLIENT_RESOLVED,
    1951    G_SOCKET_CLIENT_CONNECTING,
    1952    G_SOCKET_CLIENT_CONNECTED,
    1953    G_SOCKET_CLIENT_PROXY_NEGOTIATING,
    1954    G_SOCKET_CLIENT_PROXY_NEGOTIATED,
    1955    G_SOCKET_CLIENT_TLS_HANDSHAKING,
    1956    G_SOCKET_CLIENT_TLS_HANDSHAKED,
    1957    G_SOCKET_CLIENT_COMPLETE
    1958  } GSocketClientEvent;
    1959  
    1960  /**
    1961   * GSocketListenerEvent:
    1962   * @G_SOCKET_LISTENER_BINDING: The listener is about to bind a socket.
    1963   * @G_SOCKET_LISTENER_BOUND: The listener has bound a socket.
    1964   * @G_SOCKET_LISTENER_LISTENING: The listener is about to start
    1965   *    listening on this socket.
    1966   * @G_SOCKET_LISTENER_LISTENED: The listener is now listening on
    1967   *   this socket.
    1968   *
    1969   * Describes an event occurring on a #GSocketListener. See the
    1970   * #GSocketListener::event signal for more details.
    1971   *
    1972   * Additional values may be added to this type in the future.
    1973   *
    1974   * Since: 2.46
    1975   */
    1976  typedef enum {
    1977    G_SOCKET_LISTENER_BINDING,
    1978    G_SOCKET_LISTENER_BOUND,
    1979    G_SOCKET_LISTENER_LISTENING,
    1980    G_SOCKET_LISTENER_LISTENED
    1981  } GSocketListenerEvent;
    1982  
    1983  /**
    1984   * GTestDBusFlags:
    1985   * @G_TEST_DBUS_NONE: No flags.
    1986   *
    1987   * Flags to define future #GTestDBus behaviour.
    1988   *
    1989   * Since: 2.34
    1990   */
    1991  typedef enum /*< flags >*/ {
    1992    G_TEST_DBUS_NONE = 0
    1993  } GTestDBusFlags;
    1994  
    1995  /**
    1996   * GSubprocessFlags:
    1997   * @G_SUBPROCESS_FLAGS_NONE: No flags.
    1998   * @G_SUBPROCESS_FLAGS_STDIN_PIPE: create a pipe for the stdin of the
    1999   *   spawned process that can be accessed with
    2000   *   g_subprocess_get_stdin_pipe().
    2001   * @G_SUBPROCESS_FLAGS_STDIN_INHERIT: stdin is inherited from the
    2002   *   calling process.
    2003   * @G_SUBPROCESS_FLAGS_STDOUT_PIPE: create a pipe for the stdout of the
    2004   *   spawned process that can be accessed with
    2005   *   g_subprocess_get_stdout_pipe().
    2006   * @G_SUBPROCESS_FLAGS_STDOUT_SILENCE: silence the stdout of the spawned
    2007   *   process (ie: redirect to `/dev/null`).
    2008   * @G_SUBPROCESS_FLAGS_STDERR_PIPE: create a pipe for the stderr of the
    2009   *   spawned process that can be accessed with
    2010   *   g_subprocess_get_stderr_pipe().
    2011   * @G_SUBPROCESS_FLAGS_STDERR_SILENCE: silence the stderr of the spawned
    2012   *   process (ie: redirect to `/dev/null`).
    2013   * @G_SUBPROCESS_FLAGS_STDERR_MERGE: merge the stderr of the spawned
    2014   *   process with whatever the stdout happens to be.  This is a good way
    2015   *   of directing both streams to a common log file, for example.
    2016   * @G_SUBPROCESS_FLAGS_INHERIT_FDS: spawned processes will inherit the
    2017   *   file descriptors of their parent, unless those descriptors have
    2018   *   been explicitly marked as close-on-exec.  This flag has no effect
    2019   *   over the "standard" file descriptors (stdin, stdout, stderr).
    2020   * @G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP: if path searching is
    2021   *   needed when spawning the subprocess, use the `PATH` in the launcher
    2022   *   environment. (Since: 2.72)
    2023   *
    2024   * Flags to define the behaviour of a #GSubprocess.
    2025   *
    2026   * Note that the default for stdin is to redirect from `/dev/null`.  For
    2027   * stdout and stderr the default are for them to inherit the
    2028   * corresponding descriptor from the calling process.
    2029   *
    2030   * Note that it is a programmer error to mix 'incompatible' flags.  For
    2031   * example, you may not request both %G_SUBPROCESS_FLAGS_STDOUT_PIPE and
    2032   * %G_SUBPROCESS_FLAGS_STDOUT_SILENCE.
    2033   *
    2034   * Since: 2.40
    2035   **/
    2036  typedef enum {
    2037    G_SUBPROCESS_FLAGS_NONE                  = 0,
    2038    G_SUBPROCESS_FLAGS_STDIN_PIPE            = (1u << 0),
    2039    G_SUBPROCESS_FLAGS_STDIN_INHERIT         = (1u << 1),
    2040    G_SUBPROCESS_FLAGS_STDOUT_PIPE           = (1u << 2),
    2041    G_SUBPROCESS_FLAGS_STDOUT_SILENCE        = (1u << 3),
    2042    G_SUBPROCESS_FLAGS_STDERR_PIPE           = (1u << 4),
    2043    G_SUBPROCESS_FLAGS_STDERR_SILENCE        = (1u << 5),
    2044    G_SUBPROCESS_FLAGS_STDERR_MERGE          = (1u << 6),
    2045    G_SUBPROCESS_FLAGS_INHERIT_FDS           = (1u << 7),
    2046    G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP = (1u << 8)
    2047  } GSubprocessFlags;
    2048  
    2049  /**
    2050   * GNotificationPriority:
    2051   * @G_NOTIFICATION_PRIORITY_LOW: for notifications that do not require
    2052   *   immediate attention - typically used for contextual background
    2053   *   information, such as contact birthdays or local weather
    2054   * @G_NOTIFICATION_PRIORITY_NORMAL: the default priority, to be used for the
    2055   *   majority of notifications (for example email messages, software updates,
    2056   *   completed download/sync operations)
    2057   * @G_NOTIFICATION_PRIORITY_HIGH: for events that require more attention,
    2058   *   usually because responses are time-sensitive (for example chat and SMS
    2059   *   messages or alarms)
    2060   * @G_NOTIFICATION_PRIORITY_URGENT: for urgent notifications, or notifications
    2061   *   that require a response in a short space of time (for example phone calls
    2062   *   or emergency warnings)
    2063   *
    2064   * Priority levels for #GNotifications.
    2065   *
    2066   * Since: 2.42
    2067   */
    2068  typedef enum {
    2069    G_NOTIFICATION_PRIORITY_NORMAL,
    2070    G_NOTIFICATION_PRIORITY_LOW,
    2071    G_NOTIFICATION_PRIORITY_HIGH,
    2072    G_NOTIFICATION_PRIORITY_URGENT
    2073  } GNotificationPriority;
    2074  
    2075  /**
    2076   * GNetworkConnectivity:
    2077   * @G_NETWORK_CONNECTIVITY_LOCAL: The host is not configured with a
    2078   *   route to the Internet; it may or may not be connected to a local
    2079   *   network.
    2080   * @G_NETWORK_CONNECTIVITY_LIMITED: The host is connected to a network, but
    2081   *   does not appear to be able to reach the full Internet, perhaps
    2082   *   due to upstream network problems.
    2083   * @G_NETWORK_CONNECTIVITY_PORTAL: The host is behind a captive portal and
    2084   *   cannot reach the full Internet.
    2085   * @G_NETWORK_CONNECTIVITY_FULL: The host is connected to a network, and
    2086   *   appears to be able to reach the full Internet.
    2087   *
    2088   * The host's network connectivity state, as reported by #GNetworkMonitor.
    2089   *
    2090   * Since: 2.44
    2091   */
    2092  typedef enum {
    2093    G_NETWORK_CONNECTIVITY_LOCAL       = 1,
    2094    G_NETWORK_CONNECTIVITY_LIMITED     = 2,
    2095    G_NETWORK_CONNECTIVITY_PORTAL      = 3,
    2096    G_NETWORK_CONNECTIVITY_FULL        = 4
    2097  } GNetworkConnectivity;
    2098  
    2099  /**
    2100   * GPollableReturn:
    2101   * @G_POLLABLE_RETURN_FAILED: Generic error condition for when an operation fails.
    2102   * @G_POLLABLE_RETURN_OK: The operation was successfully finished.
    2103   * @G_POLLABLE_RETURN_WOULD_BLOCK: The operation would block.
    2104   *
    2105   * Return value for various IO operations that signal errors via the
    2106   * return value and not necessarily via a #GError.
    2107   *
    2108   * This enum exists to be able to return errors to callers without having to
    2109   * allocate a #GError. Allocating #GErrors can be quite expensive for
    2110   * regularly happening errors like %G_IO_ERROR_WOULD_BLOCK.
    2111   *
    2112   * In case of %G_POLLABLE_RETURN_FAILED a #GError should be set for the
    2113   * operation to give details about the error that happened.
    2114   *
    2115   * Since: 2.60
    2116   */
    2117  typedef enum {
    2118    G_POLLABLE_RETURN_FAILED       = 0,
    2119    G_POLLABLE_RETURN_OK           = 1,
    2120    G_POLLABLE_RETURN_WOULD_BLOCK  = -G_IO_ERROR_WOULD_BLOCK
    2121  } GPollableReturn;
    2122  
    2123  /**
    2124   * GMemoryMonitorWarningLevel:
    2125   * @G_MEMORY_MONITOR_WARNING_LEVEL_LOW: Memory on the device is low, processes
    2126   *   should free up unneeded resources (for example, in-memory caches) so they can
    2127   *   be used elsewhere.
    2128   * @G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM: Same as @G_MEMORY_MONITOR_WARNING_LEVEL_LOW
    2129   *   but the device has even less free memory, so processes should try harder to free
    2130   *   up unneeded resources. If your process does not need to stay running, it is a
    2131   *   good time for it to quit.
    2132   * @G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL: The system will soon start terminating
    2133   *   processes to reclaim memory, including background processes.
    2134   *
    2135   * Memory availability warning levels.
    2136   *
    2137   * Note that because new values might be added, it is recommended that applications check
    2138   * #GMemoryMonitorWarningLevel as ranges, for example:
    2139   * |[<!-- language="C" -->
    2140   * if (warning_level > G_MEMORY_MONITOR_WARNING_LEVEL_LOW)
    2141   *   drop_caches ();
    2142   * ]|
    2143   *
    2144   * Since: 2.64
    2145   */
    2146  typedef enum {
    2147    G_MEMORY_MONITOR_WARNING_LEVEL_LOW      = 50,
    2148    G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM   = 100,
    2149    G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL = 255
    2150  } GMemoryMonitorWarningLevel;
    2151  
    2152  G_END_DECLS
    2153  
    2154  #endif /* __GIO_ENUMS_H__ */