Skip to main content

gio/auto/
enums.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5use crate::ffi;
6use glib::{prelude::*, translate::*};
7
8/// An enumeration for well-known message buses.
9#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10#[non_exhaustive]
11#[doc(alias = "GBusType")]
12pub enum BusType {
13    /// An alias for the message bus that activated the process, if any.
14    #[doc(alias = "G_BUS_TYPE_STARTER")]
15    Starter,
16    /// Not a message bus.
17    #[doc(alias = "G_BUS_TYPE_NONE")]
18    None,
19    /// The system-wide message bus.
20    #[doc(alias = "G_BUS_TYPE_SYSTEM")]
21    System,
22    /// The login session message bus.
23    #[doc(alias = "G_BUS_TYPE_SESSION")]
24    Session,
25    #[doc(hidden)]
26    __Unknown(i32),
27}
28
29#[doc(hidden)]
30impl IntoGlib for BusType {
31    type GlibType = ffi::GBusType;
32
33    #[inline]
34    fn into_glib(self) -> ffi::GBusType {
35        match self {
36            Self::Starter => ffi::G_BUS_TYPE_STARTER,
37            Self::None => ffi::G_BUS_TYPE_NONE,
38            Self::System => ffi::G_BUS_TYPE_SYSTEM,
39            Self::Session => ffi::G_BUS_TYPE_SESSION,
40            Self::__Unknown(value) => value,
41        }
42    }
43}
44
45#[doc(hidden)]
46impl FromGlib<ffi::GBusType> for BusType {
47    #[inline]
48    unsafe fn from_glib(value: ffi::GBusType) -> Self {
49        match value {
50            ffi::G_BUS_TYPE_STARTER => Self::Starter,
51            ffi::G_BUS_TYPE_NONE => Self::None,
52            ffi::G_BUS_TYPE_SYSTEM => Self::System,
53            ffi::G_BUS_TYPE_SESSION => Self::Session,
54            value => Self::__Unknown(value),
55        }
56    }
57}
58
59impl StaticType for BusType {
60    #[inline]
61    #[doc(alias = "g_bus_type_get_type")]
62    fn static_type() -> glib::Type {
63        unsafe { from_glib(ffi::g_bus_type_get_type()) }
64    }
65}
66
67impl glib::HasParamSpec for BusType {
68    type ParamSpec = glib::ParamSpecEnum;
69    type SetValue = Self;
70    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
71
72    fn param_spec_builder() -> Self::BuilderFn {
73        Self::ParamSpec::builder_with_default
74    }
75}
76
77impl glib::value::ValueType for BusType {
78    type Type = Self;
79}
80
81unsafe impl<'a> glib::value::FromValue<'a> for BusType {
82    type Checker = glib::value::GenericValueTypeChecker<Self>;
83
84    #[inline]
85    unsafe fn from_value(value: &'a glib::Value) -> Self {
86        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
87    }
88}
89
90impl ToValue for BusType {
91    #[inline]
92    fn to_value(&self) -> glib::Value {
93        let mut value = glib::Value::for_value_type::<Self>();
94        unsafe {
95            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
96        }
97        value
98    }
99
100    #[inline]
101    fn value_type(&self) -> glib::Type {
102        Self::static_type()
103    }
104}
105
106impl From<BusType> for glib::Value {
107    #[inline]
108    fn from(v: BusType) -> Self {
109        ToValue::to_value(&v)
110    }
111}
112
113/// Results returned from g_converter_convert().
114#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
115#[non_exhaustive]
116#[doc(alias = "GConverterResult")]
117pub enum ConverterResult {
118    /// There was an error during conversion.
119    #[doc(alias = "G_CONVERTER_ERROR")]
120    Error,
121    /// Some data was consumed or produced
122    #[doc(alias = "G_CONVERTER_CONVERTED")]
123    Converted,
124    /// The conversion is finished
125    #[doc(alias = "G_CONVERTER_FINISHED")]
126    Finished,
127    /// Flushing is finished
128    #[doc(alias = "G_CONVERTER_FLUSHED")]
129    Flushed,
130    #[doc(hidden)]
131    __Unknown(i32),
132}
133
134#[doc(hidden)]
135impl IntoGlib for ConverterResult {
136    type GlibType = ffi::GConverterResult;
137
138    #[inline]
139    fn into_glib(self) -> ffi::GConverterResult {
140        match self {
141            Self::Error => ffi::G_CONVERTER_ERROR,
142            Self::Converted => ffi::G_CONVERTER_CONVERTED,
143            Self::Finished => ffi::G_CONVERTER_FINISHED,
144            Self::Flushed => ffi::G_CONVERTER_FLUSHED,
145            Self::__Unknown(value) => value,
146        }
147    }
148}
149
150#[doc(hidden)]
151impl FromGlib<ffi::GConverterResult> for ConverterResult {
152    #[inline]
153    unsafe fn from_glib(value: ffi::GConverterResult) -> Self {
154        match value {
155            ffi::G_CONVERTER_ERROR => Self::Error,
156            ffi::G_CONVERTER_CONVERTED => Self::Converted,
157            ffi::G_CONVERTER_FINISHED => Self::Finished,
158            ffi::G_CONVERTER_FLUSHED => Self::Flushed,
159            value => Self::__Unknown(value),
160        }
161    }
162}
163
164impl StaticType for ConverterResult {
165    #[inline]
166    #[doc(alias = "g_converter_result_get_type")]
167    fn static_type() -> glib::Type {
168        unsafe { from_glib(ffi::g_converter_result_get_type()) }
169    }
170}
171
172impl glib::HasParamSpec for ConverterResult {
173    type ParamSpec = glib::ParamSpecEnum;
174    type SetValue = Self;
175    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
176
177    fn param_spec_builder() -> Self::BuilderFn {
178        Self::ParamSpec::builder_with_default
179    }
180}
181
182impl glib::value::ValueType for ConverterResult {
183    type Type = Self;
184}
185
186unsafe impl<'a> glib::value::FromValue<'a> for ConverterResult {
187    type Checker = glib::value::GenericValueTypeChecker<Self>;
188
189    #[inline]
190    unsafe fn from_value(value: &'a glib::Value) -> Self {
191        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
192    }
193}
194
195impl ToValue for ConverterResult {
196    #[inline]
197    fn to_value(&self) -> glib::Value {
198        let mut value = glib::Value::for_value_type::<Self>();
199        unsafe {
200            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
201        }
202        value
203    }
204
205    #[inline]
206    fn value_type(&self) -> glib::Type {
207        Self::static_type()
208    }
209}
210
211impl From<ConverterResult> for glib::Value {
212    #[inline]
213    fn from(v: ConverterResult) -> Self {
214        ToValue::to_value(&v)
215    }
216}
217
218/// Enumeration describing different kinds of native credential types.
219#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
220#[non_exhaustive]
221#[doc(alias = "GCredentialsType")]
222pub enum CredentialsType {
223    /// Indicates an invalid native credential type.
224    #[doc(alias = "G_CREDENTIALS_TYPE_INVALID")]
225    Invalid,
226    /// The native credentials type is a `struct ucred`.
227    #[doc(alias = "G_CREDENTIALS_TYPE_LINUX_UCRED")]
228    LinuxUcred,
229    /// The native credentials type is a `struct cmsgcred`.
230    #[doc(alias = "G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED")]
231    FreebsdCmsgcred,
232    /// The native credentials type is a `struct sockpeercred`. Added in 2.30.
233    #[doc(alias = "G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED")]
234    OpenbsdSockpeercred,
235    /// The native credentials type is a `ucred_t`. Added in 2.40.
236    #[doc(alias = "G_CREDENTIALS_TYPE_SOLARIS_UCRED")]
237    SolarisUcred,
238    /// The native credentials type is a `struct unpcbid`. Added in 2.42.
239    #[doc(alias = "G_CREDENTIALS_TYPE_NETBSD_UNPCBID")]
240    NetbsdUnpcbid,
241    /// The native credentials type is a `struct xucred`. Added in 2.66.
242    #[doc(alias = "G_CREDENTIALS_TYPE_APPLE_XUCRED")]
243    AppleXucred,
244    /// The native credentials type is a PID `DWORD`. Added in 2.72.
245    #[cfg(feature = "v2_72")]
246    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
247    #[doc(alias = "G_CREDENTIALS_TYPE_WIN32_PID")]
248    Win32Pid,
249    #[doc(hidden)]
250    __Unknown(i32),
251}
252
253#[doc(hidden)]
254impl IntoGlib for CredentialsType {
255    type GlibType = ffi::GCredentialsType;
256
257    #[inline]
258    fn into_glib(self) -> ffi::GCredentialsType {
259        match self {
260            Self::Invalid => ffi::G_CREDENTIALS_TYPE_INVALID,
261            Self::LinuxUcred => ffi::G_CREDENTIALS_TYPE_LINUX_UCRED,
262            Self::FreebsdCmsgcred => ffi::G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED,
263            Self::OpenbsdSockpeercred => ffi::G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED,
264            Self::SolarisUcred => ffi::G_CREDENTIALS_TYPE_SOLARIS_UCRED,
265            Self::NetbsdUnpcbid => ffi::G_CREDENTIALS_TYPE_NETBSD_UNPCBID,
266            Self::AppleXucred => ffi::G_CREDENTIALS_TYPE_APPLE_XUCRED,
267            #[cfg(feature = "v2_72")]
268            Self::Win32Pid => ffi::G_CREDENTIALS_TYPE_WIN32_PID,
269            Self::__Unknown(value) => value,
270        }
271    }
272}
273
274#[doc(hidden)]
275impl FromGlib<ffi::GCredentialsType> for CredentialsType {
276    #[inline]
277    unsafe fn from_glib(value: ffi::GCredentialsType) -> Self {
278        match value {
279            ffi::G_CREDENTIALS_TYPE_INVALID => Self::Invalid,
280            ffi::G_CREDENTIALS_TYPE_LINUX_UCRED => Self::LinuxUcred,
281            ffi::G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED => Self::FreebsdCmsgcred,
282            ffi::G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED => Self::OpenbsdSockpeercred,
283            ffi::G_CREDENTIALS_TYPE_SOLARIS_UCRED => Self::SolarisUcred,
284            ffi::G_CREDENTIALS_TYPE_NETBSD_UNPCBID => Self::NetbsdUnpcbid,
285            ffi::G_CREDENTIALS_TYPE_APPLE_XUCRED => Self::AppleXucred,
286            #[cfg(feature = "v2_72")]
287            ffi::G_CREDENTIALS_TYPE_WIN32_PID => Self::Win32Pid,
288            value => Self::__Unknown(value),
289        }
290    }
291}
292
293impl StaticType for CredentialsType {
294    #[inline]
295    #[doc(alias = "g_credentials_type_get_type")]
296    fn static_type() -> glib::Type {
297        unsafe { from_glib(ffi::g_credentials_type_get_type()) }
298    }
299}
300
301impl glib::HasParamSpec for CredentialsType {
302    type ParamSpec = glib::ParamSpecEnum;
303    type SetValue = Self;
304    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
305
306    fn param_spec_builder() -> Self::BuilderFn {
307        Self::ParamSpec::builder_with_default
308    }
309}
310
311impl glib::value::ValueType for CredentialsType {
312    type Type = Self;
313}
314
315unsafe impl<'a> glib::value::FromValue<'a> for CredentialsType {
316    type Checker = glib::value::GenericValueTypeChecker<Self>;
317
318    #[inline]
319    unsafe fn from_value(value: &'a glib::Value) -> Self {
320        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
321    }
322}
323
324impl ToValue for CredentialsType {
325    #[inline]
326    fn to_value(&self) -> glib::Value {
327        let mut value = glib::Value::for_value_type::<Self>();
328        unsafe {
329            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
330        }
331        value
332    }
333
334    #[inline]
335    fn value_type(&self) -> glib::Type {
336        Self::static_type()
337    }
338}
339
340impl From<CredentialsType> for glib::Value {
341    #[inline]
342    fn from(v: CredentialsType) -> Self {
343        ToValue::to_value(&v)
344    }
345}
346
347/// Error codes for the `G_DBUS_ERROR` error domain.
348#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
349#[non_exhaustive]
350#[doc(alias = "GDBusError")]
351pub enum DBusError {
352    /// A generic error; "something went wrong" - see the error message for
353    /// more.
354    #[doc(alias = "G_DBUS_ERROR_FAILED")]
355    Failed,
356    /// There was not enough memory to complete an operation.
357    #[doc(alias = "G_DBUS_ERROR_NO_MEMORY")]
358    NoMemory,
359    /// The bus doesn't know how to launch a service to supply the bus name
360    /// you wanted.
361    #[doc(alias = "G_DBUS_ERROR_SERVICE_UNKNOWN")]
362    ServiceUnknown,
363    /// The bus name you referenced doesn't exist (i.e. no application owns
364    /// it).
365    #[doc(alias = "G_DBUS_ERROR_NAME_HAS_NO_OWNER")]
366    NameHasNoOwner,
367    /// No reply to a message expecting one, usually means a timeout occurred.
368    #[doc(alias = "G_DBUS_ERROR_NO_REPLY")]
369    NoReply,
370    /// Something went wrong reading or writing to a socket, for example.
371    #[doc(alias = "G_DBUS_ERROR_IO_ERROR")]
372    IoError,
373    /// A D-Bus bus address was malformed.
374    #[doc(alias = "G_DBUS_ERROR_BAD_ADDRESS")]
375    BadAddress,
376    /// Requested operation isn't supported (like ENOSYS on UNIX).
377    #[doc(alias = "G_DBUS_ERROR_NOT_SUPPORTED")]
378    NotSupported,
379    /// Some limited resource is exhausted.
380    #[doc(alias = "G_DBUS_ERROR_LIMITS_EXCEEDED")]
381    LimitsExceeded,
382    /// Security restrictions don't allow doing what you're trying to do.
383    #[doc(alias = "G_DBUS_ERROR_ACCESS_DENIED")]
384    AccessDenied,
385    /// Authentication didn't work.
386    #[doc(alias = "G_DBUS_ERROR_AUTH_FAILED")]
387    AuthFailed,
388    /// Unable to connect to server (probably caused by ECONNREFUSED on a
389    /// socket).
390    #[doc(alias = "G_DBUS_ERROR_NO_SERVER")]
391    NoServer,
392    /// Certain timeout errors, possibly ETIMEDOUT on a socket.  Note that
393    /// [`NoReply`][Self::NoReply] is used for message reply timeouts. Warning:
394    /// this is confusingly-named given that [`TimedOut`][Self::TimedOut] also
395    /// exists. We can't fix it for compatibility reasons so just be
396    /// careful.
397    #[doc(alias = "G_DBUS_ERROR_TIMEOUT")]
398    Timeout,
399    /// No network access (probably ENETUNREACH on a socket).
400    #[doc(alias = "G_DBUS_ERROR_NO_NETWORK")]
401    NoNetwork,
402    /// Can't bind a socket since its address is in use (i.e. EADDRINUSE).
403    #[doc(alias = "G_DBUS_ERROR_ADDRESS_IN_USE")]
404    AddressInUse,
405    /// The connection is disconnected and you're trying to use it.
406    #[doc(alias = "G_DBUS_ERROR_DISCONNECTED")]
407    Disconnected,
408    /// Invalid arguments passed to a method call.
409    #[doc(alias = "G_DBUS_ERROR_INVALID_ARGS")]
410    InvalidArgs,
411    /// Missing file.
412    #[doc(alias = "G_DBUS_ERROR_FILE_NOT_FOUND")]
413    FileNotFound,
414    /// Existing file and the operation you're using does not silently overwrite.
415    #[doc(alias = "G_DBUS_ERROR_FILE_EXISTS")]
416    FileExists,
417    /// Method name you invoked isn't known by the object you invoked it on.
418    #[doc(alias = "G_DBUS_ERROR_UNKNOWN_METHOD")]
419    UnknownMethod,
420    /// Certain timeout errors, e.g. while starting a service. Warning: this is
421    /// confusingly-named given that [`Timeout`][Self::Timeout] also exists. We
422    /// can't fix it for compatibility reasons so just be careful.
423    #[doc(alias = "G_DBUS_ERROR_TIMED_OUT")]
424    TimedOut,
425    /// Tried to remove or modify a match rule that didn't exist.
426    #[doc(alias = "G_DBUS_ERROR_MATCH_RULE_NOT_FOUND")]
427    MatchRuleNotFound,
428    /// The match rule isn't syntactically valid.
429    #[doc(alias = "G_DBUS_ERROR_MATCH_RULE_INVALID")]
430    MatchRuleInvalid,
431    /// While starting a new process, the exec() call failed.
432    #[doc(alias = "G_DBUS_ERROR_SPAWN_EXEC_FAILED")]
433    SpawnExecFailed,
434    /// While starting a new process, the fork() call failed.
435    #[doc(alias = "G_DBUS_ERROR_SPAWN_FORK_FAILED")]
436    SpawnForkFailed,
437    /// While starting a new process, the child exited with a status code.
438    #[doc(alias = "G_DBUS_ERROR_SPAWN_CHILD_EXITED")]
439    SpawnChildExited,
440    /// While starting a new process, the child exited on a signal.
441    #[doc(alias = "G_DBUS_ERROR_SPAWN_CHILD_SIGNALED")]
442    SpawnChildSignaled,
443    /// While starting a new process, something went wrong.
444    #[doc(alias = "G_DBUS_ERROR_SPAWN_FAILED")]
445    SpawnFailed,
446    /// We failed to setup the environment correctly.
447    #[doc(alias = "G_DBUS_ERROR_SPAWN_SETUP_FAILED")]
448    SpawnSetupFailed,
449    /// We failed to setup the config parser correctly.
450    #[doc(alias = "G_DBUS_ERROR_SPAWN_CONFIG_INVALID")]
451    SpawnConfigInvalid,
452    /// Bus name was not valid.
453    #[doc(alias = "G_DBUS_ERROR_SPAWN_SERVICE_INVALID")]
454    SpawnServiceInvalid,
455    /// Service file not found in system-services directory.
456    #[doc(alias = "G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND")]
457    SpawnServiceNotFound,
458    /// Permissions are incorrect on the setuid helper.
459    #[doc(alias = "G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID")]
460    SpawnPermissionsInvalid,
461    /// Service file invalid (Name, User or Exec missing).
462    #[doc(alias = "G_DBUS_ERROR_SPAWN_FILE_INVALID")]
463    SpawnFileInvalid,
464    /// Tried to get a UNIX process ID and it wasn't available.
465    #[doc(alias = "G_DBUS_ERROR_SPAWN_NO_MEMORY")]
466    SpawnNoMemory,
467    /// Tried to get a UNIX process ID and it wasn't available.
468    #[doc(alias = "G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN")]
469    UnixProcessIdUnknown,
470    /// A type signature is not valid.
471    #[doc(alias = "G_DBUS_ERROR_INVALID_SIGNATURE")]
472    InvalidSignature,
473    /// A file contains invalid syntax or is otherwise broken.
474    #[doc(alias = "G_DBUS_ERROR_INVALID_FILE_CONTENT")]
475    InvalidFileContent,
476    /// Asked for SELinux security context and it wasn't available.
477    #[doc(alias = "G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN")]
478    SelinuxSecurityContextUnknown,
479    /// Asked for ADT audit data and it wasn't available.
480    #[doc(alias = "G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN")]
481    AdtAuditDataUnknown,
482    /// There's already an object with the requested object path.
483    #[doc(alias = "G_DBUS_ERROR_OBJECT_PATH_IN_USE")]
484    ObjectPathInUse,
485    /// Object you invoked a method on isn't known. Since 2.42
486    #[doc(alias = "G_DBUS_ERROR_UNKNOWN_OBJECT")]
487    UnknownObject,
488    /// Interface you invoked a method on isn't known by the object. Since 2.42
489    #[doc(alias = "G_DBUS_ERROR_UNKNOWN_INTERFACE")]
490    UnknownInterface,
491    /// Property you tried to access isn't known by the object. Since 2.42
492    #[doc(alias = "G_DBUS_ERROR_UNKNOWN_PROPERTY")]
493    UnknownProperty,
494    /// Property you tried to set is read-only. Since 2.42
495    #[doc(alias = "G_DBUS_ERROR_PROPERTY_READ_ONLY")]
496    PropertyReadOnly,
497    #[doc(hidden)]
498    __Unknown(i32),
499}
500
501impl DBusError {
502    #[doc(alias = "g_dbus_error_encode_gerror")]
503    pub fn encode_gerror(error: &glib::Error) -> glib::GString {
504        unsafe { from_glib_full(ffi::g_dbus_error_encode_gerror(error.to_glib_none().0)) }
505    }
506
507    #[doc(alias = "g_dbus_error_get_remote_error")]
508    #[doc(alias = "get_remote_error")]
509    pub fn remote_error(error: &glib::Error) -> Option<glib::GString> {
510        unsafe { from_glib_full(ffi::g_dbus_error_get_remote_error(error.to_glib_none().0)) }
511    }
512
513    #[doc(alias = "g_dbus_error_is_remote_error")]
514    pub fn is_remote_error(error: &glib::Error) -> bool {
515        unsafe { from_glib(ffi::g_dbus_error_is_remote_error(error.to_glib_none().0)) }
516    }
517
518    #[doc(alias = "g_dbus_error_new_for_dbus_error")]
519    pub fn new_for_dbus_error(dbus_error_name: &str, dbus_error_message: &str) -> glib::Error {
520        unsafe {
521            from_glib_full(ffi::g_dbus_error_new_for_dbus_error(
522                dbus_error_name.to_glib_none().0,
523                dbus_error_message.to_glib_none().0,
524            ))
525        }
526    }
527
528    #[doc(alias = "g_dbus_error_register_error")]
529    pub fn register_error(
530        error_domain: glib::Quark,
531        error_code: i32,
532        dbus_error_name: &str,
533    ) -> bool {
534        unsafe {
535            from_glib(ffi::g_dbus_error_register_error(
536                error_domain.into_glib(),
537                error_code,
538                dbus_error_name.to_glib_none().0,
539            ))
540        }
541    }
542
543    //#[doc(alias = "g_dbus_error_register_error_domain")]
544    //pub fn register_error_domain(error_domain_quark_name: &str, entries: /*Ignored*/&[DBusErrorEntry]) -> usize {
545    //    unsafe { TODO: call ffi:g_dbus_error_register_error_domain() }
546    //}
547
548    //#[doc(alias = "g_dbus_error_set_dbus_error")]
549    //pub fn set_dbus_error(dbus_error_name: &str, dbus_error_message: &str, format: Option<&str>, : /*Unknown conversion*//*Unimplemented*/Basic: VarArgs) -> Option<glib::Error> {
550    //    unsafe { TODO: call ffi:g_dbus_error_set_dbus_error() }
551    //}
552
553    //#[doc(alias = "g_dbus_error_set_dbus_error_valist")]
554    //pub fn set_dbus_error_valist(dbus_error_name: &str, dbus_error_message: &str, format: Option<&str>, var_args: /*Unknown conversion*//*Unimplemented*/Unsupported) -> Option<glib::Error> {
555    //    unsafe { TODO: call ffi:g_dbus_error_set_dbus_error_valist() }
556    //}
557
558    #[doc(alias = "g_dbus_error_strip_remote_error")]
559    pub fn strip_remote_error(error: &mut glib::Error) -> bool {
560        unsafe {
561            from_glib(ffi::g_dbus_error_strip_remote_error(
562                error.to_glib_none_mut().0,
563            ))
564        }
565    }
566
567    #[doc(alias = "g_dbus_error_unregister_error")]
568    pub fn unregister_error(
569        error_domain: glib::Quark,
570        error_code: i32,
571        dbus_error_name: &str,
572    ) -> bool {
573        unsafe {
574            from_glib(ffi::g_dbus_error_unregister_error(
575                error_domain.into_glib(),
576                error_code,
577                dbus_error_name.to_glib_none().0,
578            ))
579        }
580    }
581}
582
583#[doc(hidden)]
584impl IntoGlib for DBusError {
585    type GlibType = ffi::GDBusError;
586
587    fn into_glib(self) -> ffi::GDBusError {
588        match self {
589            Self::Failed => ffi::G_DBUS_ERROR_FAILED,
590            Self::NoMemory => ffi::G_DBUS_ERROR_NO_MEMORY,
591            Self::ServiceUnknown => ffi::G_DBUS_ERROR_SERVICE_UNKNOWN,
592            Self::NameHasNoOwner => ffi::G_DBUS_ERROR_NAME_HAS_NO_OWNER,
593            Self::NoReply => ffi::G_DBUS_ERROR_NO_REPLY,
594            Self::IoError => ffi::G_DBUS_ERROR_IO_ERROR,
595            Self::BadAddress => ffi::G_DBUS_ERROR_BAD_ADDRESS,
596            Self::NotSupported => ffi::G_DBUS_ERROR_NOT_SUPPORTED,
597            Self::LimitsExceeded => ffi::G_DBUS_ERROR_LIMITS_EXCEEDED,
598            Self::AccessDenied => ffi::G_DBUS_ERROR_ACCESS_DENIED,
599            Self::AuthFailed => ffi::G_DBUS_ERROR_AUTH_FAILED,
600            Self::NoServer => ffi::G_DBUS_ERROR_NO_SERVER,
601            Self::Timeout => ffi::G_DBUS_ERROR_TIMEOUT,
602            Self::NoNetwork => ffi::G_DBUS_ERROR_NO_NETWORK,
603            Self::AddressInUse => ffi::G_DBUS_ERROR_ADDRESS_IN_USE,
604            Self::Disconnected => ffi::G_DBUS_ERROR_DISCONNECTED,
605            Self::InvalidArgs => ffi::G_DBUS_ERROR_INVALID_ARGS,
606            Self::FileNotFound => ffi::G_DBUS_ERROR_FILE_NOT_FOUND,
607            Self::FileExists => ffi::G_DBUS_ERROR_FILE_EXISTS,
608            Self::UnknownMethod => ffi::G_DBUS_ERROR_UNKNOWN_METHOD,
609            Self::TimedOut => ffi::G_DBUS_ERROR_TIMED_OUT,
610            Self::MatchRuleNotFound => ffi::G_DBUS_ERROR_MATCH_RULE_NOT_FOUND,
611            Self::MatchRuleInvalid => ffi::G_DBUS_ERROR_MATCH_RULE_INVALID,
612            Self::SpawnExecFailed => ffi::G_DBUS_ERROR_SPAWN_EXEC_FAILED,
613            Self::SpawnForkFailed => ffi::G_DBUS_ERROR_SPAWN_FORK_FAILED,
614            Self::SpawnChildExited => ffi::G_DBUS_ERROR_SPAWN_CHILD_EXITED,
615            Self::SpawnChildSignaled => ffi::G_DBUS_ERROR_SPAWN_CHILD_SIGNALED,
616            Self::SpawnFailed => ffi::G_DBUS_ERROR_SPAWN_FAILED,
617            Self::SpawnSetupFailed => ffi::G_DBUS_ERROR_SPAWN_SETUP_FAILED,
618            Self::SpawnConfigInvalid => ffi::G_DBUS_ERROR_SPAWN_CONFIG_INVALID,
619            Self::SpawnServiceInvalid => ffi::G_DBUS_ERROR_SPAWN_SERVICE_INVALID,
620            Self::SpawnServiceNotFound => ffi::G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND,
621            Self::SpawnPermissionsInvalid => ffi::G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID,
622            Self::SpawnFileInvalid => ffi::G_DBUS_ERROR_SPAWN_FILE_INVALID,
623            Self::SpawnNoMemory => ffi::G_DBUS_ERROR_SPAWN_NO_MEMORY,
624            Self::UnixProcessIdUnknown => ffi::G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN,
625            Self::InvalidSignature => ffi::G_DBUS_ERROR_INVALID_SIGNATURE,
626            Self::InvalidFileContent => ffi::G_DBUS_ERROR_INVALID_FILE_CONTENT,
627            Self::SelinuxSecurityContextUnknown => {
628                ffi::G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN
629            }
630            Self::AdtAuditDataUnknown => ffi::G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN,
631            Self::ObjectPathInUse => ffi::G_DBUS_ERROR_OBJECT_PATH_IN_USE,
632            Self::UnknownObject => ffi::G_DBUS_ERROR_UNKNOWN_OBJECT,
633            Self::UnknownInterface => ffi::G_DBUS_ERROR_UNKNOWN_INTERFACE,
634            Self::UnknownProperty => ffi::G_DBUS_ERROR_UNKNOWN_PROPERTY,
635            Self::PropertyReadOnly => ffi::G_DBUS_ERROR_PROPERTY_READ_ONLY,
636            Self::__Unknown(value) => value,
637        }
638    }
639}
640
641#[doc(hidden)]
642impl FromGlib<ffi::GDBusError> for DBusError {
643    unsafe fn from_glib(value: ffi::GDBusError) -> Self {
644        match value {
645            ffi::G_DBUS_ERROR_FAILED => Self::Failed,
646            ffi::G_DBUS_ERROR_NO_MEMORY => Self::NoMemory,
647            ffi::G_DBUS_ERROR_SERVICE_UNKNOWN => Self::ServiceUnknown,
648            ffi::G_DBUS_ERROR_NAME_HAS_NO_OWNER => Self::NameHasNoOwner,
649            ffi::G_DBUS_ERROR_NO_REPLY => Self::NoReply,
650            ffi::G_DBUS_ERROR_IO_ERROR => Self::IoError,
651            ffi::G_DBUS_ERROR_BAD_ADDRESS => Self::BadAddress,
652            ffi::G_DBUS_ERROR_NOT_SUPPORTED => Self::NotSupported,
653            ffi::G_DBUS_ERROR_LIMITS_EXCEEDED => Self::LimitsExceeded,
654            ffi::G_DBUS_ERROR_ACCESS_DENIED => Self::AccessDenied,
655            ffi::G_DBUS_ERROR_AUTH_FAILED => Self::AuthFailed,
656            ffi::G_DBUS_ERROR_NO_SERVER => Self::NoServer,
657            ffi::G_DBUS_ERROR_TIMEOUT => Self::Timeout,
658            ffi::G_DBUS_ERROR_NO_NETWORK => Self::NoNetwork,
659            ffi::G_DBUS_ERROR_ADDRESS_IN_USE => Self::AddressInUse,
660            ffi::G_DBUS_ERROR_DISCONNECTED => Self::Disconnected,
661            ffi::G_DBUS_ERROR_INVALID_ARGS => Self::InvalidArgs,
662            ffi::G_DBUS_ERROR_FILE_NOT_FOUND => Self::FileNotFound,
663            ffi::G_DBUS_ERROR_FILE_EXISTS => Self::FileExists,
664            ffi::G_DBUS_ERROR_UNKNOWN_METHOD => Self::UnknownMethod,
665            ffi::G_DBUS_ERROR_TIMED_OUT => Self::TimedOut,
666            ffi::G_DBUS_ERROR_MATCH_RULE_NOT_FOUND => Self::MatchRuleNotFound,
667            ffi::G_DBUS_ERROR_MATCH_RULE_INVALID => Self::MatchRuleInvalid,
668            ffi::G_DBUS_ERROR_SPAWN_EXEC_FAILED => Self::SpawnExecFailed,
669            ffi::G_DBUS_ERROR_SPAWN_FORK_FAILED => Self::SpawnForkFailed,
670            ffi::G_DBUS_ERROR_SPAWN_CHILD_EXITED => Self::SpawnChildExited,
671            ffi::G_DBUS_ERROR_SPAWN_CHILD_SIGNALED => Self::SpawnChildSignaled,
672            ffi::G_DBUS_ERROR_SPAWN_FAILED => Self::SpawnFailed,
673            ffi::G_DBUS_ERROR_SPAWN_SETUP_FAILED => Self::SpawnSetupFailed,
674            ffi::G_DBUS_ERROR_SPAWN_CONFIG_INVALID => Self::SpawnConfigInvalid,
675            ffi::G_DBUS_ERROR_SPAWN_SERVICE_INVALID => Self::SpawnServiceInvalid,
676            ffi::G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND => Self::SpawnServiceNotFound,
677            ffi::G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID => Self::SpawnPermissionsInvalid,
678            ffi::G_DBUS_ERROR_SPAWN_FILE_INVALID => Self::SpawnFileInvalid,
679            ffi::G_DBUS_ERROR_SPAWN_NO_MEMORY => Self::SpawnNoMemory,
680            ffi::G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN => Self::UnixProcessIdUnknown,
681            ffi::G_DBUS_ERROR_INVALID_SIGNATURE => Self::InvalidSignature,
682            ffi::G_DBUS_ERROR_INVALID_FILE_CONTENT => Self::InvalidFileContent,
683            ffi::G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN => {
684                Self::SelinuxSecurityContextUnknown
685            }
686            ffi::G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN => Self::AdtAuditDataUnknown,
687            ffi::G_DBUS_ERROR_OBJECT_PATH_IN_USE => Self::ObjectPathInUse,
688            ffi::G_DBUS_ERROR_UNKNOWN_OBJECT => Self::UnknownObject,
689            ffi::G_DBUS_ERROR_UNKNOWN_INTERFACE => Self::UnknownInterface,
690            ffi::G_DBUS_ERROR_UNKNOWN_PROPERTY => Self::UnknownProperty,
691            ffi::G_DBUS_ERROR_PROPERTY_READ_ONLY => Self::PropertyReadOnly,
692            value => Self::__Unknown(value),
693        }
694    }
695}
696
697impl glib::error::ErrorDomain for DBusError {
698    #[inline]
699    fn domain() -> glib::Quark {
700        unsafe { from_glib(ffi::g_dbus_error_quark()) }
701    }
702
703    #[inline]
704    fn code(self) -> i32 {
705        self.into_glib()
706    }
707
708    #[inline]
709    #[allow(clippy::match_single_binding)]
710    fn from(code: i32) -> Option<Self> {
711        match unsafe { from_glib(code) } {
712            Self::__Unknown(_) => Some(Self::Failed),
713            value => Some(value),
714        }
715    }
716}
717
718impl StaticType for DBusError {
719    #[inline]
720    #[doc(alias = "g_dbus_error_get_type")]
721    fn static_type() -> glib::Type {
722        unsafe { from_glib(ffi::g_dbus_error_get_type()) }
723    }
724}
725
726impl glib::HasParamSpec for DBusError {
727    type ParamSpec = glib::ParamSpecEnum;
728    type SetValue = Self;
729    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
730
731    fn param_spec_builder() -> Self::BuilderFn {
732        Self::ParamSpec::builder_with_default
733    }
734}
735
736impl glib::value::ValueType for DBusError {
737    type Type = Self;
738}
739
740unsafe impl<'a> glib::value::FromValue<'a> for DBusError {
741    type Checker = glib::value::GenericValueTypeChecker<Self>;
742
743    #[inline]
744    unsafe fn from_value(value: &'a glib::Value) -> Self {
745        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
746    }
747}
748
749impl ToValue for DBusError {
750    #[inline]
751    fn to_value(&self) -> glib::Value {
752        let mut value = glib::Value::for_value_type::<Self>();
753        unsafe {
754            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
755        }
756        value
757    }
758
759    #[inline]
760    fn value_type(&self) -> glib::Type {
761        Self::static_type()
762    }
763}
764
765impl From<DBusError> for glib::Value {
766    #[inline]
767    fn from(v: DBusError) -> Self {
768        ToValue::to_value(&v)
769    }
770}
771
772/// Enumeration used to describe the byte order of a D-Bus message.
773#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
774#[non_exhaustive]
775#[doc(alias = "GDBusMessageByteOrder")]
776pub enum DBusMessageByteOrder {
777    /// The byte order is big endian.
778    #[doc(alias = "G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN")]
779    BigEndian,
780    /// The byte order is little endian.
781    #[doc(alias = "G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN")]
782    LittleEndian,
783    #[doc(hidden)]
784    __Unknown(i32),
785}
786
787#[doc(hidden)]
788impl IntoGlib for DBusMessageByteOrder {
789    type GlibType = ffi::GDBusMessageByteOrder;
790
791    #[inline]
792    fn into_glib(self) -> ffi::GDBusMessageByteOrder {
793        match self {
794            Self::BigEndian => ffi::G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN,
795            Self::LittleEndian => ffi::G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN,
796            Self::__Unknown(value) => value,
797        }
798    }
799}
800
801#[doc(hidden)]
802impl FromGlib<ffi::GDBusMessageByteOrder> for DBusMessageByteOrder {
803    #[inline]
804    unsafe fn from_glib(value: ffi::GDBusMessageByteOrder) -> Self {
805        match value {
806            ffi::G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN => Self::BigEndian,
807            ffi::G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN => Self::LittleEndian,
808            value => Self::__Unknown(value),
809        }
810    }
811}
812
813impl StaticType for DBusMessageByteOrder {
814    #[inline]
815    #[doc(alias = "g_dbus_message_byte_order_get_type")]
816    fn static_type() -> glib::Type {
817        unsafe { from_glib(ffi::g_dbus_message_byte_order_get_type()) }
818    }
819}
820
821impl glib::HasParamSpec for DBusMessageByteOrder {
822    type ParamSpec = glib::ParamSpecEnum;
823    type SetValue = Self;
824    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
825
826    fn param_spec_builder() -> Self::BuilderFn {
827        Self::ParamSpec::builder_with_default
828    }
829}
830
831impl glib::value::ValueType for DBusMessageByteOrder {
832    type Type = Self;
833}
834
835unsafe impl<'a> glib::value::FromValue<'a> for DBusMessageByteOrder {
836    type Checker = glib::value::GenericValueTypeChecker<Self>;
837
838    #[inline]
839    unsafe fn from_value(value: &'a glib::Value) -> Self {
840        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
841    }
842}
843
844impl ToValue for DBusMessageByteOrder {
845    #[inline]
846    fn to_value(&self) -> glib::Value {
847        let mut value = glib::Value::for_value_type::<Self>();
848        unsafe {
849            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
850        }
851        value
852    }
853
854    #[inline]
855    fn value_type(&self) -> glib::Type {
856        Self::static_type()
857    }
858}
859
860impl From<DBusMessageByteOrder> for glib::Value {
861    #[inline]
862    fn from(v: DBusMessageByteOrder) -> Self {
863        ToValue::to_value(&v)
864    }
865}
866
867/// Header fields used in #GDBusMessage.
868#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
869#[non_exhaustive]
870#[doc(alias = "GDBusMessageHeaderField")]
871pub enum DBusMessageHeaderField {
872    /// Not a valid header field.
873    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_INVALID")]
874    Invalid,
875    /// The object path.
876    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_PATH")]
877    Path,
878    /// The interface name.
879    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE")]
880    Interface,
881    /// The method or signal name.
882    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_MEMBER")]
883    Member,
884    /// The name of the error that occurred.
885    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME")]
886    ErrorName,
887    /// The serial number the message is a reply to.
888    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL")]
889    ReplySerial,
890    /// The name the message is intended for.
891    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION")]
892    Destination,
893    /// Unique name of the sender of the message (filled in by the bus).
894    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_SENDER")]
895    Sender,
896    /// The signature of the message body.
897    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE")]
898    Signature,
899    /// The number of UNIX file descriptors that accompany the message.
900    #[doc(alias = "G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS")]
901    NumUnixFds,
902    #[doc(hidden)]
903    __Unknown(i32),
904}
905
906#[doc(hidden)]
907impl IntoGlib for DBusMessageHeaderField {
908    type GlibType = ffi::GDBusMessageHeaderField;
909
910    #[inline]
911    fn into_glib(self) -> ffi::GDBusMessageHeaderField {
912        match self {
913            Self::Invalid => ffi::G_DBUS_MESSAGE_HEADER_FIELD_INVALID,
914            Self::Path => ffi::G_DBUS_MESSAGE_HEADER_FIELD_PATH,
915            Self::Interface => ffi::G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE,
916            Self::Member => ffi::G_DBUS_MESSAGE_HEADER_FIELD_MEMBER,
917            Self::ErrorName => ffi::G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME,
918            Self::ReplySerial => ffi::G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL,
919            Self::Destination => ffi::G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION,
920            Self::Sender => ffi::G_DBUS_MESSAGE_HEADER_FIELD_SENDER,
921            Self::Signature => ffi::G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE,
922            Self::NumUnixFds => ffi::G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS,
923            Self::__Unknown(value) => value,
924        }
925    }
926}
927
928#[doc(hidden)]
929impl FromGlib<ffi::GDBusMessageHeaderField> for DBusMessageHeaderField {
930    #[inline]
931    unsafe fn from_glib(value: ffi::GDBusMessageHeaderField) -> Self {
932        match value {
933            ffi::G_DBUS_MESSAGE_HEADER_FIELD_INVALID => Self::Invalid,
934            ffi::G_DBUS_MESSAGE_HEADER_FIELD_PATH => Self::Path,
935            ffi::G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE => Self::Interface,
936            ffi::G_DBUS_MESSAGE_HEADER_FIELD_MEMBER => Self::Member,
937            ffi::G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME => Self::ErrorName,
938            ffi::G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL => Self::ReplySerial,
939            ffi::G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION => Self::Destination,
940            ffi::G_DBUS_MESSAGE_HEADER_FIELD_SENDER => Self::Sender,
941            ffi::G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE => Self::Signature,
942            ffi::G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS => Self::NumUnixFds,
943            value => Self::__Unknown(value),
944        }
945    }
946}
947
948impl StaticType for DBusMessageHeaderField {
949    #[inline]
950    #[doc(alias = "g_dbus_message_header_field_get_type")]
951    fn static_type() -> glib::Type {
952        unsafe { from_glib(ffi::g_dbus_message_header_field_get_type()) }
953    }
954}
955
956impl glib::HasParamSpec for DBusMessageHeaderField {
957    type ParamSpec = glib::ParamSpecEnum;
958    type SetValue = Self;
959    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
960
961    fn param_spec_builder() -> Self::BuilderFn {
962        Self::ParamSpec::builder_with_default
963    }
964}
965
966impl glib::value::ValueType for DBusMessageHeaderField {
967    type Type = Self;
968}
969
970unsafe impl<'a> glib::value::FromValue<'a> for DBusMessageHeaderField {
971    type Checker = glib::value::GenericValueTypeChecker<Self>;
972
973    #[inline]
974    unsafe fn from_value(value: &'a glib::Value) -> Self {
975        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
976    }
977}
978
979impl ToValue for DBusMessageHeaderField {
980    #[inline]
981    fn to_value(&self) -> glib::Value {
982        let mut value = glib::Value::for_value_type::<Self>();
983        unsafe {
984            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
985        }
986        value
987    }
988
989    #[inline]
990    fn value_type(&self) -> glib::Type {
991        Self::static_type()
992    }
993}
994
995impl From<DBusMessageHeaderField> for glib::Value {
996    #[inline]
997    fn from(v: DBusMessageHeaderField) -> Self {
998        ToValue::to_value(&v)
999    }
1000}
1001
1002/// Message types used in #GDBusMessage.
1003#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1004#[non_exhaustive]
1005#[doc(alias = "GDBusMessageType")]
1006pub enum DBusMessageType {
1007    /// Message is of invalid type.
1008    #[doc(alias = "G_DBUS_MESSAGE_TYPE_INVALID")]
1009    Invalid,
1010    /// Method call.
1011    #[doc(alias = "G_DBUS_MESSAGE_TYPE_METHOD_CALL")]
1012    MethodCall,
1013    /// Method reply.
1014    #[doc(alias = "G_DBUS_MESSAGE_TYPE_METHOD_RETURN")]
1015    MethodReturn,
1016    /// Error reply.
1017    #[doc(alias = "G_DBUS_MESSAGE_TYPE_ERROR")]
1018    Error,
1019    /// Signal emission.
1020    #[doc(alias = "G_DBUS_MESSAGE_TYPE_SIGNAL")]
1021    Signal,
1022    #[doc(hidden)]
1023    __Unknown(i32),
1024}
1025
1026#[doc(hidden)]
1027impl IntoGlib for DBusMessageType {
1028    type GlibType = ffi::GDBusMessageType;
1029
1030    #[inline]
1031    fn into_glib(self) -> ffi::GDBusMessageType {
1032        match self {
1033            Self::Invalid => ffi::G_DBUS_MESSAGE_TYPE_INVALID,
1034            Self::MethodCall => ffi::G_DBUS_MESSAGE_TYPE_METHOD_CALL,
1035            Self::MethodReturn => ffi::G_DBUS_MESSAGE_TYPE_METHOD_RETURN,
1036            Self::Error => ffi::G_DBUS_MESSAGE_TYPE_ERROR,
1037            Self::Signal => ffi::G_DBUS_MESSAGE_TYPE_SIGNAL,
1038            Self::__Unknown(value) => value,
1039        }
1040    }
1041}
1042
1043#[doc(hidden)]
1044impl FromGlib<ffi::GDBusMessageType> for DBusMessageType {
1045    #[inline]
1046    unsafe fn from_glib(value: ffi::GDBusMessageType) -> Self {
1047        match value {
1048            ffi::G_DBUS_MESSAGE_TYPE_INVALID => Self::Invalid,
1049            ffi::G_DBUS_MESSAGE_TYPE_METHOD_CALL => Self::MethodCall,
1050            ffi::G_DBUS_MESSAGE_TYPE_METHOD_RETURN => Self::MethodReturn,
1051            ffi::G_DBUS_MESSAGE_TYPE_ERROR => Self::Error,
1052            ffi::G_DBUS_MESSAGE_TYPE_SIGNAL => Self::Signal,
1053            value => Self::__Unknown(value),
1054        }
1055    }
1056}
1057
1058impl StaticType for DBusMessageType {
1059    #[inline]
1060    #[doc(alias = "g_dbus_message_type_get_type")]
1061    fn static_type() -> glib::Type {
1062        unsafe { from_glib(ffi::g_dbus_message_type_get_type()) }
1063    }
1064}
1065
1066impl glib::HasParamSpec for DBusMessageType {
1067    type ParamSpec = glib::ParamSpecEnum;
1068    type SetValue = Self;
1069    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1070
1071    fn param_spec_builder() -> Self::BuilderFn {
1072        Self::ParamSpec::builder_with_default
1073    }
1074}
1075
1076impl glib::value::ValueType for DBusMessageType {
1077    type Type = Self;
1078}
1079
1080unsafe impl<'a> glib::value::FromValue<'a> for DBusMessageType {
1081    type Checker = glib::value::GenericValueTypeChecker<Self>;
1082
1083    #[inline]
1084    unsafe fn from_value(value: &'a glib::Value) -> Self {
1085        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1086    }
1087}
1088
1089impl ToValue for DBusMessageType {
1090    #[inline]
1091    fn to_value(&self) -> glib::Value {
1092        let mut value = glib::Value::for_value_type::<Self>();
1093        unsafe {
1094            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1095        }
1096        value
1097    }
1098
1099    #[inline]
1100    fn value_type(&self) -> glib::Type {
1101        Self::static_type()
1102    }
1103}
1104
1105impl From<DBusMessageType> for glib::Value {
1106    #[inline]
1107    fn from(v: DBusMessageType) -> Self {
1108        ToValue::to_value(&v)
1109    }
1110}
1111
1112/// #GDataStreamByteOrder is used to ensure proper endianness of streaming data sources
1113/// across various machine architectures.
1114#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1115#[non_exhaustive]
1116#[doc(alias = "GDataStreamByteOrder")]
1117pub enum DataStreamByteOrder {
1118    /// Selects Big Endian byte order.
1119    #[doc(alias = "G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN")]
1120    BigEndian,
1121    /// Selects Little Endian byte order.
1122    #[doc(alias = "G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN")]
1123    LittleEndian,
1124    /// Selects endianness based on host machine's architecture.
1125    #[doc(alias = "G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN")]
1126    HostEndian,
1127    #[doc(hidden)]
1128    __Unknown(i32),
1129}
1130
1131#[doc(hidden)]
1132impl IntoGlib for DataStreamByteOrder {
1133    type GlibType = ffi::GDataStreamByteOrder;
1134
1135    #[inline]
1136    fn into_glib(self) -> ffi::GDataStreamByteOrder {
1137        match self {
1138            Self::BigEndian => ffi::G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN,
1139            Self::LittleEndian => ffi::G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN,
1140            Self::HostEndian => ffi::G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN,
1141            Self::__Unknown(value) => value,
1142        }
1143    }
1144}
1145
1146#[doc(hidden)]
1147impl FromGlib<ffi::GDataStreamByteOrder> for DataStreamByteOrder {
1148    #[inline]
1149    unsafe fn from_glib(value: ffi::GDataStreamByteOrder) -> Self {
1150        match value {
1151            ffi::G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN => Self::BigEndian,
1152            ffi::G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN => Self::LittleEndian,
1153            ffi::G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN => Self::HostEndian,
1154            value => Self::__Unknown(value),
1155        }
1156    }
1157}
1158
1159impl StaticType for DataStreamByteOrder {
1160    #[inline]
1161    #[doc(alias = "g_data_stream_byte_order_get_type")]
1162    fn static_type() -> glib::Type {
1163        unsafe { from_glib(ffi::g_data_stream_byte_order_get_type()) }
1164    }
1165}
1166
1167impl glib::HasParamSpec for DataStreamByteOrder {
1168    type ParamSpec = glib::ParamSpecEnum;
1169    type SetValue = Self;
1170    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1171
1172    fn param_spec_builder() -> Self::BuilderFn {
1173        Self::ParamSpec::builder_with_default
1174    }
1175}
1176
1177impl glib::value::ValueType for DataStreamByteOrder {
1178    type Type = Self;
1179}
1180
1181unsafe impl<'a> glib::value::FromValue<'a> for DataStreamByteOrder {
1182    type Checker = glib::value::GenericValueTypeChecker<Self>;
1183
1184    #[inline]
1185    unsafe fn from_value(value: &'a glib::Value) -> Self {
1186        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1187    }
1188}
1189
1190impl ToValue for DataStreamByteOrder {
1191    #[inline]
1192    fn to_value(&self) -> glib::Value {
1193        let mut value = glib::Value::for_value_type::<Self>();
1194        unsafe {
1195            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1196        }
1197        value
1198    }
1199
1200    #[inline]
1201    fn value_type(&self) -> glib::Type {
1202        Self::static_type()
1203    }
1204}
1205
1206impl From<DataStreamByteOrder> for glib::Value {
1207    #[inline]
1208    fn from(v: DataStreamByteOrder) -> Self {
1209        ToValue::to_value(&v)
1210    }
1211}
1212
1213/// #GDataStreamNewlineType is used when checking for or setting the line endings for a given file.
1214#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1215#[non_exhaustive]
1216#[doc(alias = "GDataStreamNewlineType")]
1217pub enum DataStreamNewlineType {
1218    /// Selects "LF" line endings, common on most modern UNIX platforms.
1219    #[doc(alias = "G_DATA_STREAM_NEWLINE_TYPE_LF")]
1220    Lf,
1221    /// Selects "CR" line endings.
1222    #[doc(alias = "G_DATA_STREAM_NEWLINE_TYPE_CR")]
1223    Cr,
1224    /// Selects "CR, LF" line ending, common on Microsoft Windows.
1225    #[doc(alias = "G_DATA_STREAM_NEWLINE_TYPE_CR_LF")]
1226    CrLf,
1227    /// Automatically try to handle any line ending type.
1228    #[doc(alias = "G_DATA_STREAM_NEWLINE_TYPE_ANY")]
1229    Any,
1230    #[doc(hidden)]
1231    __Unknown(i32),
1232}
1233
1234#[doc(hidden)]
1235impl IntoGlib for DataStreamNewlineType {
1236    type GlibType = ffi::GDataStreamNewlineType;
1237
1238    #[inline]
1239    fn into_glib(self) -> ffi::GDataStreamNewlineType {
1240        match self {
1241            Self::Lf => ffi::G_DATA_STREAM_NEWLINE_TYPE_LF,
1242            Self::Cr => ffi::G_DATA_STREAM_NEWLINE_TYPE_CR,
1243            Self::CrLf => ffi::G_DATA_STREAM_NEWLINE_TYPE_CR_LF,
1244            Self::Any => ffi::G_DATA_STREAM_NEWLINE_TYPE_ANY,
1245            Self::__Unknown(value) => value,
1246        }
1247    }
1248}
1249
1250#[doc(hidden)]
1251impl FromGlib<ffi::GDataStreamNewlineType> for DataStreamNewlineType {
1252    #[inline]
1253    unsafe fn from_glib(value: ffi::GDataStreamNewlineType) -> Self {
1254        match value {
1255            ffi::G_DATA_STREAM_NEWLINE_TYPE_LF => Self::Lf,
1256            ffi::G_DATA_STREAM_NEWLINE_TYPE_CR => Self::Cr,
1257            ffi::G_DATA_STREAM_NEWLINE_TYPE_CR_LF => Self::CrLf,
1258            ffi::G_DATA_STREAM_NEWLINE_TYPE_ANY => Self::Any,
1259            value => Self::__Unknown(value),
1260        }
1261    }
1262}
1263
1264impl StaticType for DataStreamNewlineType {
1265    #[inline]
1266    #[doc(alias = "g_data_stream_newline_type_get_type")]
1267    fn static_type() -> glib::Type {
1268        unsafe { from_glib(ffi::g_data_stream_newline_type_get_type()) }
1269    }
1270}
1271
1272impl glib::HasParamSpec for DataStreamNewlineType {
1273    type ParamSpec = glib::ParamSpecEnum;
1274    type SetValue = Self;
1275    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1276
1277    fn param_spec_builder() -> Self::BuilderFn {
1278        Self::ParamSpec::builder_with_default
1279    }
1280}
1281
1282impl glib::value::ValueType for DataStreamNewlineType {
1283    type Type = Self;
1284}
1285
1286unsafe impl<'a> glib::value::FromValue<'a> for DataStreamNewlineType {
1287    type Checker = glib::value::GenericValueTypeChecker<Self>;
1288
1289    #[inline]
1290    unsafe fn from_value(value: &'a glib::Value) -> Self {
1291        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1292    }
1293}
1294
1295impl ToValue for DataStreamNewlineType {
1296    #[inline]
1297    fn to_value(&self) -> glib::Value {
1298        let mut value = glib::Value::for_value_type::<Self>();
1299        unsafe {
1300            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1301        }
1302        value
1303    }
1304
1305    #[inline]
1306    fn value_type(&self) -> glib::Type {
1307        Self::static_type()
1308    }
1309}
1310
1311impl From<DataStreamNewlineType> for glib::Value {
1312    #[inline]
1313    fn from(v: DataStreamNewlineType) -> Self {
1314        ToValue::to_value(&v)
1315    }
1316}
1317
1318/// Enumeration describing how a drive can be started/stopped.
1319#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1320#[non_exhaustive]
1321#[doc(alias = "GDriveStartStopType")]
1322pub enum DriveStartStopType {
1323    /// Unknown or drive doesn't support
1324    ///    start/stop.
1325    #[doc(alias = "G_DRIVE_START_STOP_TYPE_UNKNOWN")]
1326    Unknown,
1327    /// The stop method will physically
1328    ///    shut down the drive and e.g. power down the port the drive is
1329    ///    attached to.
1330    #[doc(alias = "G_DRIVE_START_STOP_TYPE_SHUTDOWN")]
1331    Shutdown,
1332    /// The start/stop methods are used
1333    ///    for connecting/disconnect to the drive over the network.
1334    #[doc(alias = "G_DRIVE_START_STOP_TYPE_NETWORK")]
1335    Network,
1336    /// The start/stop methods will
1337    ///    assemble/disassemble a virtual drive from several physical
1338    ///    drives.
1339    #[doc(alias = "G_DRIVE_START_STOP_TYPE_MULTIDISK")]
1340    Multidisk,
1341    /// The start/stop methods will
1342    ///    unlock/lock the disk (for example using the ATA `SECURITY UNLOCK
1343    ///    DEVICE` command)
1344    #[doc(alias = "G_DRIVE_START_STOP_TYPE_PASSWORD")]
1345    Password,
1346    #[doc(hidden)]
1347    __Unknown(i32),
1348}
1349
1350#[doc(hidden)]
1351impl IntoGlib for DriveStartStopType {
1352    type GlibType = ffi::GDriveStartStopType;
1353
1354    #[inline]
1355    fn into_glib(self) -> ffi::GDriveStartStopType {
1356        match self {
1357            Self::Unknown => ffi::G_DRIVE_START_STOP_TYPE_UNKNOWN,
1358            Self::Shutdown => ffi::G_DRIVE_START_STOP_TYPE_SHUTDOWN,
1359            Self::Network => ffi::G_DRIVE_START_STOP_TYPE_NETWORK,
1360            Self::Multidisk => ffi::G_DRIVE_START_STOP_TYPE_MULTIDISK,
1361            Self::Password => ffi::G_DRIVE_START_STOP_TYPE_PASSWORD,
1362            Self::__Unknown(value) => value,
1363        }
1364    }
1365}
1366
1367#[doc(hidden)]
1368impl FromGlib<ffi::GDriveStartStopType> for DriveStartStopType {
1369    #[inline]
1370    unsafe fn from_glib(value: ffi::GDriveStartStopType) -> Self {
1371        match value {
1372            ffi::G_DRIVE_START_STOP_TYPE_UNKNOWN => Self::Unknown,
1373            ffi::G_DRIVE_START_STOP_TYPE_SHUTDOWN => Self::Shutdown,
1374            ffi::G_DRIVE_START_STOP_TYPE_NETWORK => Self::Network,
1375            ffi::G_DRIVE_START_STOP_TYPE_MULTIDISK => Self::Multidisk,
1376            ffi::G_DRIVE_START_STOP_TYPE_PASSWORD => Self::Password,
1377            value => Self::__Unknown(value),
1378        }
1379    }
1380}
1381
1382impl StaticType for DriveStartStopType {
1383    #[inline]
1384    #[doc(alias = "g_drive_start_stop_type_get_type")]
1385    fn static_type() -> glib::Type {
1386        unsafe { from_glib(ffi::g_drive_start_stop_type_get_type()) }
1387    }
1388}
1389
1390impl glib::HasParamSpec for DriveStartStopType {
1391    type ParamSpec = glib::ParamSpecEnum;
1392    type SetValue = Self;
1393    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1394
1395    fn param_spec_builder() -> Self::BuilderFn {
1396        Self::ParamSpec::builder_with_default
1397    }
1398}
1399
1400impl glib::value::ValueType for DriveStartStopType {
1401    type Type = Self;
1402}
1403
1404unsafe impl<'a> glib::value::FromValue<'a> for DriveStartStopType {
1405    type Checker = glib::value::GenericValueTypeChecker<Self>;
1406
1407    #[inline]
1408    unsafe fn from_value(value: &'a glib::Value) -> Self {
1409        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1410    }
1411}
1412
1413impl ToValue for DriveStartStopType {
1414    #[inline]
1415    fn to_value(&self) -> glib::Value {
1416        let mut value = glib::Value::for_value_type::<Self>();
1417        unsafe {
1418            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1419        }
1420        value
1421    }
1422
1423    #[inline]
1424    fn value_type(&self) -> glib::Type {
1425        Self::static_type()
1426    }
1427}
1428
1429impl From<DriveStartStopType> for glib::Value {
1430    #[inline]
1431    fn from(v: DriveStartStopType) -> Self {
1432        ToValue::to_value(&v)
1433    }
1434}
1435
1436/// Possible values of Explicit Congestion Notification code points.
1437///
1438/// These appear in `TOS` (IPv4) or `TCLASS` (IPv6) packet headers and
1439/// are described in [RFC 3168](https://www.rfc-editor.org/rfc/rfc3168#section-5).
1440#[cfg(feature = "v2_88")]
1441#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
1442#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1443#[non_exhaustive]
1444#[doc(alias = "GEcnCodePoint")]
1445pub enum EcnCodePoint {
1446    /// Not ECN-capable transport
1447    #[doc(alias = "G_ECN_NO_ECN")]
1448    NoEcn,
1449    /// ECN Capable Transport(1)
1450    #[doc(alias = "G_ECN_ECT_1")]
1451    Ect1,
1452    /// ECN Capable Transport(0)
1453    #[doc(alias = "G_ECN_ECT_0")]
1454    Ect0,
1455    /// Congestion Experienced
1456    #[doc(alias = "G_ECN_ECT_CE")]
1457    EctCe,
1458    #[doc(hidden)]
1459    __Unknown(i32),
1460}
1461
1462#[cfg(feature = "v2_88")]
1463#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
1464#[doc(hidden)]
1465impl IntoGlib for EcnCodePoint {
1466    type GlibType = ffi::GEcnCodePoint;
1467
1468    #[inline]
1469    fn into_glib(self) -> ffi::GEcnCodePoint {
1470        match self {
1471            Self::NoEcn => ffi::G_ECN_NO_ECN,
1472            Self::Ect1 => ffi::G_ECN_ECT_1,
1473            Self::Ect0 => ffi::G_ECN_ECT_0,
1474            Self::EctCe => ffi::G_ECN_ECT_CE,
1475            Self::__Unknown(value) => value,
1476        }
1477    }
1478}
1479
1480#[cfg(feature = "v2_88")]
1481#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
1482#[doc(hidden)]
1483impl FromGlib<ffi::GEcnCodePoint> for EcnCodePoint {
1484    #[inline]
1485    unsafe fn from_glib(value: ffi::GEcnCodePoint) -> Self {
1486        match value {
1487            ffi::G_ECN_NO_ECN => Self::NoEcn,
1488            ffi::G_ECN_ECT_1 => Self::Ect1,
1489            ffi::G_ECN_ECT_0 => Self::Ect0,
1490            ffi::G_ECN_ECT_CE => Self::EctCe,
1491            value => Self::__Unknown(value),
1492        }
1493    }
1494}
1495
1496#[cfg(feature = "v2_88")]
1497#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
1498impl StaticType for EcnCodePoint {
1499    #[inline]
1500    #[doc(alias = "g_ecn_code_point_get_type")]
1501    fn static_type() -> glib::Type {
1502        unsafe { from_glib(ffi::g_ecn_code_point_get_type()) }
1503    }
1504}
1505
1506#[cfg(feature = "v2_88")]
1507#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
1508impl glib::HasParamSpec for EcnCodePoint {
1509    type ParamSpec = glib::ParamSpecEnum;
1510    type SetValue = Self;
1511    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1512
1513    fn param_spec_builder() -> Self::BuilderFn {
1514        Self::ParamSpec::builder_with_default
1515    }
1516}
1517
1518#[cfg(feature = "v2_88")]
1519#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
1520impl glib::value::ValueType for EcnCodePoint {
1521    type Type = Self;
1522}
1523
1524#[cfg(feature = "v2_88")]
1525#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
1526unsafe impl<'a> glib::value::FromValue<'a> for EcnCodePoint {
1527    type Checker = glib::value::GenericValueTypeChecker<Self>;
1528
1529    #[inline]
1530    unsafe fn from_value(value: &'a glib::Value) -> Self {
1531        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1532    }
1533}
1534
1535#[cfg(feature = "v2_88")]
1536#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
1537impl ToValue for EcnCodePoint {
1538    #[inline]
1539    fn to_value(&self) -> glib::Value {
1540        let mut value = glib::Value::for_value_type::<Self>();
1541        unsafe {
1542            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1543        }
1544        value
1545    }
1546
1547    #[inline]
1548    fn value_type(&self) -> glib::Type {
1549        Self::static_type()
1550    }
1551}
1552
1553#[cfg(feature = "v2_88")]
1554#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
1555impl From<EcnCodePoint> for glib::Value {
1556    #[inline]
1557    fn from(v: EcnCodePoint) -> Self {
1558        ToValue::to_value(&v)
1559    }
1560}
1561
1562/// GEmblemOrigin is used to add information about the origin of the emblem
1563/// to #GEmblem.
1564#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1565#[non_exhaustive]
1566#[doc(alias = "GEmblemOrigin")]
1567pub enum EmblemOrigin {
1568    /// Emblem of unknown origin
1569    #[doc(alias = "G_EMBLEM_ORIGIN_UNKNOWN")]
1570    Unknown,
1571    /// Emblem adds device-specific information
1572    #[doc(alias = "G_EMBLEM_ORIGIN_DEVICE")]
1573    Device,
1574    /// Emblem depicts live metadata, such as "readonly"
1575    #[doc(alias = "G_EMBLEM_ORIGIN_LIVEMETADATA")]
1576    Livemetadata,
1577    /// Emblem comes from a user-defined tag, e.g. set by nautilus (in the future)
1578    #[doc(alias = "G_EMBLEM_ORIGIN_TAG")]
1579    Tag,
1580    #[doc(hidden)]
1581    __Unknown(i32),
1582}
1583
1584#[doc(hidden)]
1585impl IntoGlib for EmblemOrigin {
1586    type GlibType = ffi::GEmblemOrigin;
1587
1588    #[inline]
1589    fn into_glib(self) -> ffi::GEmblemOrigin {
1590        match self {
1591            Self::Unknown => ffi::G_EMBLEM_ORIGIN_UNKNOWN,
1592            Self::Device => ffi::G_EMBLEM_ORIGIN_DEVICE,
1593            Self::Livemetadata => ffi::G_EMBLEM_ORIGIN_LIVEMETADATA,
1594            Self::Tag => ffi::G_EMBLEM_ORIGIN_TAG,
1595            Self::__Unknown(value) => value,
1596        }
1597    }
1598}
1599
1600#[doc(hidden)]
1601impl FromGlib<ffi::GEmblemOrigin> for EmblemOrigin {
1602    #[inline]
1603    unsafe fn from_glib(value: ffi::GEmblemOrigin) -> Self {
1604        match value {
1605            ffi::G_EMBLEM_ORIGIN_UNKNOWN => Self::Unknown,
1606            ffi::G_EMBLEM_ORIGIN_DEVICE => Self::Device,
1607            ffi::G_EMBLEM_ORIGIN_LIVEMETADATA => Self::Livemetadata,
1608            ffi::G_EMBLEM_ORIGIN_TAG => Self::Tag,
1609            value => Self::__Unknown(value),
1610        }
1611    }
1612}
1613
1614impl StaticType for EmblemOrigin {
1615    #[inline]
1616    #[doc(alias = "g_emblem_origin_get_type")]
1617    fn static_type() -> glib::Type {
1618        unsafe { from_glib(ffi::g_emblem_origin_get_type()) }
1619    }
1620}
1621
1622impl glib::HasParamSpec for EmblemOrigin {
1623    type ParamSpec = glib::ParamSpecEnum;
1624    type SetValue = Self;
1625    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1626
1627    fn param_spec_builder() -> Self::BuilderFn {
1628        Self::ParamSpec::builder_with_default
1629    }
1630}
1631
1632impl glib::value::ValueType for EmblemOrigin {
1633    type Type = Self;
1634}
1635
1636unsafe impl<'a> glib::value::FromValue<'a> for EmblemOrigin {
1637    type Checker = glib::value::GenericValueTypeChecker<Self>;
1638
1639    #[inline]
1640    unsafe fn from_value(value: &'a glib::Value) -> Self {
1641        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1642    }
1643}
1644
1645impl ToValue for EmblemOrigin {
1646    #[inline]
1647    fn to_value(&self) -> glib::Value {
1648        let mut value = glib::Value::for_value_type::<Self>();
1649        unsafe {
1650            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1651        }
1652        value
1653    }
1654
1655    #[inline]
1656    fn value_type(&self) -> glib::Type {
1657        Self::static_type()
1658    }
1659}
1660
1661impl From<EmblemOrigin> for glib::Value {
1662    #[inline]
1663    fn from(v: EmblemOrigin) -> Self {
1664        ToValue::to_value(&v)
1665    }
1666}
1667
1668/// Used by g_file_set_attributes_from_info() when setting file attributes.
1669#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1670#[non_exhaustive]
1671#[doc(alias = "GFileAttributeStatus")]
1672pub enum FileAttributeStatus {
1673    /// Attribute value is unset (empty).
1674    #[doc(alias = "G_FILE_ATTRIBUTE_STATUS_UNSET")]
1675    Unset,
1676    /// Attribute value is set.
1677    #[doc(alias = "G_FILE_ATTRIBUTE_STATUS_SET")]
1678    Set,
1679    /// Indicates an error in setting the value.
1680    #[doc(alias = "G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING")]
1681    ErrorSetting,
1682    #[doc(hidden)]
1683    __Unknown(i32),
1684}
1685
1686#[doc(hidden)]
1687impl IntoGlib for FileAttributeStatus {
1688    type GlibType = ffi::GFileAttributeStatus;
1689
1690    #[inline]
1691    fn into_glib(self) -> ffi::GFileAttributeStatus {
1692        match self {
1693            Self::Unset => ffi::G_FILE_ATTRIBUTE_STATUS_UNSET,
1694            Self::Set => ffi::G_FILE_ATTRIBUTE_STATUS_SET,
1695            Self::ErrorSetting => ffi::G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING,
1696            Self::__Unknown(value) => value,
1697        }
1698    }
1699}
1700
1701#[doc(hidden)]
1702impl FromGlib<ffi::GFileAttributeStatus> for FileAttributeStatus {
1703    #[inline]
1704    unsafe fn from_glib(value: ffi::GFileAttributeStatus) -> Self {
1705        match value {
1706            ffi::G_FILE_ATTRIBUTE_STATUS_UNSET => Self::Unset,
1707            ffi::G_FILE_ATTRIBUTE_STATUS_SET => Self::Set,
1708            ffi::G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING => Self::ErrorSetting,
1709            value => Self::__Unknown(value),
1710        }
1711    }
1712}
1713
1714impl StaticType for FileAttributeStatus {
1715    #[inline]
1716    #[doc(alias = "g_file_attribute_status_get_type")]
1717    fn static_type() -> glib::Type {
1718        unsafe { from_glib(ffi::g_file_attribute_status_get_type()) }
1719    }
1720}
1721
1722impl glib::HasParamSpec for FileAttributeStatus {
1723    type ParamSpec = glib::ParamSpecEnum;
1724    type SetValue = Self;
1725    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1726
1727    fn param_spec_builder() -> Self::BuilderFn {
1728        Self::ParamSpec::builder_with_default
1729    }
1730}
1731
1732impl glib::value::ValueType for FileAttributeStatus {
1733    type Type = Self;
1734}
1735
1736unsafe impl<'a> glib::value::FromValue<'a> for FileAttributeStatus {
1737    type Checker = glib::value::GenericValueTypeChecker<Self>;
1738
1739    #[inline]
1740    unsafe fn from_value(value: &'a glib::Value) -> Self {
1741        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1742    }
1743}
1744
1745impl ToValue for FileAttributeStatus {
1746    #[inline]
1747    fn to_value(&self) -> glib::Value {
1748        let mut value = glib::Value::for_value_type::<Self>();
1749        unsafe {
1750            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1751        }
1752        value
1753    }
1754
1755    #[inline]
1756    fn value_type(&self) -> glib::Type {
1757        Self::static_type()
1758    }
1759}
1760
1761impl From<FileAttributeStatus> for glib::Value {
1762    #[inline]
1763    fn from(v: FileAttributeStatus) -> Self {
1764        ToValue::to_value(&v)
1765    }
1766}
1767
1768/// The data types for file attributes.
1769#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1770#[non_exhaustive]
1771#[doc(alias = "GFileAttributeType")]
1772pub enum FileAttributeType {
1773    /// indicates an invalid or uninitialized type.
1774    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_INVALID")]
1775    Invalid,
1776    /// a null terminated UTF8 string.
1777    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_STRING")]
1778    String,
1779    /// a zero terminated string of non-zero bytes.
1780    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_BYTE_STRING")]
1781    ByteString,
1782    /// a boolean value.
1783    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_BOOLEAN")]
1784    Boolean,
1785    /// an unsigned 4-byte/32-bit integer.
1786    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_UINT32")]
1787    Uint32,
1788    /// a signed 4-byte/32-bit integer.
1789    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_INT32")]
1790    Int32,
1791    /// an unsigned 8-byte/64-bit integer.
1792    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_UINT64")]
1793    Uint64,
1794    /// a signed 8-byte/64-bit integer.
1795    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_INT64")]
1796    Int64,
1797    /// a #GObject.
1798    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_OBJECT")]
1799    Object,
1800    /// a [`None`] terminated char **. Since 2.22
1801    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_STRINGV")]
1802    Stringv,
1803    #[doc(hidden)]
1804    __Unknown(i32),
1805}
1806
1807#[doc(hidden)]
1808impl IntoGlib for FileAttributeType {
1809    type GlibType = ffi::GFileAttributeType;
1810
1811    #[inline]
1812    fn into_glib(self) -> ffi::GFileAttributeType {
1813        match self {
1814            Self::Invalid => ffi::G_FILE_ATTRIBUTE_TYPE_INVALID,
1815            Self::String => ffi::G_FILE_ATTRIBUTE_TYPE_STRING,
1816            Self::ByteString => ffi::G_FILE_ATTRIBUTE_TYPE_BYTE_STRING,
1817            Self::Boolean => ffi::G_FILE_ATTRIBUTE_TYPE_BOOLEAN,
1818            Self::Uint32 => ffi::G_FILE_ATTRIBUTE_TYPE_UINT32,
1819            Self::Int32 => ffi::G_FILE_ATTRIBUTE_TYPE_INT32,
1820            Self::Uint64 => ffi::G_FILE_ATTRIBUTE_TYPE_UINT64,
1821            Self::Int64 => ffi::G_FILE_ATTRIBUTE_TYPE_INT64,
1822            Self::Object => ffi::G_FILE_ATTRIBUTE_TYPE_OBJECT,
1823            Self::Stringv => ffi::G_FILE_ATTRIBUTE_TYPE_STRINGV,
1824            Self::__Unknown(value) => value,
1825        }
1826    }
1827}
1828
1829#[doc(hidden)]
1830impl FromGlib<ffi::GFileAttributeType> for FileAttributeType {
1831    #[inline]
1832    unsafe fn from_glib(value: ffi::GFileAttributeType) -> Self {
1833        match value {
1834            ffi::G_FILE_ATTRIBUTE_TYPE_INVALID => Self::Invalid,
1835            ffi::G_FILE_ATTRIBUTE_TYPE_STRING => Self::String,
1836            ffi::G_FILE_ATTRIBUTE_TYPE_BYTE_STRING => Self::ByteString,
1837            ffi::G_FILE_ATTRIBUTE_TYPE_BOOLEAN => Self::Boolean,
1838            ffi::G_FILE_ATTRIBUTE_TYPE_UINT32 => Self::Uint32,
1839            ffi::G_FILE_ATTRIBUTE_TYPE_INT32 => Self::Int32,
1840            ffi::G_FILE_ATTRIBUTE_TYPE_UINT64 => Self::Uint64,
1841            ffi::G_FILE_ATTRIBUTE_TYPE_INT64 => Self::Int64,
1842            ffi::G_FILE_ATTRIBUTE_TYPE_OBJECT => Self::Object,
1843            ffi::G_FILE_ATTRIBUTE_TYPE_STRINGV => Self::Stringv,
1844            value => Self::__Unknown(value),
1845        }
1846    }
1847}
1848
1849impl StaticType for FileAttributeType {
1850    #[inline]
1851    #[doc(alias = "g_file_attribute_type_get_type")]
1852    fn static_type() -> glib::Type {
1853        unsafe { from_glib(ffi::g_file_attribute_type_get_type()) }
1854    }
1855}
1856
1857impl glib::HasParamSpec for FileAttributeType {
1858    type ParamSpec = glib::ParamSpecEnum;
1859    type SetValue = Self;
1860    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1861
1862    fn param_spec_builder() -> Self::BuilderFn {
1863        Self::ParamSpec::builder_with_default
1864    }
1865}
1866
1867impl glib::value::ValueType for FileAttributeType {
1868    type Type = Self;
1869}
1870
1871unsafe impl<'a> glib::value::FromValue<'a> for FileAttributeType {
1872    type Checker = glib::value::GenericValueTypeChecker<Self>;
1873
1874    #[inline]
1875    unsafe fn from_value(value: &'a glib::Value) -> Self {
1876        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
1877    }
1878}
1879
1880impl ToValue for FileAttributeType {
1881    #[inline]
1882    fn to_value(&self) -> glib::Value {
1883        let mut value = glib::Value::for_value_type::<Self>();
1884        unsafe {
1885            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1886        }
1887        value
1888    }
1889
1890    #[inline]
1891    fn value_type(&self) -> glib::Type {
1892        Self::static_type()
1893    }
1894}
1895
1896impl From<FileAttributeType> for glib::Value {
1897    #[inline]
1898    fn from(v: FileAttributeType) -> Self {
1899        ToValue::to_value(&v)
1900    }
1901}
1902
1903/// Specifies what type of event a monitor event is.
1904#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1905#[non_exhaustive]
1906#[doc(alias = "GFileMonitorEvent")]
1907pub enum FileMonitorEvent {
1908    /// a file changed.
1909    #[doc(alias = "G_FILE_MONITOR_EVENT_CHANGED")]
1910    Changed,
1911    /// a hint that this was probably the last change in a set of changes.
1912    #[doc(alias = "G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT")]
1913    ChangesDoneHint,
1914    /// a file was deleted.
1915    #[doc(alias = "G_FILE_MONITOR_EVENT_DELETED")]
1916    Deleted,
1917    /// a file was created.
1918    #[doc(alias = "G_FILE_MONITOR_EVENT_CREATED")]
1919    Created,
1920    /// a file attribute was changed.
1921    #[doc(alias = "G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED")]
1922    AttributeChanged,
1923    /// the file location will soon be unmounted.
1924    #[doc(alias = "G_FILE_MONITOR_EVENT_PRE_UNMOUNT")]
1925    PreUnmount,
1926    /// the file location was unmounted.
1927    #[doc(alias = "G_FILE_MONITOR_EVENT_UNMOUNTED")]
1928    Unmounted,
1929    /// the file was moved -- only sent if the
1930    ///   (deprecated) [`FileMonitorFlags::SEND_MOVED`][crate::FileMonitorFlags::SEND_MOVED] flag is set
1931    #[doc(alias = "G_FILE_MONITOR_EVENT_MOVED")]
1932    Moved,
1933    /// the file was renamed within the
1934    ///   current directory -- only sent if the [`FileMonitorFlags::WATCH_MOVES`][crate::FileMonitorFlags::WATCH_MOVES]
1935    ///   flag is set.  Since: 2.46.
1936    #[doc(alias = "G_FILE_MONITOR_EVENT_RENAMED")]
1937    Renamed,
1938    /// the file was moved into the
1939    ///   monitored directory from another location -- only sent if the
1940    ///   [`FileMonitorFlags::WATCH_MOVES`][crate::FileMonitorFlags::WATCH_MOVES] flag is set.  Since: 2.46.
1941    #[doc(alias = "G_FILE_MONITOR_EVENT_MOVED_IN")]
1942    MovedIn,
1943    /// the file was moved out of the
1944    ///   monitored directory to another location -- only sent if the
1945    ///   [`FileMonitorFlags::WATCH_MOVES`][crate::FileMonitorFlags::WATCH_MOVES] flag is set.  Since: 2.46
1946    #[doc(alias = "G_FILE_MONITOR_EVENT_MOVED_OUT")]
1947    MovedOut,
1948    #[doc(hidden)]
1949    __Unknown(i32),
1950}
1951
1952#[doc(hidden)]
1953impl IntoGlib for FileMonitorEvent {
1954    type GlibType = ffi::GFileMonitorEvent;
1955
1956    #[inline]
1957    fn into_glib(self) -> ffi::GFileMonitorEvent {
1958        match self {
1959            Self::Changed => ffi::G_FILE_MONITOR_EVENT_CHANGED,
1960            Self::ChangesDoneHint => ffi::G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT,
1961            Self::Deleted => ffi::G_FILE_MONITOR_EVENT_DELETED,
1962            Self::Created => ffi::G_FILE_MONITOR_EVENT_CREATED,
1963            Self::AttributeChanged => ffi::G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED,
1964            Self::PreUnmount => ffi::G_FILE_MONITOR_EVENT_PRE_UNMOUNT,
1965            Self::Unmounted => ffi::G_FILE_MONITOR_EVENT_UNMOUNTED,
1966            Self::Moved => ffi::G_FILE_MONITOR_EVENT_MOVED,
1967            Self::Renamed => ffi::G_FILE_MONITOR_EVENT_RENAMED,
1968            Self::MovedIn => ffi::G_FILE_MONITOR_EVENT_MOVED_IN,
1969            Self::MovedOut => ffi::G_FILE_MONITOR_EVENT_MOVED_OUT,
1970            Self::__Unknown(value) => value,
1971        }
1972    }
1973}
1974
1975#[doc(hidden)]
1976impl FromGlib<ffi::GFileMonitorEvent> for FileMonitorEvent {
1977    #[inline]
1978    unsafe fn from_glib(value: ffi::GFileMonitorEvent) -> Self {
1979        match value {
1980            ffi::G_FILE_MONITOR_EVENT_CHANGED => Self::Changed,
1981            ffi::G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT => Self::ChangesDoneHint,
1982            ffi::G_FILE_MONITOR_EVENT_DELETED => Self::Deleted,
1983            ffi::G_FILE_MONITOR_EVENT_CREATED => Self::Created,
1984            ffi::G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED => Self::AttributeChanged,
1985            ffi::G_FILE_MONITOR_EVENT_PRE_UNMOUNT => Self::PreUnmount,
1986            ffi::G_FILE_MONITOR_EVENT_UNMOUNTED => Self::Unmounted,
1987            ffi::G_FILE_MONITOR_EVENT_MOVED => Self::Moved,
1988            ffi::G_FILE_MONITOR_EVENT_RENAMED => Self::Renamed,
1989            ffi::G_FILE_MONITOR_EVENT_MOVED_IN => Self::MovedIn,
1990            ffi::G_FILE_MONITOR_EVENT_MOVED_OUT => Self::MovedOut,
1991            value => Self::__Unknown(value),
1992        }
1993    }
1994}
1995
1996impl StaticType for FileMonitorEvent {
1997    #[inline]
1998    #[doc(alias = "g_file_monitor_event_get_type")]
1999    fn static_type() -> glib::Type {
2000        unsafe { from_glib(ffi::g_file_monitor_event_get_type()) }
2001    }
2002}
2003
2004impl glib::HasParamSpec for FileMonitorEvent {
2005    type ParamSpec = glib::ParamSpecEnum;
2006    type SetValue = Self;
2007    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2008
2009    fn param_spec_builder() -> Self::BuilderFn {
2010        Self::ParamSpec::builder_with_default
2011    }
2012}
2013
2014impl glib::value::ValueType for FileMonitorEvent {
2015    type Type = Self;
2016}
2017
2018unsafe impl<'a> glib::value::FromValue<'a> for FileMonitorEvent {
2019    type Checker = glib::value::GenericValueTypeChecker<Self>;
2020
2021    #[inline]
2022    unsafe fn from_value(value: &'a glib::Value) -> Self {
2023        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2024    }
2025}
2026
2027impl ToValue for FileMonitorEvent {
2028    #[inline]
2029    fn to_value(&self) -> glib::Value {
2030        let mut value = glib::Value::for_value_type::<Self>();
2031        unsafe {
2032            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2033        }
2034        value
2035    }
2036
2037    #[inline]
2038    fn value_type(&self) -> glib::Type {
2039        Self::static_type()
2040    }
2041}
2042
2043impl From<FileMonitorEvent> for glib::Value {
2044    #[inline]
2045    fn from(v: FileMonitorEvent) -> Self {
2046        ToValue::to_value(&v)
2047    }
2048}
2049
2050/// Indicates the file's on-disk type.
2051///
2052/// On Windows systems a file will never have [`SymbolicLink`][Self::SymbolicLink] type;
2053/// use #GFileInfo and [`FILE_ATTRIBUTE_STANDARD_IS_SYMLINK`][crate::FILE_ATTRIBUTE_STANDARD_IS_SYMLINK] to determine
2054/// whether a file is a symlink or not. This is due to the fact that NTFS does
2055/// not have a single filesystem object type for symbolic links - it has
2056/// files that symlink to files, and directories that symlink to directories.
2057/// #GFileType enumeration cannot precisely represent this important distinction,
2058/// which is why all Windows symlinks will continue to be reported as
2059/// [`Regular`][Self::Regular] or [`Directory`][Self::Directory].
2060#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2061#[non_exhaustive]
2062#[doc(alias = "GFileType")]
2063pub enum FileType {
2064    /// File's type is unknown.
2065    #[doc(alias = "G_FILE_TYPE_UNKNOWN")]
2066    Unknown,
2067    /// File handle represents a regular file.
2068    #[doc(alias = "G_FILE_TYPE_REGULAR")]
2069    Regular,
2070    /// File handle represents a directory.
2071    #[doc(alias = "G_FILE_TYPE_DIRECTORY")]
2072    Directory,
2073    /// File handle represents a symbolic link
2074    ///    (Unix systems).
2075    #[doc(alias = "G_FILE_TYPE_SYMBOLIC_LINK")]
2076    SymbolicLink,
2077    /// File is a "special" file, such as a socket, fifo,
2078    ///    block device, or character device.
2079    #[doc(alias = "G_FILE_TYPE_SPECIAL")]
2080    Special,
2081    /// File is a shortcut (Windows systems).
2082    #[doc(alias = "G_FILE_TYPE_SHORTCUT")]
2083    Shortcut,
2084    /// File is a mountable location.
2085    #[doc(alias = "G_FILE_TYPE_MOUNTABLE")]
2086    Mountable,
2087    #[doc(hidden)]
2088    __Unknown(i32),
2089}
2090
2091#[doc(hidden)]
2092impl IntoGlib for FileType {
2093    type GlibType = ffi::GFileType;
2094
2095    #[inline]
2096    fn into_glib(self) -> ffi::GFileType {
2097        match self {
2098            Self::Unknown => ffi::G_FILE_TYPE_UNKNOWN,
2099            Self::Regular => ffi::G_FILE_TYPE_REGULAR,
2100            Self::Directory => ffi::G_FILE_TYPE_DIRECTORY,
2101            Self::SymbolicLink => ffi::G_FILE_TYPE_SYMBOLIC_LINK,
2102            Self::Special => ffi::G_FILE_TYPE_SPECIAL,
2103            Self::Shortcut => ffi::G_FILE_TYPE_SHORTCUT,
2104            Self::Mountable => ffi::G_FILE_TYPE_MOUNTABLE,
2105            Self::__Unknown(value) => value,
2106        }
2107    }
2108}
2109
2110#[doc(hidden)]
2111impl FromGlib<ffi::GFileType> for FileType {
2112    #[inline]
2113    unsafe fn from_glib(value: ffi::GFileType) -> Self {
2114        match value {
2115            ffi::G_FILE_TYPE_UNKNOWN => Self::Unknown,
2116            ffi::G_FILE_TYPE_REGULAR => Self::Regular,
2117            ffi::G_FILE_TYPE_DIRECTORY => Self::Directory,
2118            ffi::G_FILE_TYPE_SYMBOLIC_LINK => Self::SymbolicLink,
2119            ffi::G_FILE_TYPE_SPECIAL => Self::Special,
2120            ffi::G_FILE_TYPE_SHORTCUT => Self::Shortcut,
2121            ffi::G_FILE_TYPE_MOUNTABLE => Self::Mountable,
2122            value => Self::__Unknown(value),
2123        }
2124    }
2125}
2126
2127impl StaticType for FileType {
2128    #[inline]
2129    #[doc(alias = "g_file_type_get_type")]
2130    fn static_type() -> glib::Type {
2131        unsafe { from_glib(ffi::g_file_type_get_type()) }
2132    }
2133}
2134
2135impl glib::HasParamSpec for FileType {
2136    type ParamSpec = glib::ParamSpecEnum;
2137    type SetValue = Self;
2138    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2139
2140    fn param_spec_builder() -> Self::BuilderFn {
2141        Self::ParamSpec::builder_with_default
2142    }
2143}
2144
2145impl glib::value::ValueType for FileType {
2146    type Type = Self;
2147}
2148
2149unsafe impl<'a> glib::value::FromValue<'a> for FileType {
2150    type Checker = glib::value::GenericValueTypeChecker<Self>;
2151
2152    #[inline]
2153    unsafe fn from_value(value: &'a glib::Value) -> Self {
2154        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2155    }
2156}
2157
2158impl ToValue for FileType {
2159    #[inline]
2160    fn to_value(&self) -> glib::Value {
2161        let mut value = glib::Value::for_value_type::<Self>();
2162        unsafe {
2163            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2164        }
2165        value
2166    }
2167
2168    #[inline]
2169    fn value_type(&self) -> glib::Type {
2170        Self::static_type()
2171    }
2172}
2173
2174impl From<FileType> for glib::Value {
2175    #[inline]
2176    fn from(v: FileType) -> Self {
2177        ToValue::to_value(&v)
2178    }
2179}
2180
2181/// Indicates a hint from the file system whether files should be
2182/// previewed in a file manager. Returned as the value of the key
2183/// [`FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW`][crate::FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW].
2184#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2185#[non_exhaustive]
2186#[doc(alias = "GFilesystemPreviewType")]
2187pub enum FilesystemPreviewType {
2188    /// Only preview files if user has explicitly requested it.
2189    #[doc(alias = "G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS")]
2190    IfAlways,
2191    /// Preview files if user has requested preview of "local" files.
2192    #[doc(alias = "G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL")]
2193    IfLocal,
2194    /// Never preview files.
2195    #[doc(alias = "G_FILESYSTEM_PREVIEW_TYPE_NEVER")]
2196    Never,
2197    #[doc(hidden)]
2198    __Unknown(i32),
2199}
2200
2201#[doc(hidden)]
2202impl IntoGlib for FilesystemPreviewType {
2203    type GlibType = ffi::GFilesystemPreviewType;
2204
2205    #[inline]
2206    fn into_glib(self) -> ffi::GFilesystemPreviewType {
2207        match self {
2208            Self::IfAlways => ffi::G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS,
2209            Self::IfLocal => ffi::G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL,
2210            Self::Never => ffi::G_FILESYSTEM_PREVIEW_TYPE_NEVER,
2211            Self::__Unknown(value) => value,
2212        }
2213    }
2214}
2215
2216#[doc(hidden)]
2217impl FromGlib<ffi::GFilesystemPreviewType> for FilesystemPreviewType {
2218    #[inline]
2219    unsafe fn from_glib(value: ffi::GFilesystemPreviewType) -> Self {
2220        match value {
2221            ffi::G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS => Self::IfAlways,
2222            ffi::G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL => Self::IfLocal,
2223            ffi::G_FILESYSTEM_PREVIEW_TYPE_NEVER => Self::Never,
2224            value => Self::__Unknown(value),
2225        }
2226    }
2227}
2228
2229impl StaticType for FilesystemPreviewType {
2230    #[inline]
2231    #[doc(alias = "g_filesystem_preview_type_get_type")]
2232    fn static_type() -> glib::Type {
2233        unsafe { from_glib(ffi::g_filesystem_preview_type_get_type()) }
2234    }
2235}
2236
2237impl glib::HasParamSpec for FilesystemPreviewType {
2238    type ParamSpec = glib::ParamSpecEnum;
2239    type SetValue = Self;
2240    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2241
2242    fn param_spec_builder() -> Self::BuilderFn {
2243        Self::ParamSpec::builder_with_default
2244    }
2245}
2246
2247impl glib::value::ValueType for FilesystemPreviewType {
2248    type Type = Self;
2249}
2250
2251unsafe impl<'a> glib::value::FromValue<'a> for FilesystemPreviewType {
2252    type Checker = glib::value::GenericValueTypeChecker<Self>;
2253
2254    #[inline]
2255    unsafe fn from_value(value: &'a glib::Value) -> Self {
2256        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2257    }
2258}
2259
2260impl ToValue for FilesystemPreviewType {
2261    #[inline]
2262    fn to_value(&self) -> glib::Value {
2263        let mut value = glib::Value::for_value_type::<Self>();
2264        unsafe {
2265            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2266        }
2267        value
2268    }
2269
2270    #[inline]
2271    fn value_type(&self) -> glib::Type {
2272        Self::static_type()
2273    }
2274}
2275
2276impl From<FilesystemPreviewType> for glib::Value {
2277    #[inline]
2278    fn from(v: FilesystemPreviewType) -> Self {
2279        ToValue::to_value(&v)
2280    }
2281}
2282
2283/// Error codes returned by GIO functions.
2284///
2285/// Note that this domain may be extended in future GLib releases. In
2286/// general, new error codes either only apply to new APIs, or else
2287/// replace [`Failed`][Self::Failed] in cases that were not explicitly
2288/// distinguished before. You should therefore avoid writing code like
2289///
2290///
2291/// **⚠️ The following code is in C ⚠️**
2292///
2293/// ```C
2294/// if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_FAILED))
2295///   {
2296///     // Assume that this is EPRINTERONFIRE
2297///     ...
2298///   }
2299/// ```
2300/// but should instead treat all unrecognized error codes the same as
2301/// [`Failed`][Self::Failed].
2302///
2303/// See also #GPollableReturn for a cheaper way of returning
2304/// [`WouldBlock`][Self::WouldBlock] to callers without allocating a #GError.
2305#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2306#[non_exhaustive]
2307#[doc(alias = "GIOErrorEnum")]
2308pub enum IOErrorEnum {
2309    /// Generic error condition for when an operation fails
2310    ///     and no more specific #GIOErrorEnum value is defined.
2311    #[doc(alias = "G_IO_ERROR_FAILED")]
2312    Failed,
2313    /// File not found.
2314    #[doc(alias = "G_IO_ERROR_NOT_FOUND")]
2315    NotFound,
2316    /// File already exists.
2317    #[doc(alias = "G_IO_ERROR_EXISTS")]
2318    Exists,
2319    /// File is a directory.
2320    #[doc(alias = "G_IO_ERROR_IS_DIRECTORY")]
2321    IsDirectory,
2322    /// File is not a directory.
2323    #[doc(alias = "G_IO_ERROR_NOT_DIRECTORY")]
2324    NotDirectory,
2325    /// File is a directory that isn't empty.
2326    #[doc(alias = "G_IO_ERROR_NOT_EMPTY")]
2327    NotEmpty,
2328    /// File is not a regular file.
2329    #[doc(alias = "G_IO_ERROR_NOT_REGULAR_FILE")]
2330    NotRegularFile,
2331    /// File is not a symbolic link.
2332    #[doc(alias = "G_IO_ERROR_NOT_SYMBOLIC_LINK")]
2333    NotSymbolicLink,
2334    /// File cannot be mounted.
2335    #[doc(alias = "G_IO_ERROR_NOT_MOUNTABLE_FILE")]
2336    NotMountableFile,
2337    /// Filename is too many characters.
2338    #[doc(alias = "G_IO_ERROR_FILENAME_TOO_LONG")]
2339    FilenameTooLong,
2340    /// Filename is invalid or contains invalid characters.
2341    #[doc(alias = "G_IO_ERROR_INVALID_FILENAME")]
2342    InvalidFilename,
2343    /// File contains too many symbolic links.
2344    #[doc(alias = "G_IO_ERROR_TOO_MANY_LINKS")]
2345    TooManyLinks,
2346    /// No space left on drive.
2347    #[doc(alias = "G_IO_ERROR_NO_SPACE")]
2348    NoSpace,
2349    /// Invalid argument.
2350    #[doc(alias = "G_IO_ERROR_INVALID_ARGUMENT")]
2351    InvalidArgument,
2352    /// Permission denied.
2353    #[doc(alias = "G_IO_ERROR_PERMISSION_DENIED")]
2354    PermissionDenied,
2355    /// Operation (or one of its parameters) not supported
2356    #[doc(alias = "G_IO_ERROR_NOT_SUPPORTED")]
2357    NotSupported,
2358    /// File isn't mounted.
2359    #[doc(alias = "G_IO_ERROR_NOT_MOUNTED")]
2360    NotMounted,
2361    /// File is already mounted.
2362    #[doc(alias = "G_IO_ERROR_ALREADY_MOUNTED")]
2363    AlreadyMounted,
2364    /// File was closed.
2365    #[doc(alias = "G_IO_ERROR_CLOSED")]
2366    Closed,
2367    /// Operation was cancelled. See #GCancellable.
2368    #[doc(alias = "G_IO_ERROR_CANCELLED")]
2369    Cancelled,
2370    /// Operations are still pending.
2371    #[doc(alias = "G_IO_ERROR_PENDING")]
2372    Pending,
2373    /// File is read only.
2374    #[doc(alias = "G_IO_ERROR_READ_ONLY")]
2375    ReadOnly,
2376    /// Backup couldn't be created.
2377    #[doc(alias = "G_IO_ERROR_CANT_CREATE_BACKUP")]
2378    CantCreateBackup,
2379    /// File's Entity Tag was incorrect.
2380    #[doc(alias = "G_IO_ERROR_WRONG_ETAG")]
2381    WrongEtag,
2382    /// Operation timed out.
2383    #[doc(alias = "G_IO_ERROR_TIMED_OUT")]
2384    TimedOut,
2385    /// Operation would be recursive.
2386    #[doc(alias = "G_IO_ERROR_WOULD_RECURSE")]
2387    WouldRecurse,
2388    /// File is busy.
2389    #[doc(alias = "G_IO_ERROR_BUSY")]
2390    Busy,
2391    /// Operation would block.
2392    #[doc(alias = "G_IO_ERROR_WOULD_BLOCK")]
2393    WouldBlock,
2394    /// Host couldn't be found (remote operations).
2395    #[doc(alias = "G_IO_ERROR_HOST_NOT_FOUND")]
2396    HostNotFound,
2397    /// Operation would merge files.
2398    #[doc(alias = "G_IO_ERROR_WOULD_MERGE")]
2399    WouldMerge,
2400    /// Operation failed and a helper program has
2401    ///     already interacted with the user. Do not display any error dialog.
2402    #[doc(alias = "G_IO_ERROR_FAILED_HANDLED")]
2403    FailedHandled,
2404    /// The current process has too many files
2405    ///     open and can't open any more. Duplicate descriptors do count toward
2406    ///     this limit. Since 2.20
2407    #[doc(alias = "G_IO_ERROR_TOO_MANY_OPEN_FILES")]
2408    TooManyOpenFiles,
2409    /// The object has not been initialized. Since 2.22
2410    #[doc(alias = "G_IO_ERROR_NOT_INITIALIZED")]
2411    NotInitialized,
2412    /// The requested address is already in use. Since 2.22
2413    #[doc(alias = "G_IO_ERROR_ADDRESS_IN_USE")]
2414    AddressInUse,
2415    /// Need more input to finish operation. Since 2.24
2416    #[doc(alias = "G_IO_ERROR_PARTIAL_INPUT")]
2417    PartialInput,
2418    /// The input data was invalid. Since 2.24
2419    #[doc(alias = "G_IO_ERROR_INVALID_DATA")]
2420    InvalidData,
2421    /// A remote object generated an error that
2422    ///     doesn't correspond to a locally registered #GError error
2423    ///     domain. Use g_dbus_error_get_remote_error() to extract the D-Bus
2424    ///     error name and g_dbus_error_strip_remote_error() to fix up the
2425    ///     message so it matches what was received on the wire. Since 2.26.
2426    #[doc(alias = "G_IO_ERROR_DBUS_ERROR")]
2427    DbusError,
2428    /// Host unreachable. Since 2.26
2429    #[doc(alias = "G_IO_ERROR_HOST_UNREACHABLE")]
2430    HostUnreachable,
2431    /// Network unreachable. Since 2.26
2432    #[doc(alias = "G_IO_ERROR_NETWORK_UNREACHABLE")]
2433    NetworkUnreachable,
2434    /// Connection refused. Since 2.26
2435    #[doc(alias = "G_IO_ERROR_CONNECTION_REFUSED")]
2436    ConnectionRefused,
2437    /// Connection to proxy server failed. Since 2.26
2438    #[doc(alias = "G_IO_ERROR_PROXY_FAILED")]
2439    ProxyFailed,
2440    /// Proxy authentication failed. Since 2.26
2441    #[doc(alias = "G_IO_ERROR_PROXY_AUTH_FAILED")]
2442    ProxyAuthFailed,
2443    /// Proxy server needs authentication. Since 2.26
2444    #[doc(alias = "G_IO_ERROR_PROXY_NEED_AUTH")]
2445    ProxyNeedAuth,
2446    /// Proxy connection is not allowed by ruleset.
2447    ///     Since 2.26
2448    #[doc(alias = "G_IO_ERROR_PROXY_NOT_ALLOWED")]
2449    ProxyNotAllowed,
2450    /// Broken pipe. Since 2.36
2451    #[doc(alias = "G_IO_ERROR_BROKEN_PIPE")]
2452    BrokenPipe,
2453    /// Transport endpoint is not connected. Since 2.44
2454    #[doc(alias = "G_IO_ERROR_NOT_CONNECTED")]
2455    NotConnected,
2456    /// Message too large. Since 2.48.
2457    #[doc(alias = "G_IO_ERROR_MESSAGE_TOO_LARGE")]
2458    MessageTooLarge,
2459    /// No such device found. Since 2.74
2460    #[cfg(feature = "v2_72")]
2461    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
2462    #[doc(alias = "G_IO_ERROR_NO_SUCH_DEVICE")]
2463    NoSuchDevice,
2464    /// Destination address unset. Since 2.80
2465    #[cfg(feature = "v2_80")]
2466    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
2467    #[doc(alias = "G_IO_ERROR_DESTINATION_UNSET")]
2468    DestinationUnset,
2469    #[doc(hidden)]
2470    __Unknown(i32),
2471}
2472
2473#[doc(hidden)]
2474impl IntoGlib for IOErrorEnum {
2475    type GlibType = ffi::GIOErrorEnum;
2476
2477    fn into_glib(self) -> ffi::GIOErrorEnum {
2478        match self {
2479            Self::Failed => ffi::G_IO_ERROR_FAILED,
2480            Self::NotFound => ffi::G_IO_ERROR_NOT_FOUND,
2481            Self::Exists => ffi::G_IO_ERROR_EXISTS,
2482            Self::IsDirectory => ffi::G_IO_ERROR_IS_DIRECTORY,
2483            Self::NotDirectory => ffi::G_IO_ERROR_NOT_DIRECTORY,
2484            Self::NotEmpty => ffi::G_IO_ERROR_NOT_EMPTY,
2485            Self::NotRegularFile => ffi::G_IO_ERROR_NOT_REGULAR_FILE,
2486            Self::NotSymbolicLink => ffi::G_IO_ERROR_NOT_SYMBOLIC_LINK,
2487            Self::NotMountableFile => ffi::G_IO_ERROR_NOT_MOUNTABLE_FILE,
2488            Self::FilenameTooLong => ffi::G_IO_ERROR_FILENAME_TOO_LONG,
2489            Self::InvalidFilename => ffi::G_IO_ERROR_INVALID_FILENAME,
2490            Self::TooManyLinks => ffi::G_IO_ERROR_TOO_MANY_LINKS,
2491            Self::NoSpace => ffi::G_IO_ERROR_NO_SPACE,
2492            Self::InvalidArgument => ffi::G_IO_ERROR_INVALID_ARGUMENT,
2493            Self::PermissionDenied => ffi::G_IO_ERROR_PERMISSION_DENIED,
2494            Self::NotSupported => ffi::G_IO_ERROR_NOT_SUPPORTED,
2495            Self::NotMounted => ffi::G_IO_ERROR_NOT_MOUNTED,
2496            Self::AlreadyMounted => ffi::G_IO_ERROR_ALREADY_MOUNTED,
2497            Self::Closed => ffi::G_IO_ERROR_CLOSED,
2498            Self::Cancelled => ffi::G_IO_ERROR_CANCELLED,
2499            Self::Pending => ffi::G_IO_ERROR_PENDING,
2500            Self::ReadOnly => ffi::G_IO_ERROR_READ_ONLY,
2501            Self::CantCreateBackup => ffi::G_IO_ERROR_CANT_CREATE_BACKUP,
2502            Self::WrongEtag => ffi::G_IO_ERROR_WRONG_ETAG,
2503            Self::TimedOut => ffi::G_IO_ERROR_TIMED_OUT,
2504            Self::WouldRecurse => ffi::G_IO_ERROR_WOULD_RECURSE,
2505            Self::Busy => ffi::G_IO_ERROR_BUSY,
2506            Self::WouldBlock => ffi::G_IO_ERROR_WOULD_BLOCK,
2507            Self::HostNotFound => ffi::G_IO_ERROR_HOST_NOT_FOUND,
2508            Self::WouldMerge => ffi::G_IO_ERROR_WOULD_MERGE,
2509            Self::FailedHandled => ffi::G_IO_ERROR_FAILED_HANDLED,
2510            Self::TooManyOpenFiles => ffi::G_IO_ERROR_TOO_MANY_OPEN_FILES,
2511            Self::NotInitialized => ffi::G_IO_ERROR_NOT_INITIALIZED,
2512            Self::AddressInUse => ffi::G_IO_ERROR_ADDRESS_IN_USE,
2513            Self::PartialInput => ffi::G_IO_ERROR_PARTIAL_INPUT,
2514            Self::InvalidData => ffi::G_IO_ERROR_INVALID_DATA,
2515            Self::DbusError => ffi::G_IO_ERROR_DBUS_ERROR,
2516            Self::HostUnreachable => ffi::G_IO_ERROR_HOST_UNREACHABLE,
2517            Self::NetworkUnreachable => ffi::G_IO_ERROR_NETWORK_UNREACHABLE,
2518            Self::ConnectionRefused => ffi::G_IO_ERROR_CONNECTION_REFUSED,
2519            Self::ProxyFailed => ffi::G_IO_ERROR_PROXY_FAILED,
2520            Self::ProxyAuthFailed => ffi::G_IO_ERROR_PROXY_AUTH_FAILED,
2521            Self::ProxyNeedAuth => ffi::G_IO_ERROR_PROXY_NEED_AUTH,
2522            Self::ProxyNotAllowed => ffi::G_IO_ERROR_PROXY_NOT_ALLOWED,
2523            Self::BrokenPipe => ffi::G_IO_ERROR_BROKEN_PIPE,
2524            Self::NotConnected => ffi::G_IO_ERROR_NOT_CONNECTED,
2525            Self::MessageTooLarge => ffi::G_IO_ERROR_MESSAGE_TOO_LARGE,
2526            #[cfg(feature = "v2_72")]
2527            Self::NoSuchDevice => ffi::G_IO_ERROR_NO_SUCH_DEVICE,
2528            #[cfg(feature = "v2_80")]
2529            Self::DestinationUnset => ffi::G_IO_ERROR_DESTINATION_UNSET,
2530            Self::__Unknown(value) => value,
2531        }
2532    }
2533}
2534
2535#[doc(hidden)]
2536impl FromGlib<ffi::GIOErrorEnum> for IOErrorEnum {
2537    unsafe fn from_glib(value: ffi::GIOErrorEnum) -> Self {
2538        match value {
2539            ffi::G_IO_ERROR_FAILED => Self::Failed,
2540            ffi::G_IO_ERROR_NOT_FOUND => Self::NotFound,
2541            ffi::G_IO_ERROR_EXISTS => Self::Exists,
2542            ffi::G_IO_ERROR_IS_DIRECTORY => Self::IsDirectory,
2543            ffi::G_IO_ERROR_NOT_DIRECTORY => Self::NotDirectory,
2544            ffi::G_IO_ERROR_NOT_EMPTY => Self::NotEmpty,
2545            ffi::G_IO_ERROR_NOT_REGULAR_FILE => Self::NotRegularFile,
2546            ffi::G_IO_ERROR_NOT_SYMBOLIC_LINK => Self::NotSymbolicLink,
2547            ffi::G_IO_ERROR_NOT_MOUNTABLE_FILE => Self::NotMountableFile,
2548            ffi::G_IO_ERROR_FILENAME_TOO_LONG => Self::FilenameTooLong,
2549            ffi::G_IO_ERROR_INVALID_FILENAME => Self::InvalidFilename,
2550            ffi::G_IO_ERROR_TOO_MANY_LINKS => Self::TooManyLinks,
2551            ffi::G_IO_ERROR_NO_SPACE => Self::NoSpace,
2552            ffi::G_IO_ERROR_INVALID_ARGUMENT => Self::InvalidArgument,
2553            ffi::G_IO_ERROR_PERMISSION_DENIED => Self::PermissionDenied,
2554            ffi::G_IO_ERROR_NOT_SUPPORTED => Self::NotSupported,
2555            ffi::G_IO_ERROR_NOT_MOUNTED => Self::NotMounted,
2556            ffi::G_IO_ERROR_ALREADY_MOUNTED => Self::AlreadyMounted,
2557            ffi::G_IO_ERROR_CLOSED => Self::Closed,
2558            ffi::G_IO_ERROR_CANCELLED => Self::Cancelled,
2559            ffi::G_IO_ERROR_PENDING => Self::Pending,
2560            ffi::G_IO_ERROR_READ_ONLY => Self::ReadOnly,
2561            ffi::G_IO_ERROR_CANT_CREATE_BACKUP => Self::CantCreateBackup,
2562            ffi::G_IO_ERROR_WRONG_ETAG => Self::WrongEtag,
2563            ffi::G_IO_ERROR_TIMED_OUT => Self::TimedOut,
2564            ffi::G_IO_ERROR_WOULD_RECURSE => Self::WouldRecurse,
2565            ffi::G_IO_ERROR_BUSY => Self::Busy,
2566            ffi::G_IO_ERROR_WOULD_BLOCK => Self::WouldBlock,
2567            ffi::G_IO_ERROR_HOST_NOT_FOUND => Self::HostNotFound,
2568            ffi::G_IO_ERROR_WOULD_MERGE => Self::WouldMerge,
2569            ffi::G_IO_ERROR_FAILED_HANDLED => Self::FailedHandled,
2570            ffi::G_IO_ERROR_TOO_MANY_OPEN_FILES => Self::TooManyOpenFiles,
2571            ffi::G_IO_ERROR_NOT_INITIALIZED => Self::NotInitialized,
2572            ffi::G_IO_ERROR_ADDRESS_IN_USE => Self::AddressInUse,
2573            ffi::G_IO_ERROR_PARTIAL_INPUT => Self::PartialInput,
2574            ffi::G_IO_ERROR_INVALID_DATA => Self::InvalidData,
2575            ffi::G_IO_ERROR_DBUS_ERROR => Self::DbusError,
2576            ffi::G_IO_ERROR_HOST_UNREACHABLE => Self::HostUnreachable,
2577            ffi::G_IO_ERROR_NETWORK_UNREACHABLE => Self::NetworkUnreachable,
2578            ffi::G_IO_ERROR_CONNECTION_REFUSED => Self::ConnectionRefused,
2579            ffi::G_IO_ERROR_PROXY_FAILED => Self::ProxyFailed,
2580            ffi::G_IO_ERROR_PROXY_AUTH_FAILED => Self::ProxyAuthFailed,
2581            ffi::G_IO_ERROR_PROXY_NEED_AUTH => Self::ProxyNeedAuth,
2582            ffi::G_IO_ERROR_PROXY_NOT_ALLOWED => Self::ProxyNotAllowed,
2583            ffi::G_IO_ERROR_BROKEN_PIPE => Self::BrokenPipe,
2584            ffi::G_IO_ERROR_NOT_CONNECTED => Self::NotConnected,
2585            ffi::G_IO_ERROR_MESSAGE_TOO_LARGE => Self::MessageTooLarge,
2586            #[cfg(feature = "v2_72")]
2587            ffi::G_IO_ERROR_NO_SUCH_DEVICE => Self::NoSuchDevice,
2588            #[cfg(feature = "v2_80")]
2589            ffi::G_IO_ERROR_DESTINATION_UNSET => Self::DestinationUnset,
2590            value => Self::__Unknown(value),
2591        }
2592    }
2593}
2594
2595impl glib::error::ErrorDomain for IOErrorEnum {
2596    #[inline]
2597    fn domain() -> glib::Quark {
2598        unsafe { from_glib(ffi::g_io_error_quark()) }
2599    }
2600
2601    #[inline]
2602    fn code(self) -> i32 {
2603        self.into_glib()
2604    }
2605
2606    #[inline]
2607    #[allow(clippy::match_single_binding)]
2608    fn from(code: i32) -> Option<Self> {
2609        match unsafe { from_glib(code) } {
2610            Self::__Unknown(_) => Some(Self::Failed),
2611            value => Some(value),
2612        }
2613    }
2614}
2615
2616impl StaticType for IOErrorEnum {
2617    #[inline]
2618    #[doc(alias = "g_io_error_enum_get_type")]
2619    fn static_type() -> glib::Type {
2620        unsafe { from_glib(ffi::g_io_error_enum_get_type()) }
2621    }
2622}
2623
2624impl glib::HasParamSpec for IOErrorEnum {
2625    type ParamSpec = glib::ParamSpecEnum;
2626    type SetValue = Self;
2627    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2628
2629    fn param_spec_builder() -> Self::BuilderFn {
2630        Self::ParamSpec::builder_with_default
2631    }
2632}
2633
2634impl glib::value::ValueType for IOErrorEnum {
2635    type Type = Self;
2636}
2637
2638unsafe impl<'a> glib::value::FromValue<'a> for IOErrorEnum {
2639    type Checker = glib::value::GenericValueTypeChecker<Self>;
2640
2641    #[inline]
2642    unsafe fn from_value(value: &'a glib::Value) -> Self {
2643        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2644    }
2645}
2646
2647impl ToValue for IOErrorEnum {
2648    #[inline]
2649    fn to_value(&self) -> glib::Value {
2650        let mut value = glib::Value::for_value_type::<Self>();
2651        unsafe {
2652            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2653        }
2654        value
2655    }
2656
2657    #[inline]
2658    fn value_type(&self) -> glib::Type {
2659        Self::static_type()
2660    }
2661}
2662
2663impl From<IOErrorEnum> for glib::Value {
2664    #[inline]
2665    fn from(v: IOErrorEnum) -> Self {
2666        ToValue::to_value(&v)
2667    }
2668}
2669
2670/// Memory availability warning levels.
2671///
2672/// Note that because new values might be added, it is recommended that applications check
2673/// #GMemoryMonitorWarningLevel as ranges, for example:
2674///
2675///
2676/// **⚠️ The following code is in C ⚠️**
2677///
2678/// ```C
2679/// if (warning_level > G_MEMORY_MONITOR_WARNING_LEVEL_LOW)
2680///   drop_caches ();
2681/// ```
2682#[cfg(feature = "v2_64")]
2683#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2684#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2685#[non_exhaustive]
2686#[doc(alias = "GMemoryMonitorWarningLevel")]
2687pub enum MemoryMonitorWarningLevel {
2688    /// Memory on the device is low, processes
2689    ///   should free up unneeded resources (for example, in-memory caches) so they can
2690    ///   be used elsewhere.
2691    #[doc(alias = "G_MEMORY_MONITOR_WARNING_LEVEL_LOW")]
2692    Low,
2693    /// Same as @G_MEMORY_MONITOR_WARNING_LEVEL_LOW
2694    ///   but the device has even less free memory, so processes should try harder to free
2695    ///   up unneeded resources. If your process does not need to stay running, it is a
2696    ///   good time for it to quit.
2697    #[doc(alias = "G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM")]
2698    Medium,
2699    /// The system will soon start terminating
2700    ///   processes to reclaim memory, including background processes.
2701    #[doc(alias = "G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL")]
2702    Critical,
2703    #[doc(hidden)]
2704    __Unknown(i32),
2705}
2706
2707#[cfg(feature = "v2_64")]
2708#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2709#[doc(hidden)]
2710impl IntoGlib for MemoryMonitorWarningLevel {
2711    type GlibType = ffi::GMemoryMonitorWarningLevel;
2712
2713    #[inline]
2714    fn into_glib(self) -> ffi::GMemoryMonitorWarningLevel {
2715        match self {
2716            Self::Low => ffi::G_MEMORY_MONITOR_WARNING_LEVEL_LOW,
2717            Self::Medium => ffi::G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM,
2718            Self::Critical => ffi::G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL,
2719            Self::__Unknown(value) => value,
2720        }
2721    }
2722}
2723
2724#[cfg(feature = "v2_64")]
2725#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2726#[doc(hidden)]
2727impl FromGlib<ffi::GMemoryMonitorWarningLevel> for MemoryMonitorWarningLevel {
2728    #[inline]
2729    unsafe fn from_glib(value: ffi::GMemoryMonitorWarningLevel) -> Self {
2730        match value {
2731            ffi::G_MEMORY_MONITOR_WARNING_LEVEL_LOW => Self::Low,
2732            ffi::G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM => Self::Medium,
2733            ffi::G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL => Self::Critical,
2734            value => Self::__Unknown(value),
2735        }
2736    }
2737}
2738
2739#[cfg(feature = "v2_64")]
2740#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2741impl StaticType for MemoryMonitorWarningLevel {
2742    #[inline]
2743    #[doc(alias = "g_memory_monitor_warning_level_get_type")]
2744    fn static_type() -> glib::Type {
2745        unsafe { from_glib(ffi::g_memory_monitor_warning_level_get_type()) }
2746    }
2747}
2748
2749#[cfg(feature = "v2_64")]
2750#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2751impl glib::HasParamSpec for MemoryMonitorWarningLevel {
2752    type ParamSpec = glib::ParamSpecEnum;
2753    type SetValue = Self;
2754    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2755
2756    fn param_spec_builder() -> Self::BuilderFn {
2757        Self::ParamSpec::builder_with_default
2758    }
2759}
2760
2761#[cfg(feature = "v2_64")]
2762#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2763impl glib::value::ValueType for MemoryMonitorWarningLevel {
2764    type Type = Self;
2765}
2766
2767#[cfg(feature = "v2_64")]
2768#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2769unsafe impl<'a> glib::value::FromValue<'a> for MemoryMonitorWarningLevel {
2770    type Checker = glib::value::GenericValueTypeChecker<Self>;
2771
2772    #[inline]
2773    unsafe fn from_value(value: &'a glib::Value) -> Self {
2774        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2775    }
2776}
2777
2778#[cfg(feature = "v2_64")]
2779#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2780impl ToValue for MemoryMonitorWarningLevel {
2781    #[inline]
2782    fn to_value(&self) -> glib::Value {
2783        let mut value = glib::Value::for_value_type::<Self>();
2784        unsafe {
2785            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2786        }
2787        value
2788    }
2789
2790    #[inline]
2791    fn value_type(&self) -> glib::Type {
2792        Self::static_type()
2793    }
2794}
2795
2796#[cfg(feature = "v2_64")]
2797#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2798impl From<MemoryMonitorWarningLevel> for glib::Value {
2799    #[inline]
2800    fn from(v: MemoryMonitorWarningLevel) -> Self {
2801        ToValue::to_value(&v)
2802    }
2803}
2804
2805/// #GMountOperationResult is returned as a result when a request for
2806/// information is send by the mounting operation.
2807#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2808#[non_exhaustive]
2809#[doc(alias = "GMountOperationResult")]
2810pub enum MountOperationResult {
2811    /// The request was fulfilled and the
2812    ///     user specified data is now available
2813    #[doc(alias = "G_MOUNT_OPERATION_HANDLED")]
2814    Handled,
2815    /// The user requested the mount operation
2816    ///     to be aborted
2817    #[doc(alias = "G_MOUNT_OPERATION_ABORTED")]
2818    Aborted,
2819    /// The request was unhandled (i.e. not
2820    ///     implemented)
2821    #[doc(alias = "G_MOUNT_OPERATION_UNHANDLED")]
2822    Unhandled,
2823    #[doc(hidden)]
2824    __Unknown(i32),
2825}
2826
2827#[doc(hidden)]
2828impl IntoGlib for MountOperationResult {
2829    type GlibType = ffi::GMountOperationResult;
2830
2831    #[inline]
2832    fn into_glib(self) -> ffi::GMountOperationResult {
2833        match self {
2834            Self::Handled => ffi::G_MOUNT_OPERATION_HANDLED,
2835            Self::Aborted => ffi::G_MOUNT_OPERATION_ABORTED,
2836            Self::Unhandled => ffi::G_MOUNT_OPERATION_UNHANDLED,
2837            Self::__Unknown(value) => value,
2838        }
2839    }
2840}
2841
2842#[doc(hidden)]
2843impl FromGlib<ffi::GMountOperationResult> for MountOperationResult {
2844    #[inline]
2845    unsafe fn from_glib(value: ffi::GMountOperationResult) -> Self {
2846        match value {
2847            ffi::G_MOUNT_OPERATION_HANDLED => Self::Handled,
2848            ffi::G_MOUNT_OPERATION_ABORTED => Self::Aborted,
2849            ffi::G_MOUNT_OPERATION_UNHANDLED => Self::Unhandled,
2850            value => Self::__Unknown(value),
2851        }
2852    }
2853}
2854
2855impl StaticType for MountOperationResult {
2856    #[inline]
2857    #[doc(alias = "g_mount_operation_result_get_type")]
2858    fn static_type() -> glib::Type {
2859        unsafe { from_glib(ffi::g_mount_operation_result_get_type()) }
2860    }
2861}
2862
2863impl glib::HasParamSpec for MountOperationResult {
2864    type ParamSpec = glib::ParamSpecEnum;
2865    type SetValue = Self;
2866    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2867
2868    fn param_spec_builder() -> Self::BuilderFn {
2869        Self::ParamSpec::builder_with_default
2870    }
2871}
2872
2873impl glib::value::ValueType for MountOperationResult {
2874    type Type = Self;
2875}
2876
2877unsafe impl<'a> glib::value::FromValue<'a> for MountOperationResult {
2878    type Checker = glib::value::GenericValueTypeChecker<Self>;
2879
2880    #[inline]
2881    unsafe fn from_value(value: &'a glib::Value) -> Self {
2882        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2883    }
2884}
2885
2886impl ToValue for MountOperationResult {
2887    #[inline]
2888    fn to_value(&self) -> glib::Value {
2889        let mut value = glib::Value::for_value_type::<Self>();
2890        unsafe {
2891            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2892        }
2893        value
2894    }
2895
2896    #[inline]
2897    fn value_type(&self) -> glib::Type {
2898        Self::static_type()
2899    }
2900}
2901
2902impl From<MountOperationResult> for glib::Value {
2903    #[inline]
2904    fn from(v: MountOperationResult) -> Self {
2905        ToValue::to_value(&v)
2906    }
2907}
2908
2909/// The host's network connectivity state, as reported by #GNetworkMonitor.
2910#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2911#[non_exhaustive]
2912#[doc(alias = "GNetworkConnectivity")]
2913pub enum NetworkConnectivity {
2914    /// The host is not configured with a
2915    ///   route to the Internet; it may or may not be connected to a local
2916    ///   network.
2917    #[doc(alias = "G_NETWORK_CONNECTIVITY_LOCAL")]
2918    Local,
2919    /// The host is connected to a network, but
2920    ///   does not appear to be able to reach the full Internet, perhaps
2921    ///   due to upstream network problems.
2922    #[doc(alias = "G_NETWORK_CONNECTIVITY_LIMITED")]
2923    Limited,
2924    /// The host is behind a captive portal and
2925    ///   cannot reach the full Internet.
2926    #[doc(alias = "G_NETWORK_CONNECTIVITY_PORTAL")]
2927    Portal,
2928    /// The host is connected to a network, and
2929    ///   appears to be able to reach the full Internet.
2930    #[doc(alias = "G_NETWORK_CONNECTIVITY_FULL")]
2931    Full,
2932    #[doc(hidden)]
2933    __Unknown(i32),
2934}
2935
2936#[doc(hidden)]
2937impl IntoGlib for NetworkConnectivity {
2938    type GlibType = ffi::GNetworkConnectivity;
2939
2940    #[inline]
2941    fn into_glib(self) -> ffi::GNetworkConnectivity {
2942        match self {
2943            Self::Local => ffi::G_NETWORK_CONNECTIVITY_LOCAL,
2944            Self::Limited => ffi::G_NETWORK_CONNECTIVITY_LIMITED,
2945            Self::Portal => ffi::G_NETWORK_CONNECTIVITY_PORTAL,
2946            Self::Full => ffi::G_NETWORK_CONNECTIVITY_FULL,
2947            Self::__Unknown(value) => value,
2948        }
2949    }
2950}
2951
2952#[doc(hidden)]
2953impl FromGlib<ffi::GNetworkConnectivity> for NetworkConnectivity {
2954    #[inline]
2955    unsafe fn from_glib(value: ffi::GNetworkConnectivity) -> Self {
2956        match value {
2957            ffi::G_NETWORK_CONNECTIVITY_LOCAL => Self::Local,
2958            ffi::G_NETWORK_CONNECTIVITY_LIMITED => Self::Limited,
2959            ffi::G_NETWORK_CONNECTIVITY_PORTAL => Self::Portal,
2960            ffi::G_NETWORK_CONNECTIVITY_FULL => Self::Full,
2961            value => Self::__Unknown(value),
2962        }
2963    }
2964}
2965
2966impl StaticType for NetworkConnectivity {
2967    #[inline]
2968    #[doc(alias = "g_network_connectivity_get_type")]
2969    fn static_type() -> glib::Type {
2970        unsafe { from_glib(ffi::g_network_connectivity_get_type()) }
2971    }
2972}
2973
2974impl glib::HasParamSpec for NetworkConnectivity {
2975    type ParamSpec = glib::ParamSpecEnum;
2976    type SetValue = Self;
2977    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2978
2979    fn param_spec_builder() -> Self::BuilderFn {
2980        Self::ParamSpec::builder_with_default
2981    }
2982}
2983
2984impl glib::value::ValueType for NetworkConnectivity {
2985    type Type = Self;
2986}
2987
2988unsafe impl<'a> glib::value::FromValue<'a> for NetworkConnectivity {
2989    type Checker = glib::value::GenericValueTypeChecker<Self>;
2990
2991    #[inline]
2992    unsafe fn from_value(value: &'a glib::Value) -> Self {
2993        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
2994    }
2995}
2996
2997impl ToValue for NetworkConnectivity {
2998    #[inline]
2999    fn to_value(&self) -> glib::Value {
3000        let mut value = glib::Value::for_value_type::<Self>();
3001        unsafe {
3002            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3003        }
3004        value
3005    }
3006
3007    #[inline]
3008    fn value_type(&self) -> glib::Type {
3009        Self::static_type()
3010    }
3011}
3012
3013impl From<NetworkConnectivity> for glib::Value {
3014    #[inline]
3015    fn from(v: NetworkConnectivity) -> Self {
3016        ToValue::to_value(&v)
3017    }
3018}
3019
3020/// Priority levels for #GNotifications.
3021#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3022#[non_exhaustive]
3023#[doc(alias = "GNotificationPriority")]
3024pub enum NotificationPriority {
3025    /// the default priority, to be used for the
3026    ///   majority of notifications (for example email messages, software updates,
3027    ///   completed download/sync operations)
3028    #[doc(alias = "G_NOTIFICATION_PRIORITY_NORMAL")]
3029    Normal,
3030    /// for notifications that do not require
3031    ///   immediate attention - typically used for contextual background
3032    ///   information, such as contact birthdays or local weather
3033    #[doc(alias = "G_NOTIFICATION_PRIORITY_LOW")]
3034    Low,
3035    /// for events that require more attention,
3036    ///   usually because responses are time-sensitive (for example chat and SMS
3037    ///   messages or alarms)
3038    #[doc(alias = "G_NOTIFICATION_PRIORITY_HIGH")]
3039    High,
3040    /// for urgent notifications, or notifications
3041    ///   that require a response in a short space of time (for example phone calls
3042    ///   or emergency warnings)
3043    #[doc(alias = "G_NOTIFICATION_PRIORITY_URGENT")]
3044    Urgent,
3045    #[doc(hidden)]
3046    __Unknown(i32),
3047}
3048
3049#[doc(hidden)]
3050impl IntoGlib for NotificationPriority {
3051    type GlibType = ffi::GNotificationPriority;
3052
3053    #[inline]
3054    fn into_glib(self) -> ffi::GNotificationPriority {
3055        match self {
3056            Self::Normal => ffi::G_NOTIFICATION_PRIORITY_NORMAL,
3057            Self::Low => ffi::G_NOTIFICATION_PRIORITY_LOW,
3058            Self::High => ffi::G_NOTIFICATION_PRIORITY_HIGH,
3059            Self::Urgent => ffi::G_NOTIFICATION_PRIORITY_URGENT,
3060            Self::__Unknown(value) => value,
3061        }
3062    }
3063}
3064
3065#[doc(hidden)]
3066impl FromGlib<ffi::GNotificationPriority> for NotificationPriority {
3067    #[inline]
3068    unsafe fn from_glib(value: ffi::GNotificationPriority) -> Self {
3069        match value {
3070            ffi::G_NOTIFICATION_PRIORITY_NORMAL => Self::Normal,
3071            ffi::G_NOTIFICATION_PRIORITY_LOW => Self::Low,
3072            ffi::G_NOTIFICATION_PRIORITY_HIGH => Self::High,
3073            ffi::G_NOTIFICATION_PRIORITY_URGENT => Self::Urgent,
3074            value => Self::__Unknown(value),
3075        }
3076    }
3077}
3078
3079impl StaticType for NotificationPriority {
3080    #[inline]
3081    #[doc(alias = "g_notification_priority_get_type")]
3082    fn static_type() -> glib::Type {
3083        unsafe { from_glib(ffi::g_notification_priority_get_type()) }
3084    }
3085}
3086
3087impl glib::HasParamSpec for NotificationPriority {
3088    type ParamSpec = glib::ParamSpecEnum;
3089    type SetValue = Self;
3090    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3091
3092    fn param_spec_builder() -> Self::BuilderFn {
3093        Self::ParamSpec::builder_with_default
3094    }
3095}
3096
3097impl glib::value::ValueType for NotificationPriority {
3098    type Type = Self;
3099}
3100
3101unsafe impl<'a> glib::value::FromValue<'a> for NotificationPriority {
3102    type Checker = glib::value::GenericValueTypeChecker<Self>;
3103
3104    #[inline]
3105    unsafe fn from_value(value: &'a glib::Value) -> Self {
3106        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3107    }
3108}
3109
3110impl ToValue for NotificationPriority {
3111    #[inline]
3112    fn to_value(&self) -> glib::Value {
3113        let mut value = glib::Value::for_value_type::<Self>();
3114        unsafe {
3115            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3116        }
3117        value
3118    }
3119
3120    #[inline]
3121    fn value_type(&self) -> glib::Type {
3122        Self::static_type()
3123    }
3124}
3125
3126impl From<NotificationPriority> for glib::Value {
3127    #[inline]
3128    fn from(v: NotificationPriority) -> Self {
3129        ToValue::to_value(&v)
3130    }
3131}
3132
3133/// #GPasswordSave is used to indicate the lifespan of a saved password.
3134///
3135/// #Gvfs stores passwords in the Gnome keyring when this flag allows it
3136/// to, and later retrieves it again from there.
3137#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3138#[non_exhaustive]
3139#[doc(alias = "GPasswordSave")]
3140pub enum PasswordSave {
3141    /// never save a password.
3142    #[doc(alias = "G_PASSWORD_SAVE_NEVER")]
3143    Never,
3144    /// save a password for the session.
3145    #[doc(alias = "G_PASSWORD_SAVE_FOR_SESSION")]
3146    ForSession,
3147    /// save a password permanently.
3148    #[doc(alias = "G_PASSWORD_SAVE_PERMANENTLY")]
3149    Permanently,
3150    #[doc(hidden)]
3151    __Unknown(i32),
3152}
3153
3154#[doc(hidden)]
3155impl IntoGlib for PasswordSave {
3156    type GlibType = ffi::GPasswordSave;
3157
3158    #[inline]
3159    fn into_glib(self) -> ffi::GPasswordSave {
3160        match self {
3161            Self::Never => ffi::G_PASSWORD_SAVE_NEVER,
3162            Self::ForSession => ffi::G_PASSWORD_SAVE_FOR_SESSION,
3163            Self::Permanently => ffi::G_PASSWORD_SAVE_PERMANENTLY,
3164            Self::__Unknown(value) => value,
3165        }
3166    }
3167}
3168
3169#[doc(hidden)]
3170impl FromGlib<ffi::GPasswordSave> for PasswordSave {
3171    #[inline]
3172    unsafe fn from_glib(value: ffi::GPasswordSave) -> Self {
3173        match value {
3174            ffi::G_PASSWORD_SAVE_NEVER => Self::Never,
3175            ffi::G_PASSWORD_SAVE_FOR_SESSION => Self::ForSession,
3176            ffi::G_PASSWORD_SAVE_PERMANENTLY => Self::Permanently,
3177            value => Self::__Unknown(value),
3178        }
3179    }
3180}
3181
3182impl StaticType for PasswordSave {
3183    #[inline]
3184    #[doc(alias = "g_password_save_get_type")]
3185    fn static_type() -> glib::Type {
3186        unsafe { from_glib(ffi::g_password_save_get_type()) }
3187    }
3188}
3189
3190impl glib::HasParamSpec for PasswordSave {
3191    type ParamSpec = glib::ParamSpecEnum;
3192    type SetValue = Self;
3193    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3194
3195    fn param_spec_builder() -> Self::BuilderFn {
3196        Self::ParamSpec::builder_with_default
3197    }
3198}
3199
3200impl glib::value::ValueType for PasswordSave {
3201    type Type = Self;
3202}
3203
3204unsafe impl<'a> glib::value::FromValue<'a> for PasswordSave {
3205    type Checker = glib::value::GenericValueTypeChecker<Self>;
3206
3207    #[inline]
3208    unsafe fn from_value(value: &'a glib::Value) -> Self {
3209        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3210    }
3211}
3212
3213impl ToValue for PasswordSave {
3214    #[inline]
3215    fn to_value(&self) -> glib::Value {
3216        let mut value = glib::Value::for_value_type::<Self>();
3217        unsafe {
3218            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3219        }
3220        value
3221    }
3222
3223    #[inline]
3224    fn value_type(&self) -> glib::Type {
3225        Self::static_type()
3226    }
3227}
3228
3229impl From<PasswordSave> for glib::Value {
3230    #[inline]
3231    fn from(v: PasswordSave) -> Self {
3232        ToValue::to_value(&v)
3233    }
3234}
3235
3236/// Return value for various IO operations that signal errors via the
3237/// return value and not necessarily via a #GError.
3238///
3239/// This enum exists to be able to return errors to callers without having to
3240/// allocate a #GError. Allocating #GErrors can be quite expensive for
3241/// regularly happening errors like [`IOErrorEnum::WouldBlock`][crate::IOErrorEnum::WouldBlock].
3242///
3243/// In case of [`Failed`][Self::Failed] a #GError should be set for the
3244/// operation to give details about the error that happened.
3245#[cfg(feature = "v2_60")]
3246#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3247#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3248#[non_exhaustive]
3249#[doc(alias = "GPollableReturn")]
3250pub enum PollableReturn {
3251    /// Generic error condition for when an operation fails.
3252    #[doc(alias = "G_POLLABLE_RETURN_FAILED")]
3253    Failed,
3254    /// The operation was successfully finished.
3255    #[doc(alias = "G_POLLABLE_RETURN_OK")]
3256    Ok,
3257    /// The operation would block.
3258    #[doc(alias = "G_POLLABLE_RETURN_WOULD_BLOCK")]
3259    WouldBlock,
3260    #[doc(hidden)]
3261    __Unknown(i32),
3262}
3263
3264#[cfg(feature = "v2_60")]
3265#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3266#[doc(hidden)]
3267impl IntoGlib for PollableReturn {
3268    type GlibType = ffi::GPollableReturn;
3269
3270    #[inline]
3271    fn into_glib(self) -> ffi::GPollableReturn {
3272        match self {
3273            Self::Failed => ffi::G_POLLABLE_RETURN_FAILED,
3274            Self::Ok => ffi::G_POLLABLE_RETURN_OK,
3275            Self::WouldBlock => ffi::G_POLLABLE_RETURN_WOULD_BLOCK,
3276            Self::__Unknown(value) => value,
3277        }
3278    }
3279}
3280
3281#[cfg(feature = "v2_60")]
3282#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3283#[doc(hidden)]
3284impl FromGlib<ffi::GPollableReturn> for PollableReturn {
3285    #[inline]
3286    unsafe fn from_glib(value: ffi::GPollableReturn) -> Self {
3287        match value {
3288            ffi::G_POLLABLE_RETURN_FAILED => Self::Failed,
3289            ffi::G_POLLABLE_RETURN_OK => Self::Ok,
3290            ffi::G_POLLABLE_RETURN_WOULD_BLOCK => Self::WouldBlock,
3291            value => Self::__Unknown(value),
3292        }
3293    }
3294}
3295
3296#[cfg(feature = "v2_60")]
3297#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3298impl StaticType for PollableReturn {
3299    #[inline]
3300    #[doc(alias = "g_pollable_return_get_type")]
3301    fn static_type() -> glib::Type {
3302        unsafe { from_glib(ffi::g_pollable_return_get_type()) }
3303    }
3304}
3305
3306#[cfg(feature = "v2_60")]
3307#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3308impl glib::HasParamSpec for PollableReturn {
3309    type ParamSpec = glib::ParamSpecEnum;
3310    type SetValue = Self;
3311    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3312
3313    fn param_spec_builder() -> Self::BuilderFn {
3314        Self::ParamSpec::builder_with_default
3315    }
3316}
3317
3318#[cfg(feature = "v2_60")]
3319#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3320impl glib::value::ValueType for PollableReturn {
3321    type Type = Self;
3322}
3323
3324#[cfg(feature = "v2_60")]
3325#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3326unsafe impl<'a> glib::value::FromValue<'a> for PollableReturn {
3327    type Checker = glib::value::GenericValueTypeChecker<Self>;
3328
3329    #[inline]
3330    unsafe fn from_value(value: &'a glib::Value) -> Self {
3331        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3332    }
3333}
3334
3335#[cfg(feature = "v2_60")]
3336#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3337impl ToValue for PollableReturn {
3338    #[inline]
3339    fn to_value(&self) -> glib::Value {
3340        let mut value = glib::Value::for_value_type::<Self>();
3341        unsafe {
3342            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3343        }
3344        value
3345    }
3346
3347    #[inline]
3348    fn value_type(&self) -> glib::Type {
3349        Self::static_type()
3350    }
3351}
3352
3353#[cfg(feature = "v2_60")]
3354#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3355impl From<PollableReturn> for glib::Value {
3356    #[inline]
3357    fn from(v: PollableReturn) -> Self {
3358        ToValue::to_value(&v)
3359    }
3360}
3361
3362/// An error code used with `G_RESOLVER_ERROR` in a #GError returned
3363/// from a #GResolver routine.
3364#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3365#[non_exhaustive]
3366#[doc(alias = "GResolverError")]
3367pub enum ResolverError {
3368    /// the requested name/address/service was not
3369    ///     found
3370    #[doc(alias = "G_RESOLVER_ERROR_NOT_FOUND")]
3371    NotFound,
3372    /// the requested information could not
3373    ///     be looked up due to a network error or similar problem
3374    #[doc(alias = "G_RESOLVER_ERROR_TEMPORARY_FAILURE")]
3375    TemporaryFailure,
3376    /// unknown error
3377    #[doc(alias = "G_RESOLVER_ERROR_INTERNAL")]
3378    Internal,
3379    #[doc(hidden)]
3380    __Unknown(i32),
3381}
3382
3383#[doc(hidden)]
3384impl IntoGlib for ResolverError {
3385    type GlibType = ffi::GResolverError;
3386
3387    #[inline]
3388    fn into_glib(self) -> ffi::GResolverError {
3389        match self {
3390            Self::NotFound => ffi::G_RESOLVER_ERROR_NOT_FOUND,
3391            Self::TemporaryFailure => ffi::G_RESOLVER_ERROR_TEMPORARY_FAILURE,
3392            Self::Internal => ffi::G_RESOLVER_ERROR_INTERNAL,
3393            Self::__Unknown(value) => value,
3394        }
3395    }
3396}
3397
3398#[doc(hidden)]
3399impl FromGlib<ffi::GResolverError> for ResolverError {
3400    #[inline]
3401    unsafe fn from_glib(value: ffi::GResolverError) -> Self {
3402        match value {
3403            ffi::G_RESOLVER_ERROR_NOT_FOUND => Self::NotFound,
3404            ffi::G_RESOLVER_ERROR_TEMPORARY_FAILURE => Self::TemporaryFailure,
3405            ffi::G_RESOLVER_ERROR_INTERNAL => Self::Internal,
3406            value => Self::__Unknown(value),
3407        }
3408    }
3409}
3410
3411impl glib::error::ErrorDomain for ResolverError {
3412    #[inline]
3413    fn domain() -> glib::Quark {
3414        unsafe { from_glib(ffi::g_resolver_error_quark()) }
3415    }
3416
3417    #[inline]
3418    fn code(self) -> i32 {
3419        self.into_glib()
3420    }
3421
3422    #[inline]
3423    #[allow(clippy::match_single_binding)]
3424    fn from(code: i32) -> Option<Self> {
3425        match unsafe { from_glib(code) } {
3426            value => Some(value),
3427        }
3428    }
3429}
3430
3431impl StaticType for ResolverError {
3432    #[inline]
3433    #[doc(alias = "g_resolver_error_get_type")]
3434    fn static_type() -> glib::Type {
3435        unsafe { from_glib(ffi::g_resolver_error_get_type()) }
3436    }
3437}
3438
3439impl glib::HasParamSpec for ResolverError {
3440    type ParamSpec = glib::ParamSpecEnum;
3441    type SetValue = Self;
3442    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3443
3444    fn param_spec_builder() -> Self::BuilderFn {
3445        Self::ParamSpec::builder_with_default
3446    }
3447}
3448
3449impl glib::value::ValueType for ResolverError {
3450    type Type = Self;
3451}
3452
3453unsafe impl<'a> glib::value::FromValue<'a> for ResolverError {
3454    type Checker = glib::value::GenericValueTypeChecker<Self>;
3455
3456    #[inline]
3457    unsafe fn from_value(value: &'a glib::Value) -> Self {
3458        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3459    }
3460}
3461
3462impl ToValue for ResolverError {
3463    #[inline]
3464    fn to_value(&self) -> glib::Value {
3465        let mut value = glib::Value::for_value_type::<Self>();
3466        unsafe {
3467            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3468        }
3469        value
3470    }
3471
3472    #[inline]
3473    fn value_type(&self) -> glib::Type {
3474        Self::static_type()
3475    }
3476}
3477
3478impl From<ResolverError> for glib::Value {
3479    #[inline]
3480    fn from(v: ResolverError) -> Self {
3481        ToValue::to_value(&v)
3482    }
3483}
3484
3485/// The type of record that g_resolver_lookup_records() or
3486/// g_resolver_lookup_records_async() should retrieve. The records are returned
3487/// as lists of #GVariant tuples. Each record type has different values in
3488/// the variant tuples returned.
3489///
3490/// [`Srv`][Self::Srv] records are returned as variants with the signature
3491/// `(qqqs)`, containing a `guint16` with the priority, a `guint16` with the
3492/// weight, a `guint16` with the port, and a string of the hostname.
3493///
3494/// [`Mx`][Self::Mx] records are returned as variants with the signature
3495/// `(qs)`, representing a `guint16` with the preference, and a string containing
3496/// the mail exchanger hostname.
3497///
3498/// [`Txt`][Self::Txt] records are returned as variants with the signature
3499/// `(as)`, representing an array of the strings in the text record. Note: Most TXT
3500/// records only contain a single string, but
3501/// [RFC 1035](https://tools.ietf.org/html/rfc1035#section-3.3.14) does allow a
3502/// record to contain multiple strings. The RFC which defines the interpretation
3503/// of a specific TXT record will likely require concatenation of multiple
3504/// strings if they are present, as with
3505/// [RFC 7208](https://tools.ietf.org/html/rfc7208#section-3.3).
3506///
3507/// [`Soa`][Self::Soa] records are returned as variants with the signature
3508/// `(ssuuuuu)`, representing a string containing the primary name server, a
3509/// string containing the administrator, the serial as a `guint32`, the refresh
3510/// interval as a `guint32`, the retry interval as a `guint32`, the expire timeout
3511/// as a `guint32`, and the TTL as a `guint32`.
3512///
3513/// [`Ns`][Self::Ns] records are returned as variants with the signature
3514/// `(s)`, representing a string of the hostname of the name server.
3515#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3516#[non_exhaustive]
3517#[doc(alias = "GResolverRecordType")]
3518pub enum ResolverRecordType {
3519    /// look up DNS SRV records for a domain
3520    #[doc(alias = "G_RESOLVER_RECORD_SRV")]
3521    Srv,
3522    /// look up DNS MX records for a domain
3523    #[doc(alias = "G_RESOLVER_RECORD_MX")]
3524    Mx,
3525    /// look up DNS TXT records for a name
3526    #[doc(alias = "G_RESOLVER_RECORD_TXT")]
3527    Txt,
3528    /// look up DNS SOA records for a zone
3529    #[doc(alias = "G_RESOLVER_RECORD_SOA")]
3530    Soa,
3531    /// look up DNS NS records for a domain
3532    #[doc(alias = "G_RESOLVER_RECORD_NS")]
3533    Ns,
3534    #[doc(hidden)]
3535    __Unknown(i32),
3536}
3537
3538#[doc(hidden)]
3539impl IntoGlib for ResolverRecordType {
3540    type GlibType = ffi::GResolverRecordType;
3541
3542    #[inline]
3543    fn into_glib(self) -> ffi::GResolverRecordType {
3544        match self {
3545            Self::Srv => ffi::G_RESOLVER_RECORD_SRV,
3546            Self::Mx => ffi::G_RESOLVER_RECORD_MX,
3547            Self::Txt => ffi::G_RESOLVER_RECORD_TXT,
3548            Self::Soa => ffi::G_RESOLVER_RECORD_SOA,
3549            Self::Ns => ffi::G_RESOLVER_RECORD_NS,
3550            Self::__Unknown(value) => value,
3551        }
3552    }
3553}
3554
3555#[doc(hidden)]
3556impl FromGlib<ffi::GResolverRecordType> for ResolverRecordType {
3557    #[inline]
3558    unsafe fn from_glib(value: ffi::GResolverRecordType) -> Self {
3559        match value {
3560            ffi::G_RESOLVER_RECORD_SRV => Self::Srv,
3561            ffi::G_RESOLVER_RECORD_MX => Self::Mx,
3562            ffi::G_RESOLVER_RECORD_TXT => Self::Txt,
3563            ffi::G_RESOLVER_RECORD_SOA => Self::Soa,
3564            ffi::G_RESOLVER_RECORD_NS => Self::Ns,
3565            value => Self::__Unknown(value),
3566        }
3567    }
3568}
3569
3570impl StaticType for ResolverRecordType {
3571    #[inline]
3572    #[doc(alias = "g_resolver_record_type_get_type")]
3573    fn static_type() -> glib::Type {
3574        unsafe { from_glib(ffi::g_resolver_record_type_get_type()) }
3575    }
3576}
3577
3578impl glib::HasParamSpec for ResolverRecordType {
3579    type ParamSpec = glib::ParamSpecEnum;
3580    type SetValue = Self;
3581    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3582
3583    fn param_spec_builder() -> Self::BuilderFn {
3584        Self::ParamSpec::builder_with_default
3585    }
3586}
3587
3588impl glib::value::ValueType for ResolverRecordType {
3589    type Type = Self;
3590}
3591
3592unsafe impl<'a> glib::value::FromValue<'a> for ResolverRecordType {
3593    type Checker = glib::value::GenericValueTypeChecker<Self>;
3594
3595    #[inline]
3596    unsafe fn from_value(value: &'a glib::Value) -> Self {
3597        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3598    }
3599}
3600
3601impl ToValue for ResolverRecordType {
3602    #[inline]
3603    fn to_value(&self) -> glib::Value {
3604        let mut value = glib::Value::for_value_type::<Self>();
3605        unsafe {
3606            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3607        }
3608        value
3609    }
3610
3611    #[inline]
3612    fn value_type(&self) -> glib::Type {
3613        Self::static_type()
3614    }
3615}
3616
3617impl From<ResolverRecordType> for glib::Value {
3618    #[inline]
3619    fn from(v: ResolverRecordType) -> Self {
3620        ToValue::to_value(&v)
3621    }
3622}
3623
3624/// An error code used with `G_RESOURCE_ERROR` in a #GError returned
3625/// from a #GResource routine.
3626#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3627#[non_exhaustive]
3628#[doc(alias = "GResourceError")]
3629pub enum ResourceError {
3630    /// no file was found at the requested path
3631    #[doc(alias = "G_RESOURCE_ERROR_NOT_FOUND")]
3632    NotFound,
3633    /// unknown error
3634    #[doc(alias = "G_RESOURCE_ERROR_INTERNAL")]
3635    Internal,
3636    #[doc(hidden)]
3637    __Unknown(i32),
3638}
3639
3640#[doc(hidden)]
3641impl IntoGlib for ResourceError {
3642    type GlibType = ffi::GResourceError;
3643
3644    #[inline]
3645    fn into_glib(self) -> ffi::GResourceError {
3646        match self {
3647            Self::NotFound => ffi::G_RESOURCE_ERROR_NOT_FOUND,
3648            Self::Internal => ffi::G_RESOURCE_ERROR_INTERNAL,
3649            Self::__Unknown(value) => value,
3650        }
3651    }
3652}
3653
3654#[doc(hidden)]
3655impl FromGlib<ffi::GResourceError> for ResourceError {
3656    #[inline]
3657    unsafe fn from_glib(value: ffi::GResourceError) -> Self {
3658        match value {
3659            ffi::G_RESOURCE_ERROR_NOT_FOUND => Self::NotFound,
3660            ffi::G_RESOURCE_ERROR_INTERNAL => Self::Internal,
3661            value => Self::__Unknown(value),
3662        }
3663    }
3664}
3665
3666impl glib::error::ErrorDomain for ResourceError {
3667    #[inline]
3668    fn domain() -> glib::Quark {
3669        unsafe { from_glib(ffi::g_resource_error_quark()) }
3670    }
3671
3672    #[inline]
3673    fn code(self) -> i32 {
3674        self.into_glib()
3675    }
3676
3677    #[inline]
3678    #[allow(clippy::match_single_binding)]
3679    fn from(code: i32) -> Option<Self> {
3680        match unsafe { from_glib(code) } {
3681            value => Some(value),
3682        }
3683    }
3684}
3685
3686impl StaticType for ResourceError {
3687    #[inline]
3688    #[doc(alias = "g_resource_error_get_type")]
3689    fn static_type() -> glib::Type {
3690        unsafe { from_glib(ffi::g_resource_error_get_type()) }
3691    }
3692}
3693
3694impl glib::HasParamSpec for ResourceError {
3695    type ParamSpec = glib::ParamSpecEnum;
3696    type SetValue = Self;
3697    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3698
3699    fn param_spec_builder() -> Self::BuilderFn {
3700        Self::ParamSpec::builder_with_default
3701    }
3702}
3703
3704impl glib::value::ValueType for ResourceError {
3705    type Type = Self;
3706}
3707
3708unsafe impl<'a> glib::value::FromValue<'a> for ResourceError {
3709    type Checker = glib::value::GenericValueTypeChecker<Self>;
3710
3711    #[inline]
3712    unsafe fn from_value(value: &'a glib::Value) -> Self {
3713        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3714    }
3715}
3716
3717impl ToValue for ResourceError {
3718    #[inline]
3719    fn to_value(&self) -> glib::Value {
3720        let mut value = glib::Value::for_value_type::<Self>();
3721        unsafe {
3722            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3723        }
3724        value
3725    }
3726
3727    #[inline]
3728    fn value_type(&self) -> glib::Type {
3729        Self::static_type()
3730    }
3731}
3732
3733impl From<ResourceError> for glib::Value {
3734    #[inline]
3735    fn from(v: ResourceError) -> Self {
3736        ToValue::to_value(&v)
3737    }
3738}
3739
3740/// Describes an event occurring on a #GSocketClient. See the
3741/// #GSocketClient::event signal for more details.
3742///
3743/// Additional values may be added to this type in the future.
3744#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3745#[non_exhaustive]
3746#[doc(alias = "GSocketClientEvent")]
3747pub enum SocketClientEvent {
3748    /// The client is doing a DNS lookup.
3749    #[doc(alias = "G_SOCKET_CLIENT_RESOLVING")]
3750    Resolving,
3751    /// The client has completed a DNS lookup.
3752    #[doc(alias = "G_SOCKET_CLIENT_RESOLVED")]
3753    Resolved,
3754    /// The client is connecting to a remote
3755    ///   host (either a proxy or the destination server).
3756    #[doc(alias = "G_SOCKET_CLIENT_CONNECTING")]
3757    Connecting,
3758    /// The client has connected to a remote
3759    ///   host.
3760    #[doc(alias = "G_SOCKET_CLIENT_CONNECTED")]
3761    Connected,
3762    /// The client is negotiating
3763    ///   with a proxy to connect to the destination server.
3764    #[doc(alias = "G_SOCKET_CLIENT_PROXY_NEGOTIATING")]
3765    ProxyNegotiating,
3766    /// The client has negotiated
3767    ///   with the proxy server.
3768    #[doc(alias = "G_SOCKET_CLIENT_PROXY_NEGOTIATED")]
3769    ProxyNegotiated,
3770    /// The client is performing a
3771    ///   TLS handshake.
3772    #[doc(alias = "G_SOCKET_CLIENT_TLS_HANDSHAKING")]
3773    TlsHandshaking,
3774    /// The client has performed a
3775    ///   TLS handshake.
3776    #[doc(alias = "G_SOCKET_CLIENT_TLS_HANDSHAKED")]
3777    TlsHandshaked,
3778    /// The client is done with a particular
3779    ///   #GSocketConnectable.
3780    #[doc(alias = "G_SOCKET_CLIENT_COMPLETE")]
3781    Complete,
3782    #[doc(hidden)]
3783    __Unknown(i32),
3784}
3785
3786#[doc(hidden)]
3787impl IntoGlib for SocketClientEvent {
3788    type GlibType = ffi::GSocketClientEvent;
3789
3790    #[inline]
3791    fn into_glib(self) -> ffi::GSocketClientEvent {
3792        match self {
3793            Self::Resolving => ffi::G_SOCKET_CLIENT_RESOLVING,
3794            Self::Resolved => ffi::G_SOCKET_CLIENT_RESOLVED,
3795            Self::Connecting => ffi::G_SOCKET_CLIENT_CONNECTING,
3796            Self::Connected => ffi::G_SOCKET_CLIENT_CONNECTED,
3797            Self::ProxyNegotiating => ffi::G_SOCKET_CLIENT_PROXY_NEGOTIATING,
3798            Self::ProxyNegotiated => ffi::G_SOCKET_CLIENT_PROXY_NEGOTIATED,
3799            Self::TlsHandshaking => ffi::G_SOCKET_CLIENT_TLS_HANDSHAKING,
3800            Self::TlsHandshaked => ffi::G_SOCKET_CLIENT_TLS_HANDSHAKED,
3801            Self::Complete => ffi::G_SOCKET_CLIENT_COMPLETE,
3802            Self::__Unknown(value) => value,
3803        }
3804    }
3805}
3806
3807#[doc(hidden)]
3808impl FromGlib<ffi::GSocketClientEvent> for SocketClientEvent {
3809    #[inline]
3810    unsafe fn from_glib(value: ffi::GSocketClientEvent) -> Self {
3811        match value {
3812            ffi::G_SOCKET_CLIENT_RESOLVING => Self::Resolving,
3813            ffi::G_SOCKET_CLIENT_RESOLVED => Self::Resolved,
3814            ffi::G_SOCKET_CLIENT_CONNECTING => Self::Connecting,
3815            ffi::G_SOCKET_CLIENT_CONNECTED => Self::Connected,
3816            ffi::G_SOCKET_CLIENT_PROXY_NEGOTIATING => Self::ProxyNegotiating,
3817            ffi::G_SOCKET_CLIENT_PROXY_NEGOTIATED => Self::ProxyNegotiated,
3818            ffi::G_SOCKET_CLIENT_TLS_HANDSHAKING => Self::TlsHandshaking,
3819            ffi::G_SOCKET_CLIENT_TLS_HANDSHAKED => Self::TlsHandshaked,
3820            ffi::G_SOCKET_CLIENT_COMPLETE => Self::Complete,
3821            value => Self::__Unknown(value),
3822        }
3823    }
3824}
3825
3826impl StaticType for SocketClientEvent {
3827    #[inline]
3828    #[doc(alias = "g_socket_client_event_get_type")]
3829    fn static_type() -> glib::Type {
3830        unsafe { from_glib(ffi::g_socket_client_event_get_type()) }
3831    }
3832}
3833
3834impl glib::HasParamSpec for SocketClientEvent {
3835    type ParamSpec = glib::ParamSpecEnum;
3836    type SetValue = Self;
3837    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3838
3839    fn param_spec_builder() -> Self::BuilderFn {
3840        Self::ParamSpec::builder_with_default
3841    }
3842}
3843
3844impl glib::value::ValueType for SocketClientEvent {
3845    type Type = Self;
3846}
3847
3848unsafe impl<'a> glib::value::FromValue<'a> for SocketClientEvent {
3849    type Checker = glib::value::GenericValueTypeChecker<Self>;
3850
3851    #[inline]
3852    unsafe fn from_value(value: &'a glib::Value) -> Self {
3853        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3854    }
3855}
3856
3857impl ToValue for SocketClientEvent {
3858    #[inline]
3859    fn to_value(&self) -> glib::Value {
3860        let mut value = glib::Value::for_value_type::<Self>();
3861        unsafe {
3862            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3863        }
3864        value
3865    }
3866
3867    #[inline]
3868    fn value_type(&self) -> glib::Type {
3869        Self::static_type()
3870    }
3871}
3872
3873impl From<SocketClientEvent> for glib::Value {
3874    #[inline]
3875    fn from(v: SocketClientEvent) -> Self {
3876        ToValue::to_value(&v)
3877    }
3878}
3879
3880/// The protocol family of a #GSocketAddress. (These values are
3881/// identical to the system defines `AF_INET`, `AF_INET6` and `AF_UNIX`,
3882/// if available.)
3883#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3884#[non_exhaustive]
3885#[doc(alias = "GSocketFamily")]
3886pub enum SocketFamily {
3887    /// no address family
3888    #[doc(alias = "G_SOCKET_FAMILY_INVALID")]
3889    Invalid,
3890    /// the UNIX domain family
3891    #[doc(alias = "G_SOCKET_FAMILY_UNIX")]
3892    Unix,
3893    /// the IPv4 family
3894    #[doc(alias = "G_SOCKET_FAMILY_IPV4")]
3895    Ipv4,
3896    /// the IPv6 family
3897    #[doc(alias = "G_SOCKET_FAMILY_IPV6")]
3898    Ipv6,
3899    #[doc(hidden)]
3900    __Unknown(i32),
3901}
3902
3903#[doc(hidden)]
3904impl IntoGlib for SocketFamily {
3905    type GlibType = ffi::GSocketFamily;
3906
3907    #[inline]
3908    fn into_glib(self) -> ffi::GSocketFamily {
3909        match self {
3910            Self::Invalid => ffi::G_SOCKET_FAMILY_INVALID,
3911            Self::Unix => ffi::G_SOCKET_FAMILY_UNIX,
3912            Self::Ipv4 => ffi::G_SOCKET_FAMILY_IPV4,
3913            Self::Ipv6 => ffi::G_SOCKET_FAMILY_IPV6,
3914            Self::__Unknown(value) => value,
3915        }
3916    }
3917}
3918
3919#[doc(hidden)]
3920impl FromGlib<ffi::GSocketFamily> for SocketFamily {
3921    #[inline]
3922    unsafe fn from_glib(value: ffi::GSocketFamily) -> Self {
3923        match value {
3924            ffi::G_SOCKET_FAMILY_INVALID => Self::Invalid,
3925            ffi::G_SOCKET_FAMILY_UNIX => Self::Unix,
3926            ffi::G_SOCKET_FAMILY_IPV4 => Self::Ipv4,
3927            ffi::G_SOCKET_FAMILY_IPV6 => Self::Ipv6,
3928            value => Self::__Unknown(value),
3929        }
3930    }
3931}
3932
3933impl StaticType for SocketFamily {
3934    #[inline]
3935    #[doc(alias = "g_socket_family_get_type")]
3936    fn static_type() -> glib::Type {
3937        unsafe { from_glib(ffi::g_socket_family_get_type()) }
3938    }
3939}
3940
3941impl glib::HasParamSpec for SocketFamily {
3942    type ParamSpec = glib::ParamSpecEnum;
3943    type SetValue = Self;
3944    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3945
3946    fn param_spec_builder() -> Self::BuilderFn {
3947        Self::ParamSpec::builder_with_default
3948    }
3949}
3950
3951impl glib::value::ValueType for SocketFamily {
3952    type Type = Self;
3953}
3954
3955unsafe impl<'a> glib::value::FromValue<'a> for SocketFamily {
3956    type Checker = glib::value::GenericValueTypeChecker<Self>;
3957
3958    #[inline]
3959    unsafe fn from_value(value: &'a glib::Value) -> Self {
3960        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3961    }
3962}
3963
3964impl ToValue for SocketFamily {
3965    #[inline]
3966    fn to_value(&self) -> glib::Value {
3967        let mut value = glib::Value::for_value_type::<Self>();
3968        unsafe {
3969            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3970        }
3971        value
3972    }
3973
3974    #[inline]
3975    fn value_type(&self) -> glib::Type {
3976        Self::static_type()
3977    }
3978}
3979
3980impl From<SocketFamily> for glib::Value {
3981    #[inline]
3982    fn from(v: SocketFamily) -> Self {
3983        ToValue::to_value(&v)
3984    }
3985}
3986
3987/// Describes an event occurring on a #GSocketListener. See the
3988/// #GSocketListener::event signal for more details.
3989///
3990/// Additional values may be added to this type in the future.
3991#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3992#[non_exhaustive]
3993#[doc(alias = "GSocketListenerEvent")]
3994pub enum SocketListenerEvent {
3995    /// The listener is about to bind a socket.
3996    #[doc(alias = "G_SOCKET_LISTENER_BINDING")]
3997    Binding,
3998    /// The listener has bound a socket.
3999    #[doc(alias = "G_SOCKET_LISTENER_BOUND")]
4000    Bound,
4001    /// The listener is about to start
4002    ///    listening on this socket.
4003    #[doc(alias = "G_SOCKET_LISTENER_LISTENING")]
4004    Listening,
4005    /// The listener is now listening on
4006    ///   this socket.
4007    #[doc(alias = "G_SOCKET_LISTENER_LISTENED")]
4008    Listened,
4009    #[doc(hidden)]
4010    __Unknown(i32),
4011}
4012
4013#[doc(hidden)]
4014impl IntoGlib for SocketListenerEvent {
4015    type GlibType = ffi::GSocketListenerEvent;
4016
4017    #[inline]
4018    fn into_glib(self) -> ffi::GSocketListenerEvent {
4019        match self {
4020            Self::Binding => ffi::G_SOCKET_LISTENER_BINDING,
4021            Self::Bound => ffi::G_SOCKET_LISTENER_BOUND,
4022            Self::Listening => ffi::G_SOCKET_LISTENER_LISTENING,
4023            Self::Listened => ffi::G_SOCKET_LISTENER_LISTENED,
4024            Self::__Unknown(value) => value,
4025        }
4026    }
4027}
4028
4029#[doc(hidden)]
4030impl FromGlib<ffi::GSocketListenerEvent> for SocketListenerEvent {
4031    #[inline]
4032    unsafe fn from_glib(value: ffi::GSocketListenerEvent) -> Self {
4033        match value {
4034            ffi::G_SOCKET_LISTENER_BINDING => Self::Binding,
4035            ffi::G_SOCKET_LISTENER_BOUND => Self::Bound,
4036            ffi::G_SOCKET_LISTENER_LISTENING => Self::Listening,
4037            ffi::G_SOCKET_LISTENER_LISTENED => Self::Listened,
4038            value => Self::__Unknown(value),
4039        }
4040    }
4041}
4042
4043impl StaticType for SocketListenerEvent {
4044    #[inline]
4045    #[doc(alias = "g_socket_listener_event_get_type")]
4046    fn static_type() -> glib::Type {
4047        unsafe { from_glib(ffi::g_socket_listener_event_get_type()) }
4048    }
4049}
4050
4051impl glib::HasParamSpec for SocketListenerEvent {
4052    type ParamSpec = glib::ParamSpecEnum;
4053    type SetValue = Self;
4054    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4055
4056    fn param_spec_builder() -> Self::BuilderFn {
4057        Self::ParamSpec::builder_with_default
4058    }
4059}
4060
4061impl glib::value::ValueType for SocketListenerEvent {
4062    type Type = Self;
4063}
4064
4065unsafe impl<'a> glib::value::FromValue<'a> for SocketListenerEvent {
4066    type Checker = glib::value::GenericValueTypeChecker<Self>;
4067
4068    #[inline]
4069    unsafe fn from_value(value: &'a glib::Value) -> Self {
4070        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4071    }
4072}
4073
4074impl ToValue for SocketListenerEvent {
4075    #[inline]
4076    fn to_value(&self) -> glib::Value {
4077        let mut value = glib::Value::for_value_type::<Self>();
4078        unsafe {
4079            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4080        }
4081        value
4082    }
4083
4084    #[inline]
4085    fn value_type(&self) -> glib::Type {
4086        Self::static_type()
4087    }
4088}
4089
4090impl From<SocketListenerEvent> for glib::Value {
4091    #[inline]
4092    fn from(v: SocketListenerEvent) -> Self {
4093        ToValue::to_value(&v)
4094    }
4095}
4096
4097/// A protocol identifier is specified when creating a #GSocket, which is a
4098/// family/type specific identifier, where 0 means the default protocol for
4099/// the particular family/type.
4100///
4101/// This enum contains a set of commonly available and used protocols. You
4102/// can also pass any other identifiers handled by the platform in order to
4103/// use protocols not listed here.
4104#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4105#[non_exhaustive]
4106#[doc(alias = "GSocketProtocol")]
4107pub enum SocketProtocol {
4108    /// The protocol type is unknown
4109    #[doc(alias = "G_SOCKET_PROTOCOL_UNKNOWN")]
4110    Unknown,
4111    /// The default protocol for the family/type
4112    #[doc(alias = "G_SOCKET_PROTOCOL_DEFAULT")]
4113    Default,
4114    /// TCP over IP
4115    #[doc(alias = "G_SOCKET_PROTOCOL_TCP")]
4116    Tcp,
4117    /// UDP over IP
4118    #[doc(alias = "G_SOCKET_PROTOCOL_UDP")]
4119    Udp,
4120    /// SCTP over IP
4121    #[doc(alias = "G_SOCKET_PROTOCOL_SCTP")]
4122    Sctp,
4123    #[doc(hidden)]
4124    __Unknown(i32),
4125}
4126
4127#[doc(hidden)]
4128impl IntoGlib for SocketProtocol {
4129    type GlibType = ffi::GSocketProtocol;
4130
4131    #[inline]
4132    fn into_glib(self) -> ffi::GSocketProtocol {
4133        match self {
4134            Self::Unknown => ffi::G_SOCKET_PROTOCOL_UNKNOWN,
4135            Self::Default => ffi::G_SOCKET_PROTOCOL_DEFAULT,
4136            Self::Tcp => ffi::G_SOCKET_PROTOCOL_TCP,
4137            Self::Udp => ffi::G_SOCKET_PROTOCOL_UDP,
4138            Self::Sctp => ffi::G_SOCKET_PROTOCOL_SCTP,
4139            Self::__Unknown(value) => value,
4140        }
4141    }
4142}
4143
4144#[doc(hidden)]
4145impl FromGlib<ffi::GSocketProtocol> for SocketProtocol {
4146    #[inline]
4147    unsafe fn from_glib(value: ffi::GSocketProtocol) -> Self {
4148        match value {
4149            ffi::G_SOCKET_PROTOCOL_UNKNOWN => Self::Unknown,
4150            ffi::G_SOCKET_PROTOCOL_DEFAULT => Self::Default,
4151            ffi::G_SOCKET_PROTOCOL_TCP => Self::Tcp,
4152            ffi::G_SOCKET_PROTOCOL_UDP => Self::Udp,
4153            ffi::G_SOCKET_PROTOCOL_SCTP => Self::Sctp,
4154            value => Self::__Unknown(value),
4155        }
4156    }
4157}
4158
4159impl StaticType for SocketProtocol {
4160    #[inline]
4161    #[doc(alias = "g_socket_protocol_get_type")]
4162    fn static_type() -> glib::Type {
4163        unsafe { from_glib(ffi::g_socket_protocol_get_type()) }
4164    }
4165}
4166
4167impl glib::HasParamSpec for SocketProtocol {
4168    type ParamSpec = glib::ParamSpecEnum;
4169    type SetValue = Self;
4170    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4171
4172    fn param_spec_builder() -> Self::BuilderFn {
4173        Self::ParamSpec::builder_with_default
4174    }
4175}
4176
4177impl glib::value::ValueType for SocketProtocol {
4178    type Type = Self;
4179}
4180
4181unsafe impl<'a> glib::value::FromValue<'a> for SocketProtocol {
4182    type Checker = glib::value::GenericValueTypeChecker<Self>;
4183
4184    #[inline]
4185    unsafe fn from_value(value: &'a glib::Value) -> Self {
4186        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4187    }
4188}
4189
4190impl ToValue for SocketProtocol {
4191    #[inline]
4192    fn to_value(&self) -> glib::Value {
4193        let mut value = glib::Value::for_value_type::<Self>();
4194        unsafe {
4195            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4196        }
4197        value
4198    }
4199
4200    #[inline]
4201    fn value_type(&self) -> glib::Type {
4202        Self::static_type()
4203    }
4204}
4205
4206impl From<SocketProtocol> for glib::Value {
4207    #[inline]
4208    fn from(v: SocketProtocol) -> Self {
4209        ToValue::to_value(&v)
4210    }
4211}
4212
4213/// Flags used when creating a #GSocket. Some protocols may not implement
4214/// all the socket types.
4215#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4216#[non_exhaustive]
4217#[doc(alias = "GSocketType")]
4218pub enum SocketType {
4219    /// Type unknown or wrong
4220    #[doc(alias = "G_SOCKET_TYPE_INVALID")]
4221    Invalid,
4222    /// Reliable connection-based byte streams (e.g. TCP).
4223    #[doc(alias = "G_SOCKET_TYPE_STREAM")]
4224    Stream,
4225    /// Connectionless, unreliable datagram passing.
4226    ///     (e.g. UDP)
4227    #[doc(alias = "G_SOCKET_TYPE_DATAGRAM")]
4228    Datagram,
4229    /// Reliable connection-based passing of datagrams
4230    ///     of fixed maximum length (e.g. SCTP).
4231    #[doc(alias = "G_SOCKET_TYPE_SEQPACKET")]
4232    Seqpacket,
4233    #[doc(hidden)]
4234    __Unknown(i32),
4235}
4236
4237#[doc(hidden)]
4238impl IntoGlib for SocketType {
4239    type GlibType = ffi::GSocketType;
4240
4241    #[inline]
4242    fn into_glib(self) -> ffi::GSocketType {
4243        match self {
4244            Self::Invalid => ffi::G_SOCKET_TYPE_INVALID,
4245            Self::Stream => ffi::G_SOCKET_TYPE_STREAM,
4246            Self::Datagram => ffi::G_SOCKET_TYPE_DATAGRAM,
4247            Self::Seqpacket => ffi::G_SOCKET_TYPE_SEQPACKET,
4248            Self::__Unknown(value) => value,
4249        }
4250    }
4251}
4252
4253#[doc(hidden)]
4254impl FromGlib<ffi::GSocketType> for SocketType {
4255    #[inline]
4256    unsafe fn from_glib(value: ffi::GSocketType) -> Self {
4257        match value {
4258            ffi::G_SOCKET_TYPE_INVALID => Self::Invalid,
4259            ffi::G_SOCKET_TYPE_STREAM => Self::Stream,
4260            ffi::G_SOCKET_TYPE_DATAGRAM => Self::Datagram,
4261            ffi::G_SOCKET_TYPE_SEQPACKET => Self::Seqpacket,
4262            value => Self::__Unknown(value),
4263        }
4264    }
4265}
4266
4267impl StaticType for SocketType {
4268    #[inline]
4269    #[doc(alias = "g_socket_type_get_type")]
4270    fn static_type() -> glib::Type {
4271        unsafe { from_glib(ffi::g_socket_type_get_type()) }
4272    }
4273}
4274
4275impl glib::HasParamSpec for SocketType {
4276    type ParamSpec = glib::ParamSpecEnum;
4277    type SetValue = Self;
4278    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4279
4280    fn param_spec_builder() -> Self::BuilderFn {
4281        Self::ParamSpec::builder_with_default
4282    }
4283}
4284
4285impl glib::value::ValueType for SocketType {
4286    type Type = Self;
4287}
4288
4289unsafe impl<'a> glib::value::FromValue<'a> for SocketType {
4290    type Checker = glib::value::GenericValueTypeChecker<Self>;
4291
4292    #[inline]
4293    unsafe fn from_value(value: &'a glib::Value) -> Self {
4294        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4295    }
4296}
4297
4298impl ToValue for SocketType {
4299    #[inline]
4300    fn to_value(&self) -> glib::Value {
4301        let mut value = glib::Value::for_value_type::<Self>();
4302        unsafe {
4303            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4304        }
4305        value
4306    }
4307
4308    #[inline]
4309    fn value_type(&self) -> glib::Type {
4310        Self::static_type()
4311    }
4312}
4313
4314impl From<SocketType> for glib::Value {
4315    #[inline]
4316    fn from(v: SocketType) -> Self {
4317        ToValue::to_value(&v)
4318    }
4319}
4320
4321/// The client authentication mode for a #GTlsServerConnection.
4322#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4323#[non_exhaustive]
4324#[doc(alias = "GTlsAuthenticationMode")]
4325pub enum TlsAuthenticationMode {
4326    /// client authentication not required
4327    #[doc(alias = "G_TLS_AUTHENTICATION_NONE")]
4328    None,
4329    /// client authentication is requested
4330    #[doc(alias = "G_TLS_AUTHENTICATION_REQUESTED")]
4331    Requested,
4332    /// client authentication is required
4333    #[doc(alias = "G_TLS_AUTHENTICATION_REQUIRED")]
4334    Required,
4335    #[doc(hidden)]
4336    __Unknown(i32),
4337}
4338
4339#[doc(hidden)]
4340impl IntoGlib for TlsAuthenticationMode {
4341    type GlibType = ffi::GTlsAuthenticationMode;
4342
4343    #[inline]
4344    fn into_glib(self) -> ffi::GTlsAuthenticationMode {
4345        match self {
4346            Self::None => ffi::G_TLS_AUTHENTICATION_NONE,
4347            Self::Requested => ffi::G_TLS_AUTHENTICATION_REQUESTED,
4348            Self::Required => ffi::G_TLS_AUTHENTICATION_REQUIRED,
4349            Self::__Unknown(value) => value,
4350        }
4351    }
4352}
4353
4354#[doc(hidden)]
4355impl FromGlib<ffi::GTlsAuthenticationMode> for TlsAuthenticationMode {
4356    #[inline]
4357    unsafe fn from_glib(value: ffi::GTlsAuthenticationMode) -> Self {
4358        match value {
4359            ffi::G_TLS_AUTHENTICATION_NONE => Self::None,
4360            ffi::G_TLS_AUTHENTICATION_REQUESTED => Self::Requested,
4361            ffi::G_TLS_AUTHENTICATION_REQUIRED => Self::Required,
4362            value => Self::__Unknown(value),
4363        }
4364    }
4365}
4366
4367impl StaticType for TlsAuthenticationMode {
4368    #[inline]
4369    #[doc(alias = "g_tls_authentication_mode_get_type")]
4370    fn static_type() -> glib::Type {
4371        unsafe { from_glib(ffi::g_tls_authentication_mode_get_type()) }
4372    }
4373}
4374
4375impl glib::HasParamSpec for TlsAuthenticationMode {
4376    type ParamSpec = glib::ParamSpecEnum;
4377    type SetValue = Self;
4378    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4379
4380    fn param_spec_builder() -> Self::BuilderFn {
4381        Self::ParamSpec::builder_with_default
4382    }
4383}
4384
4385impl glib::value::ValueType for TlsAuthenticationMode {
4386    type Type = Self;
4387}
4388
4389unsafe impl<'a> glib::value::FromValue<'a> for TlsAuthenticationMode {
4390    type Checker = glib::value::GenericValueTypeChecker<Self>;
4391
4392    #[inline]
4393    unsafe fn from_value(value: &'a glib::Value) -> Self {
4394        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4395    }
4396}
4397
4398impl ToValue for TlsAuthenticationMode {
4399    #[inline]
4400    fn to_value(&self) -> glib::Value {
4401        let mut value = glib::Value::for_value_type::<Self>();
4402        unsafe {
4403            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4404        }
4405        value
4406    }
4407
4408    #[inline]
4409    fn value_type(&self) -> glib::Type {
4410        Self::static_type()
4411    }
4412}
4413
4414impl From<TlsAuthenticationMode> for glib::Value {
4415    #[inline]
4416    fn from(v: TlsAuthenticationMode) -> Self {
4417        ToValue::to_value(&v)
4418    }
4419}
4420
4421/// An error code used with `G_TLS_CHANNEL_BINDING_ERROR` in a #GError to
4422/// indicate a TLS channel binding retrieval error.
4423#[cfg(feature = "v2_66")]
4424#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4425#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4426#[non_exhaustive]
4427#[doc(alias = "GTlsChannelBindingError")]
4428pub enum TlsChannelBindingError {
4429    /// Either entire binding
4430    ///    retrieval facility or specific binding type is not implemented in the
4431    ///    TLS backend.
4432    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED")]
4433    NotImplemented,
4434    /// The handshake is not yet
4435    ///    complete on the connection which is a strong requirement for any existing
4436    ///    binding type.
4437    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE")]
4438    InvalidState,
4439    /// Handshake is complete but
4440    ///    binding data is not available. That normally indicates the TLS
4441    ///    implementation failed to provide the binding data. For example, some
4442    ///    implementations do not provide a peer certificate for resumed connections.
4443    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE")]
4444    NotAvailable,
4445    /// Binding type is not supported
4446    ///    on the current connection. This error could be triggered when requesting
4447    ///    `tls-server-end-point` binding data for a certificate which has no hash
4448    ///    function or uses multiple hash functions.
4449    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED")]
4450    NotSupported,
4451    /// Any other backend error
4452    ///    preventing binding data retrieval.
4453    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR")]
4454    GeneralError,
4455    #[doc(hidden)]
4456    __Unknown(i32),
4457}
4458
4459#[cfg(feature = "v2_66")]
4460#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4461#[doc(hidden)]
4462impl IntoGlib for TlsChannelBindingError {
4463    type GlibType = ffi::GTlsChannelBindingError;
4464
4465    #[inline]
4466    fn into_glib(self) -> ffi::GTlsChannelBindingError {
4467        match self {
4468            Self::NotImplemented => ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED,
4469            Self::InvalidState => ffi::G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE,
4470            Self::NotAvailable => ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE,
4471            Self::NotSupported => ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED,
4472            Self::GeneralError => ffi::G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR,
4473            Self::__Unknown(value) => value,
4474        }
4475    }
4476}
4477
4478#[cfg(feature = "v2_66")]
4479#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4480#[doc(hidden)]
4481impl FromGlib<ffi::GTlsChannelBindingError> for TlsChannelBindingError {
4482    #[inline]
4483    unsafe fn from_glib(value: ffi::GTlsChannelBindingError) -> Self {
4484        match value {
4485            ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED => Self::NotImplemented,
4486            ffi::G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE => Self::InvalidState,
4487            ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE => Self::NotAvailable,
4488            ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED => Self::NotSupported,
4489            ffi::G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR => Self::GeneralError,
4490            value => Self::__Unknown(value),
4491        }
4492    }
4493}
4494
4495#[cfg(feature = "v2_66")]
4496#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4497impl glib::error::ErrorDomain for TlsChannelBindingError {
4498    #[inline]
4499    fn domain() -> glib::Quark {
4500        unsafe { from_glib(ffi::g_tls_channel_binding_error_quark()) }
4501    }
4502
4503    #[inline]
4504    fn code(self) -> i32 {
4505        self.into_glib()
4506    }
4507
4508    #[inline]
4509    #[allow(clippy::match_single_binding)]
4510    fn from(code: i32) -> Option<Self> {
4511        match unsafe { from_glib(code) } {
4512            value => Some(value),
4513        }
4514    }
4515}
4516
4517#[cfg(feature = "v2_66")]
4518#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4519impl StaticType for TlsChannelBindingError {
4520    #[inline]
4521    #[doc(alias = "g_tls_channel_binding_error_get_type")]
4522    fn static_type() -> glib::Type {
4523        unsafe { from_glib(ffi::g_tls_channel_binding_error_get_type()) }
4524    }
4525}
4526
4527#[cfg(feature = "v2_66")]
4528#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4529impl glib::HasParamSpec for TlsChannelBindingError {
4530    type ParamSpec = glib::ParamSpecEnum;
4531    type SetValue = Self;
4532    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4533
4534    fn param_spec_builder() -> Self::BuilderFn {
4535        Self::ParamSpec::builder_with_default
4536    }
4537}
4538
4539#[cfg(feature = "v2_66")]
4540#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4541impl glib::value::ValueType for TlsChannelBindingError {
4542    type Type = Self;
4543}
4544
4545#[cfg(feature = "v2_66")]
4546#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4547unsafe impl<'a> glib::value::FromValue<'a> for TlsChannelBindingError {
4548    type Checker = glib::value::GenericValueTypeChecker<Self>;
4549
4550    #[inline]
4551    unsafe fn from_value(value: &'a glib::Value) -> Self {
4552        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4553    }
4554}
4555
4556#[cfg(feature = "v2_66")]
4557#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4558impl ToValue for TlsChannelBindingError {
4559    #[inline]
4560    fn to_value(&self) -> glib::Value {
4561        let mut value = glib::Value::for_value_type::<Self>();
4562        unsafe {
4563            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4564        }
4565        value
4566    }
4567
4568    #[inline]
4569    fn value_type(&self) -> glib::Type {
4570        Self::static_type()
4571    }
4572}
4573
4574#[cfg(feature = "v2_66")]
4575#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4576impl From<TlsChannelBindingError> for glib::Value {
4577    #[inline]
4578    fn from(v: TlsChannelBindingError) -> Self {
4579        ToValue::to_value(&v)
4580    }
4581}
4582
4583/// The type of TLS channel binding data to retrieve from #GTlsConnection
4584/// or #GDtlsConnection, as documented by RFC 5929 or RFC 9266. The
4585/// [`tls-unique-for-telnet`](https://tools.ietf.org/html/rfc5929#section-5)
4586/// binding type is not currently implemented.
4587#[cfg(feature = "v2_66")]
4588#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4589#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4590#[non_exhaustive]
4591#[doc(alias = "GTlsChannelBindingType")]
4592pub enum TlsChannelBindingType {
4593    /// [`tls-unique`](https://tools.ietf.org/html/rfc5929#section-3) binding
4594    ///    type
4595    #[doc(alias = "G_TLS_CHANNEL_BINDING_TLS_UNIQUE")]
4596    Unique,
4597    /// [`tls-server-end-point`](https://tools.ietf.org/html/rfc5929#section-4)
4598    ///    binding type
4599    #[doc(alias = "G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT")]
4600    ServerEndPoint,
4601    /// [`tls-exporter`](https://www.rfc-editor.org/rfc/rfc9266.html) binding
4602    ///    type. Since: 2.74
4603    #[cfg(feature = "v2_74")]
4604    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
4605    #[doc(alias = "G_TLS_CHANNEL_BINDING_TLS_EXPORTER")]
4606    Exporter,
4607    #[doc(hidden)]
4608    __Unknown(i32),
4609}
4610
4611#[cfg(feature = "v2_66")]
4612#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4613#[doc(hidden)]
4614impl IntoGlib for TlsChannelBindingType {
4615    type GlibType = ffi::GTlsChannelBindingType;
4616
4617    #[inline]
4618    fn into_glib(self) -> ffi::GTlsChannelBindingType {
4619        match self {
4620            Self::Unique => ffi::G_TLS_CHANNEL_BINDING_TLS_UNIQUE,
4621            Self::ServerEndPoint => ffi::G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT,
4622            #[cfg(feature = "v2_74")]
4623            Self::Exporter => ffi::G_TLS_CHANNEL_BINDING_TLS_EXPORTER,
4624            Self::__Unknown(value) => value,
4625        }
4626    }
4627}
4628
4629#[cfg(feature = "v2_66")]
4630#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4631#[doc(hidden)]
4632impl FromGlib<ffi::GTlsChannelBindingType> for TlsChannelBindingType {
4633    #[inline]
4634    unsafe fn from_glib(value: ffi::GTlsChannelBindingType) -> Self {
4635        match value {
4636            ffi::G_TLS_CHANNEL_BINDING_TLS_UNIQUE => Self::Unique,
4637            ffi::G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT => Self::ServerEndPoint,
4638            #[cfg(feature = "v2_74")]
4639            ffi::G_TLS_CHANNEL_BINDING_TLS_EXPORTER => Self::Exporter,
4640            value => Self::__Unknown(value),
4641        }
4642    }
4643}
4644
4645#[cfg(feature = "v2_66")]
4646#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4647impl StaticType for TlsChannelBindingType {
4648    #[inline]
4649    #[doc(alias = "g_tls_channel_binding_type_get_type")]
4650    fn static_type() -> glib::Type {
4651        unsafe { from_glib(ffi::g_tls_channel_binding_type_get_type()) }
4652    }
4653}
4654
4655#[cfg(feature = "v2_66")]
4656#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4657impl glib::HasParamSpec for TlsChannelBindingType {
4658    type ParamSpec = glib::ParamSpecEnum;
4659    type SetValue = Self;
4660    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4661
4662    fn param_spec_builder() -> Self::BuilderFn {
4663        Self::ParamSpec::builder_with_default
4664    }
4665}
4666
4667#[cfg(feature = "v2_66")]
4668#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4669impl glib::value::ValueType for TlsChannelBindingType {
4670    type Type = Self;
4671}
4672
4673#[cfg(feature = "v2_66")]
4674#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4675unsafe impl<'a> glib::value::FromValue<'a> for TlsChannelBindingType {
4676    type Checker = glib::value::GenericValueTypeChecker<Self>;
4677
4678    #[inline]
4679    unsafe fn from_value(value: &'a glib::Value) -> Self {
4680        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4681    }
4682}
4683
4684#[cfg(feature = "v2_66")]
4685#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4686impl ToValue for TlsChannelBindingType {
4687    #[inline]
4688    fn to_value(&self) -> glib::Value {
4689        let mut value = glib::Value::for_value_type::<Self>();
4690        unsafe {
4691            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4692        }
4693        value
4694    }
4695
4696    #[inline]
4697    fn value_type(&self) -> glib::Type {
4698        Self::static_type()
4699    }
4700}
4701
4702#[cfg(feature = "v2_66")]
4703#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4704impl From<TlsChannelBindingType> for glib::Value {
4705    #[inline]
4706    fn from(v: TlsChannelBindingType) -> Self {
4707        ToValue::to_value(&v)
4708    }
4709}
4710
4711/// An error code used with `G_TLS_ERROR` in a #GError returned from a
4712/// TLS-related routine.
4713#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4714#[non_exhaustive]
4715#[doc(alias = "GTlsError")]
4716pub enum TlsError {
4717    /// No TLS provider is available
4718    #[doc(alias = "G_TLS_ERROR_UNAVAILABLE")]
4719    Unavailable,
4720    /// Miscellaneous TLS error
4721    #[doc(alias = "G_TLS_ERROR_MISC")]
4722    Misc,
4723    /// The certificate presented could not
4724    ///   be parsed or failed validation.
4725    #[doc(alias = "G_TLS_ERROR_BAD_CERTIFICATE")]
4726    BadCertificate,
4727    /// The TLS handshake failed because the
4728    ///   peer does not seem to be a TLS server.
4729    #[doc(alias = "G_TLS_ERROR_NOT_TLS")]
4730    NotTls,
4731    /// The TLS handshake failed because the
4732    ///   peer's certificate was not acceptable.
4733    #[doc(alias = "G_TLS_ERROR_HANDSHAKE")]
4734    Handshake,
4735    /// The TLS handshake failed because
4736    ///   the server requested a client-side certificate, but none was
4737    ///   provided. See g_tls_connection_set_certificate().
4738    #[doc(alias = "G_TLS_ERROR_CERTIFICATE_REQUIRED")]
4739    CertificateRequired,
4740    /// The TLS connection was closed without proper
4741    ///   notice, which may indicate an attack. See
4742    ///   g_tls_connection_set_require_close_notify().
4743    #[doc(alias = "G_TLS_ERROR_EOF")]
4744    Eof,
4745    /// The TLS handshake failed
4746    ///   because the client sent the fallback SCSV, indicating a protocol
4747    ///   downgrade attack. Since: 2.60
4748    #[doc(alias = "G_TLS_ERROR_INAPPROPRIATE_FALLBACK")]
4749    InappropriateFallback,
4750    /// The certificate failed
4751    ///   to load because a password was incorrect. Since: 2.72
4752    #[cfg(feature = "v2_72")]
4753    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
4754    #[doc(alias = "G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD")]
4755    BadCertificatePassword,
4756    #[doc(hidden)]
4757    __Unknown(i32),
4758}
4759
4760#[doc(hidden)]
4761impl IntoGlib for TlsError {
4762    type GlibType = ffi::GTlsError;
4763
4764    #[inline]
4765    fn into_glib(self) -> ffi::GTlsError {
4766        match self {
4767            Self::Unavailable => ffi::G_TLS_ERROR_UNAVAILABLE,
4768            Self::Misc => ffi::G_TLS_ERROR_MISC,
4769            Self::BadCertificate => ffi::G_TLS_ERROR_BAD_CERTIFICATE,
4770            Self::NotTls => ffi::G_TLS_ERROR_NOT_TLS,
4771            Self::Handshake => ffi::G_TLS_ERROR_HANDSHAKE,
4772            Self::CertificateRequired => ffi::G_TLS_ERROR_CERTIFICATE_REQUIRED,
4773            Self::Eof => ffi::G_TLS_ERROR_EOF,
4774            Self::InappropriateFallback => ffi::G_TLS_ERROR_INAPPROPRIATE_FALLBACK,
4775            #[cfg(feature = "v2_72")]
4776            Self::BadCertificatePassword => ffi::G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD,
4777            Self::__Unknown(value) => value,
4778        }
4779    }
4780}
4781
4782#[doc(hidden)]
4783impl FromGlib<ffi::GTlsError> for TlsError {
4784    #[inline]
4785    unsafe fn from_glib(value: ffi::GTlsError) -> Self {
4786        match value {
4787            ffi::G_TLS_ERROR_UNAVAILABLE => Self::Unavailable,
4788            ffi::G_TLS_ERROR_MISC => Self::Misc,
4789            ffi::G_TLS_ERROR_BAD_CERTIFICATE => Self::BadCertificate,
4790            ffi::G_TLS_ERROR_NOT_TLS => Self::NotTls,
4791            ffi::G_TLS_ERROR_HANDSHAKE => Self::Handshake,
4792            ffi::G_TLS_ERROR_CERTIFICATE_REQUIRED => Self::CertificateRequired,
4793            ffi::G_TLS_ERROR_EOF => Self::Eof,
4794            ffi::G_TLS_ERROR_INAPPROPRIATE_FALLBACK => Self::InappropriateFallback,
4795            #[cfg(feature = "v2_72")]
4796            ffi::G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD => Self::BadCertificatePassword,
4797            value => Self::__Unknown(value),
4798        }
4799    }
4800}
4801
4802impl glib::error::ErrorDomain for TlsError {
4803    #[inline]
4804    fn domain() -> glib::Quark {
4805        unsafe { from_glib(ffi::g_tls_error_quark()) }
4806    }
4807
4808    #[inline]
4809    fn code(self) -> i32 {
4810        self.into_glib()
4811    }
4812
4813    #[inline]
4814    #[allow(clippy::match_single_binding)]
4815    fn from(code: i32) -> Option<Self> {
4816        match unsafe { from_glib(code) } {
4817            value => Some(value),
4818        }
4819    }
4820}
4821
4822impl StaticType for TlsError {
4823    #[inline]
4824    #[doc(alias = "g_tls_error_get_type")]
4825    fn static_type() -> glib::Type {
4826        unsafe { from_glib(ffi::g_tls_error_get_type()) }
4827    }
4828}
4829
4830impl glib::HasParamSpec for TlsError {
4831    type ParamSpec = glib::ParamSpecEnum;
4832    type SetValue = Self;
4833    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4834
4835    fn param_spec_builder() -> Self::BuilderFn {
4836        Self::ParamSpec::builder_with_default
4837    }
4838}
4839
4840impl glib::value::ValueType for TlsError {
4841    type Type = Self;
4842}
4843
4844unsafe impl<'a> glib::value::FromValue<'a> for TlsError {
4845    type Checker = glib::value::GenericValueTypeChecker<Self>;
4846
4847    #[inline]
4848    unsafe fn from_value(value: &'a glib::Value) -> Self {
4849        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4850    }
4851}
4852
4853impl ToValue for TlsError {
4854    #[inline]
4855    fn to_value(&self) -> glib::Value {
4856        let mut value = glib::Value::for_value_type::<Self>();
4857        unsafe {
4858            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4859        }
4860        value
4861    }
4862
4863    #[inline]
4864    fn value_type(&self) -> glib::Type {
4865        Self::static_type()
4866    }
4867}
4868
4869impl From<TlsError> for glib::Value {
4870    #[inline]
4871    fn from(v: TlsError) -> Self {
4872        ToValue::to_value(&v)
4873    }
4874}
4875
4876/// #GTlsInteractionResult is returned by various functions in #GTlsInteraction
4877/// when finishing an interaction request.
4878#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4879#[non_exhaustive]
4880#[doc(alias = "GTlsInteractionResult")]
4881pub enum TlsInteractionResult {
4882    /// The interaction was unhandled (i.e. not
4883    ///     implemented).
4884    #[doc(alias = "G_TLS_INTERACTION_UNHANDLED")]
4885    Unhandled,
4886    /// The interaction completed, and resulting data
4887    ///     is available.
4888    #[doc(alias = "G_TLS_INTERACTION_HANDLED")]
4889    Handled,
4890    /// The interaction has failed, or was cancelled.
4891    ///     and the operation should be aborted.
4892    #[doc(alias = "G_TLS_INTERACTION_FAILED")]
4893    Failed,
4894    #[doc(hidden)]
4895    __Unknown(i32),
4896}
4897
4898#[doc(hidden)]
4899impl IntoGlib for TlsInteractionResult {
4900    type GlibType = ffi::GTlsInteractionResult;
4901
4902    #[inline]
4903    fn into_glib(self) -> ffi::GTlsInteractionResult {
4904        match self {
4905            Self::Unhandled => ffi::G_TLS_INTERACTION_UNHANDLED,
4906            Self::Handled => ffi::G_TLS_INTERACTION_HANDLED,
4907            Self::Failed => ffi::G_TLS_INTERACTION_FAILED,
4908            Self::__Unknown(value) => value,
4909        }
4910    }
4911}
4912
4913#[doc(hidden)]
4914impl FromGlib<ffi::GTlsInteractionResult> for TlsInteractionResult {
4915    #[inline]
4916    unsafe fn from_glib(value: ffi::GTlsInteractionResult) -> Self {
4917        match value {
4918            ffi::G_TLS_INTERACTION_UNHANDLED => Self::Unhandled,
4919            ffi::G_TLS_INTERACTION_HANDLED => Self::Handled,
4920            ffi::G_TLS_INTERACTION_FAILED => Self::Failed,
4921            value => Self::__Unknown(value),
4922        }
4923    }
4924}
4925
4926impl StaticType for TlsInteractionResult {
4927    #[inline]
4928    #[doc(alias = "g_tls_interaction_result_get_type")]
4929    fn static_type() -> glib::Type {
4930        unsafe { from_glib(ffi::g_tls_interaction_result_get_type()) }
4931    }
4932}
4933
4934impl glib::HasParamSpec for TlsInteractionResult {
4935    type ParamSpec = glib::ParamSpecEnum;
4936    type SetValue = Self;
4937    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4938
4939    fn param_spec_builder() -> Self::BuilderFn {
4940        Self::ParamSpec::builder_with_default
4941    }
4942}
4943
4944impl glib::value::ValueType for TlsInteractionResult {
4945    type Type = Self;
4946}
4947
4948unsafe impl<'a> glib::value::FromValue<'a> for TlsInteractionResult {
4949    type Checker = glib::value::GenericValueTypeChecker<Self>;
4950
4951    #[inline]
4952    unsafe fn from_value(value: &'a glib::Value) -> Self {
4953        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4954    }
4955}
4956
4957impl ToValue for TlsInteractionResult {
4958    #[inline]
4959    fn to_value(&self) -> glib::Value {
4960        let mut value = glib::Value::for_value_type::<Self>();
4961        unsafe {
4962            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4963        }
4964        value
4965    }
4966
4967    #[inline]
4968    fn value_type(&self) -> glib::Type {
4969        Self::static_type()
4970    }
4971}
4972
4973impl From<TlsInteractionResult> for glib::Value {
4974    #[inline]
4975    fn from(v: TlsInteractionResult) -> Self {
4976        ToValue::to_value(&v)
4977    }
4978}
4979
4980/// The TLS or DTLS protocol version used by a #GTlsConnection or
4981/// #GDtlsConnection. The integer values of these versions are sequential
4982/// to ensure newer known protocol versions compare greater than older
4983/// known versions. Any known DTLS protocol version will compare greater
4984/// than any SSL or TLS protocol version. The protocol version may be
4985/// [`Unknown`][Self::Unknown] if the TLS backend supports a newer
4986/// protocol version that GLib does not yet know about. This means that
4987/// it's possible for an unknown DTLS protocol version to compare less
4988/// than the TLS protocol versions.
4989#[cfg(feature = "v2_70")]
4990#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4991#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4992#[non_exhaustive]
4993#[doc(alias = "GTlsProtocolVersion")]
4994pub enum TlsProtocolVersion {
4995    /// No protocol version or unknown protocol version
4996    #[doc(alias = "G_TLS_PROTOCOL_VERSION_UNKNOWN")]
4997    Unknown,
4998    /// SSL 3.0, which is insecure and should not be used
4999    #[doc(alias = "G_TLS_PROTOCOL_VERSION_SSL_3_0")]
5000    Ssl30,
5001    /// TLS 1.0, which is insecure and should not be used
5002    #[doc(alias = "G_TLS_PROTOCOL_VERSION_TLS_1_0")]
5003    Tls10,
5004    /// TLS 1.1, which is insecure and should not be used
5005    #[doc(alias = "G_TLS_PROTOCOL_VERSION_TLS_1_1")]
5006    Tls11,
5007    /// TLS 1.2, defined by [RFC 5246](https://datatracker.ietf.org/doc/html/rfc5246)
5008    #[doc(alias = "G_TLS_PROTOCOL_VERSION_TLS_1_2")]
5009    Tls12,
5010    /// TLS 1.3, defined by [RFC 8446](https://datatracker.ietf.org/doc/html/rfc8446)
5011    #[doc(alias = "G_TLS_PROTOCOL_VERSION_TLS_1_3")]
5012    Tls13,
5013    /// DTLS 1.0, which is insecure and should not be used
5014    #[doc(alias = "G_TLS_PROTOCOL_VERSION_DTLS_1_0")]
5015    Dtls10,
5016    /// DTLS 1.2, defined by [RFC 6347](https://datatracker.ietf.org/doc/html/rfc6347)
5017    #[doc(alias = "G_TLS_PROTOCOL_VERSION_DTLS_1_2")]
5018    Dtls12,
5019    #[doc(hidden)]
5020    __Unknown(i32),
5021}
5022
5023#[cfg(feature = "v2_70")]
5024#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5025#[doc(hidden)]
5026impl IntoGlib for TlsProtocolVersion {
5027    type GlibType = ffi::GTlsProtocolVersion;
5028
5029    #[inline]
5030    fn into_glib(self) -> ffi::GTlsProtocolVersion {
5031        match self {
5032            Self::Unknown => ffi::G_TLS_PROTOCOL_VERSION_UNKNOWN,
5033            Self::Ssl30 => ffi::G_TLS_PROTOCOL_VERSION_SSL_3_0,
5034            Self::Tls10 => ffi::G_TLS_PROTOCOL_VERSION_TLS_1_0,
5035            Self::Tls11 => ffi::G_TLS_PROTOCOL_VERSION_TLS_1_1,
5036            Self::Tls12 => ffi::G_TLS_PROTOCOL_VERSION_TLS_1_2,
5037            Self::Tls13 => ffi::G_TLS_PROTOCOL_VERSION_TLS_1_3,
5038            Self::Dtls10 => ffi::G_TLS_PROTOCOL_VERSION_DTLS_1_0,
5039            Self::Dtls12 => ffi::G_TLS_PROTOCOL_VERSION_DTLS_1_2,
5040            Self::__Unknown(value) => value,
5041        }
5042    }
5043}
5044
5045#[cfg(feature = "v2_70")]
5046#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5047#[doc(hidden)]
5048impl FromGlib<ffi::GTlsProtocolVersion> for TlsProtocolVersion {
5049    #[inline]
5050    unsafe fn from_glib(value: ffi::GTlsProtocolVersion) -> Self {
5051        match value {
5052            ffi::G_TLS_PROTOCOL_VERSION_UNKNOWN => Self::Unknown,
5053            ffi::G_TLS_PROTOCOL_VERSION_SSL_3_0 => Self::Ssl30,
5054            ffi::G_TLS_PROTOCOL_VERSION_TLS_1_0 => Self::Tls10,
5055            ffi::G_TLS_PROTOCOL_VERSION_TLS_1_1 => Self::Tls11,
5056            ffi::G_TLS_PROTOCOL_VERSION_TLS_1_2 => Self::Tls12,
5057            ffi::G_TLS_PROTOCOL_VERSION_TLS_1_3 => Self::Tls13,
5058            ffi::G_TLS_PROTOCOL_VERSION_DTLS_1_0 => Self::Dtls10,
5059            ffi::G_TLS_PROTOCOL_VERSION_DTLS_1_2 => Self::Dtls12,
5060            value => Self::__Unknown(value),
5061        }
5062    }
5063}
5064
5065#[cfg(feature = "v2_70")]
5066#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5067impl StaticType for TlsProtocolVersion {
5068    #[inline]
5069    #[doc(alias = "g_tls_protocol_version_get_type")]
5070    fn static_type() -> glib::Type {
5071        unsafe { from_glib(ffi::g_tls_protocol_version_get_type()) }
5072    }
5073}
5074
5075#[cfg(feature = "v2_70")]
5076#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5077impl glib::HasParamSpec for TlsProtocolVersion {
5078    type ParamSpec = glib::ParamSpecEnum;
5079    type SetValue = Self;
5080    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5081
5082    fn param_spec_builder() -> Self::BuilderFn {
5083        Self::ParamSpec::builder_with_default
5084    }
5085}
5086
5087#[cfg(feature = "v2_70")]
5088#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5089impl glib::value::ValueType for TlsProtocolVersion {
5090    type Type = Self;
5091}
5092
5093#[cfg(feature = "v2_70")]
5094#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5095unsafe impl<'a> glib::value::FromValue<'a> for TlsProtocolVersion {
5096    type Checker = glib::value::GenericValueTypeChecker<Self>;
5097
5098    #[inline]
5099    unsafe fn from_value(value: &'a glib::Value) -> Self {
5100        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5101    }
5102}
5103
5104#[cfg(feature = "v2_70")]
5105#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5106impl ToValue for TlsProtocolVersion {
5107    #[inline]
5108    fn to_value(&self) -> glib::Value {
5109        let mut value = glib::Value::for_value_type::<Self>();
5110        unsafe {
5111            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5112        }
5113        value
5114    }
5115
5116    #[inline]
5117    fn value_type(&self) -> glib::Type {
5118        Self::static_type()
5119    }
5120}
5121
5122#[cfg(feature = "v2_70")]
5123#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5124impl From<TlsProtocolVersion> for glib::Value {
5125    #[inline]
5126    fn from(v: TlsProtocolVersion) -> Self {
5127        ToValue::to_value(&v)
5128    }
5129}
5130
5131/// When to allow rehandshaking. See
5132/// g_tls_connection_set_rehandshake_mode().
5133///
5134/// # Deprecated since 2.60
5135///
5136/// Changing the rehandshake mode is no longer
5137///   required for compatibility. Also, rehandshaking has been removed
5138///   from the TLS protocol in TLS 1.3.
5139#[cfg_attr(feature = "v2_60", deprecated = "Since 2.60")]
5140#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5141#[non_exhaustive]
5142#[doc(alias = "GTlsRehandshakeMode")]
5143pub enum TlsRehandshakeMode {
5144    /// Never allow rehandshaking
5145    #[doc(alias = "G_TLS_REHANDSHAKE_NEVER")]
5146    Never,
5147    /// Allow safe rehandshaking only
5148    #[doc(alias = "G_TLS_REHANDSHAKE_SAFELY")]
5149    Safely,
5150    /// Allow unsafe rehandshaking
5151    #[doc(alias = "G_TLS_REHANDSHAKE_UNSAFELY")]
5152    Unsafely,
5153    #[doc(hidden)]
5154    __Unknown(i32),
5155}
5156
5157#[allow(deprecated)]
5158#[doc(hidden)]
5159impl IntoGlib for TlsRehandshakeMode {
5160    type GlibType = ffi::GTlsRehandshakeMode;
5161
5162    #[inline]
5163    fn into_glib(self) -> ffi::GTlsRehandshakeMode {
5164        match self {
5165            Self::Never => ffi::G_TLS_REHANDSHAKE_NEVER,
5166            Self::Safely => ffi::G_TLS_REHANDSHAKE_SAFELY,
5167            Self::Unsafely => ffi::G_TLS_REHANDSHAKE_UNSAFELY,
5168            Self::__Unknown(value) => value,
5169        }
5170    }
5171}
5172
5173#[allow(deprecated)]
5174#[doc(hidden)]
5175impl FromGlib<ffi::GTlsRehandshakeMode> for TlsRehandshakeMode {
5176    #[inline]
5177    unsafe fn from_glib(value: ffi::GTlsRehandshakeMode) -> Self {
5178        match value {
5179            ffi::G_TLS_REHANDSHAKE_NEVER => Self::Never,
5180            ffi::G_TLS_REHANDSHAKE_SAFELY => Self::Safely,
5181            ffi::G_TLS_REHANDSHAKE_UNSAFELY => Self::Unsafely,
5182            value => Self::__Unknown(value),
5183        }
5184    }
5185}
5186
5187#[allow(deprecated)]
5188impl StaticType for TlsRehandshakeMode {
5189    #[inline]
5190    #[doc(alias = "g_tls_rehandshake_mode_get_type")]
5191    fn static_type() -> glib::Type {
5192        unsafe { from_glib(ffi::g_tls_rehandshake_mode_get_type()) }
5193    }
5194}
5195
5196#[allow(deprecated)]
5197impl glib::HasParamSpec for TlsRehandshakeMode {
5198    type ParamSpec = glib::ParamSpecEnum;
5199    type SetValue = Self;
5200    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5201
5202    fn param_spec_builder() -> Self::BuilderFn {
5203        Self::ParamSpec::builder_with_default
5204    }
5205}
5206
5207#[allow(deprecated)]
5208impl glib::value::ValueType for TlsRehandshakeMode {
5209    type Type = Self;
5210}
5211
5212#[allow(deprecated)]
5213unsafe impl<'a> glib::value::FromValue<'a> for TlsRehandshakeMode {
5214    type Checker = glib::value::GenericValueTypeChecker<Self>;
5215
5216    #[inline]
5217    unsafe fn from_value(value: &'a glib::Value) -> Self {
5218        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5219    }
5220}
5221
5222#[allow(deprecated)]
5223impl ToValue for TlsRehandshakeMode {
5224    #[inline]
5225    fn to_value(&self) -> glib::Value {
5226        let mut value = glib::Value::for_value_type::<Self>();
5227        unsafe {
5228            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5229        }
5230        value
5231    }
5232
5233    #[inline]
5234    fn value_type(&self) -> glib::Type {
5235        Self::static_type()
5236    }
5237}
5238
5239#[allow(deprecated)]
5240impl From<TlsRehandshakeMode> for glib::Value {
5241    #[inline]
5242    fn from(v: TlsRehandshakeMode) -> Self {
5243        ToValue::to_value(&v)
5244    }
5245}
5246
5247/// The type of name used by a #GUnixSocketAddress.
5248/// [`Path`][Self::Path] indicates a traditional unix domain
5249/// socket bound to a filesystem path. [`Anonymous`][Self::Anonymous]
5250/// indicates a socket not bound to any name (eg, a client-side socket,
5251/// or a socket created with socketpair()).
5252///
5253/// For abstract sockets, there are two incompatible ways of naming
5254/// them; the man pages suggest using the entire `struct sockaddr_un`
5255/// as the name, padding the unused parts of the `sun_path` field with
5256/// zeroes; this corresponds to [`AbstractPadded`][Self::AbstractPadded].
5257/// However, many programs instead just use a portion of `sun_path`, and
5258/// pass an appropriate smaller length to bind() or connect(). This is
5259/// [`Abstract`][Self::Abstract].
5260#[cfg(unix)]
5261#[cfg_attr(docsrs, doc(cfg(unix)))]
5262#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5263#[non_exhaustive]
5264#[doc(alias = "GUnixSocketAddressType")]
5265pub enum UnixSocketAddressType {
5266    /// invalid
5267    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_INVALID")]
5268    Invalid,
5269    /// anonymous
5270    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_ANONYMOUS")]
5271    Anonymous,
5272    /// a filesystem path
5273    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_PATH")]
5274    Path,
5275    /// an abstract name
5276    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_ABSTRACT")]
5277    Abstract,
5278    /// an abstract name, 0-padded
5279    ///   to the full length of a unix socket name
5280    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED")]
5281    AbstractPadded,
5282    #[doc(hidden)]
5283    __Unknown(i32),
5284}
5285
5286#[cfg(unix)]
5287#[doc(hidden)]
5288impl IntoGlib for UnixSocketAddressType {
5289    type GlibType = ffi::GUnixSocketAddressType;
5290
5291    #[inline]
5292    fn into_glib(self) -> ffi::GUnixSocketAddressType {
5293        match self {
5294            Self::Invalid => ffi::G_UNIX_SOCKET_ADDRESS_INVALID,
5295            Self::Anonymous => ffi::G_UNIX_SOCKET_ADDRESS_ANONYMOUS,
5296            Self::Path => ffi::G_UNIX_SOCKET_ADDRESS_PATH,
5297            Self::Abstract => ffi::G_UNIX_SOCKET_ADDRESS_ABSTRACT,
5298            Self::AbstractPadded => ffi::G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED,
5299            Self::__Unknown(value) => value,
5300        }
5301    }
5302}
5303
5304#[cfg(unix)]
5305#[doc(hidden)]
5306impl FromGlib<ffi::GUnixSocketAddressType> for UnixSocketAddressType {
5307    #[inline]
5308    unsafe fn from_glib(value: ffi::GUnixSocketAddressType) -> Self {
5309        match value {
5310            ffi::G_UNIX_SOCKET_ADDRESS_INVALID => Self::Invalid,
5311            ffi::G_UNIX_SOCKET_ADDRESS_ANONYMOUS => Self::Anonymous,
5312            ffi::G_UNIX_SOCKET_ADDRESS_PATH => Self::Path,
5313            ffi::G_UNIX_SOCKET_ADDRESS_ABSTRACT => Self::Abstract,
5314            ffi::G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED => Self::AbstractPadded,
5315            value => Self::__Unknown(value),
5316        }
5317    }
5318}
5319
5320#[cfg(unix)]
5321impl StaticType for UnixSocketAddressType {
5322    #[inline]
5323    #[doc(alias = "g_unix_socket_address_type_get_type")]
5324    fn static_type() -> glib::Type {
5325        unsafe { from_glib(ffi::g_unix_socket_address_type_get_type()) }
5326    }
5327}
5328
5329#[cfg(unix)]
5330impl glib::HasParamSpec for UnixSocketAddressType {
5331    type ParamSpec = glib::ParamSpecEnum;
5332    type SetValue = Self;
5333    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5334
5335    fn param_spec_builder() -> Self::BuilderFn {
5336        Self::ParamSpec::builder_with_default
5337    }
5338}
5339
5340#[cfg(unix)]
5341impl glib::value::ValueType for UnixSocketAddressType {
5342    type Type = Self;
5343}
5344
5345#[cfg(unix)]
5346unsafe impl<'a> glib::value::FromValue<'a> for UnixSocketAddressType {
5347    type Checker = glib::value::GenericValueTypeChecker<Self>;
5348
5349    #[inline]
5350    unsafe fn from_value(value: &'a glib::Value) -> Self {
5351        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5352    }
5353}
5354
5355#[cfg(unix)]
5356impl ToValue for UnixSocketAddressType {
5357    #[inline]
5358    fn to_value(&self) -> glib::Value {
5359        let mut value = glib::Value::for_value_type::<Self>();
5360        unsafe {
5361            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5362        }
5363        value
5364    }
5365
5366    #[inline]
5367    fn value_type(&self) -> glib::Type {
5368        Self::static_type()
5369    }
5370}
5371
5372#[cfg(unix)]
5373impl From<UnixSocketAddressType> for glib::Value {
5374    #[inline]
5375    fn from(v: UnixSocketAddressType) -> Self {
5376        ToValue::to_value(&v)
5377    }
5378}
5379
5380/// Used to select the type of data format to use for #GZlibDecompressor
5381/// and #GZlibCompressor.
5382#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5383#[non_exhaustive]
5384#[doc(alias = "GZlibCompressorFormat")]
5385pub enum ZlibCompressorFormat {
5386    /// deflate compression with zlib header
5387    #[doc(alias = "G_ZLIB_COMPRESSOR_FORMAT_ZLIB")]
5388    Zlib,
5389    /// gzip file format
5390    #[doc(alias = "G_ZLIB_COMPRESSOR_FORMAT_GZIP")]
5391    Gzip,
5392    /// deflate compression with no header
5393    #[doc(alias = "G_ZLIB_COMPRESSOR_FORMAT_RAW")]
5394    Raw,
5395    #[doc(hidden)]
5396    __Unknown(i32),
5397}
5398
5399#[doc(hidden)]
5400impl IntoGlib for ZlibCompressorFormat {
5401    type GlibType = ffi::GZlibCompressorFormat;
5402
5403    #[inline]
5404    fn into_glib(self) -> ffi::GZlibCompressorFormat {
5405        match self {
5406            Self::Zlib => ffi::G_ZLIB_COMPRESSOR_FORMAT_ZLIB,
5407            Self::Gzip => ffi::G_ZLIB_COMPRESSOR_FORMAT_GZIP,
5408            Self::Raw => ffi::G_ZLIB_COMPRESSOR_FORMAT_RAW,
5409            Self::__Unknown(value) => value,
5410        }
5411    }
5412}
5413
5414#[doc(hidden)]
5415impl FromGlib<ffi::GZlibCompressorFormat> for ZlibCompressorFormat {
5416    #[inline]
5417    unsafe fn from_glib(value: ffi::GZlibCompressorFormat) -> Self {
5418        match value {
5419            ffi::G_ZLIB_COMPRESSOR_FORMAT_ZLIB => Self::Zlib,
5420            ffi::G_ZLIB_COMPRESSOR_FORMAT_GZIP => Self::Gzip,
5421            ffi::G_ZLIB_COMPRESSOR_FORMAT_RAW => Self::Raw,
5422            value => Self::__Unknown(value),
5423        }
5424    }
5425}
5426
5427impl StaticType for ZlibCompressorFormat {
5428    #[inline]
5429    #[doc(alias = "g_zlib_compressor_format_get_type")]
5430    fn static_type() -> glib::Type {
5431        unsafe { from_glib(ffi::g_zlib_compressor_format_get_type()) }
5432    }
5433}
5434
5435impl glib::HasParamSpec for ZlibCompressorFormat {
5436    type ParamSpec = glib::ParamSpecEnum;
5437    type SetValue = Self;
5438    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5439
5440    fn param_spec_builder() -> Self::BuilderFn {
5441        Self::ParamSpec::builder_with_default
5442    }
5443}
5444
5445impl glib::value::ValueType for ZlibCompressorFormat {
5446    type Type = Self;
5447}
5448
5449unsafe impl<'a> glib::value::FromValue<'a> for ZlibCompressorFormat {
5450    type Checker = glib::value::GenericValueTypeChecker<Self>;
5451
5452    #[inline]
5453    unsafe fn from_value(value: &'a glib::Value) -> Self {
5454        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
5455    }
5456}
5457
5458impl ToValue for ZlibCompressorFormat {
5459    #[inline]
5460    fn to_value(&self) -> glib::Value {
5461        let mut value = glib::Value::for_value_type::<Self>();
5462        unsafe {
5463            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5464        }
5465        value
5466    }
5467
5468    #[inline]
5469    fn value_type(&self) -> glib::Type {
5470        Self::static_type()
5471    }
5472}
5473
5474impl From<ZlibCompressorFormat> for glib::Value {
5475    #[inline]
5476    fn from(v: ZlibCompressorFormat) -> Self {
5477        ToValue::to_value(&v)
5478    }
5479}