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        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        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        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        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        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        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        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        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        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        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/// GEmblemOrigin is used to add information about the origin of the emblem
1437/// to #GEmblem.
1438#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1439#[non_exhaustive]
1440#[doc(alias = "GEmblemOrigin")]
1441pub enum EmblemOrigin {
1442    /// Emblem of unknown origin
1443    #[doc(alias = "G_EMBLEM_ORIGIN_UNKNOWN")]
1444    Unknown,
1445    /// Emblem adds device-specific information
1446    #[doc(alias = "G_EMBLEM_ORIGIN_DEVICE")]
1447    Device,
1448    /// Emblem depicts live metadata, such as "readonly"
1449    #[doc(alias = "G_EMBLEM_ORIGIN_LIVEMETADATA")]
1450    Livemetadata,
1451    /// Emblem comes from a user-defined tag, e.g. set by nautilus (in the future)
1452    #[doc(alias = "G_EMBLEM_ORIGIN_TAG")]
1453    Tag,
1454    #[doc(hidden)]
1455    __Unknown(i32),
1456}
1457
1458#[doc(hidden)]
1459impl IntoGlib for EmblemOrigin {
1460    type GlibType = ffi::GEmblemOrigin;
1461
1462    #[inline]
1463    fn into_glib(self) -> ffi::GEmblemOrigin {
1464        match self {
1465            Self::Unknown => ffi::G_EMBLEM_ORIGIN_UNKNOWN,
1466            Self::Device => ffi::G_EMBLEM_ORIGIN_DEVICE,
1467            Self::Livemetadata => ffi::G_EMBLEM_ORIGIN_LIVEMETADATA,
1468            Self::Tag => ffi::G_EMBLEM_ORIGIN_TAG,
1469            Self::__Unknown(value) => value,
1470        }
1471    }
1472}
1473
1474#[doc(hidden)]
1475impl FromGlib<ffi::GEmblemOrigin> for EmblemOrigin {
1476    #[inline]
1477    unsafe fn from_glib(value: ffi::GEmblemOrigin) -> Self {
1478        match value {
1479            ffi::G_EMBLEM_ORIGIN_UNKNOWN => Self::Unknown,
1480            ffi::G_EMBLEM_ORIGIN_DEVICE => Self::Device,
1481            ffi::G_EMBLEM_ORIGIN_LIVEMETADATA => Self::Livemetadata,
1482            ffi::G_EMBLEM_ORIGIN_TAG => Self::Tag,
1483            value => Self::__Unknown(value),
1484        }
1485    }
1486}
1487
1488impl StaticType for EmblemOrigin {
1489    #[inline]
1490    #[doc(alias = "g_emblem_origin_get_type")]
1491    fn static_type() -> glib::Type {
1492        unsafe { from_glib(ffi::g_emblem_origin_get_type()) }
1493    }
1494}
1495
1496impl glib::HasParamSpec for EmblemOrigin {
1497    type ParamSpec = glib::ParamSpecEnum;
1498    type SetValue = Self;
1499    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1500
1501    fn param_spec_builder() -> Self::BuilderFn {
1502        Self::ParamSpec::builder_with_default
1503    }
1504}
1505
1506impl glib::value::ValueType for EmblemOrigin {
1507    type Type = Self;
1508}
1509
1510unsafe impl<'a> glib::value::FromValue<'a> for EmblemOrigin {
1511    type Checker = glib::value::GenericValueTypeChecker<Self>;
1512
1513    #[inline]
1514    unsafe fn from_value(value: &'a glib::Value) -> Self {
1515        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1516    }
1517}
1518
1519impl ToValue for EmblemOrigin {
1520    #[inline]
1521    fn to_value(&self) -> glib::Value {
1522        let mut value = glib::Value::for_value_type::<Self>();
1523        unsafe {
1524            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1525        }
1526        value
1527    }
1528
1529    #[inline]
1530    fn value_type(&self) -> glib::Type {
1531        Self::static_type()
1532    }
1533}
1534
1535impl From<EmblemOrigin> for glib::Value {
1536    #[inline]
1537    fn from(v: EmblemOrigin) -> Self {
1538        ToValue::to_value(&v)
1539    }
1540}
1541
1542/// Used by g_file_set_attributes_from_info() when setting file attributes.
1543#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1544#[non_exhaustive]
1545#[doc(alias = "GFileAttributeStatus")]
1546pub enum FileAttributeStatus {
1547    /// Attribute value is unset (empty).
1548    #[doc(alias = "G_FILE_ATTRIBUTE_STATUS_UNSET")]
1549    Unset,
1550    /// Attribute value is set.
1551    #[doc(alias = "G_FILE_ATTRIBUTE_STATUS_SET")]
1552    Set,
1553    /// Indicates an error in setting the value.
1554    #[doc(alias = "G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING")]
1555    ErrorSetting,
1556    #[doc(hidden)]
1557    __Unknown(i32),
1558}
1559
1560#[doc(hidden)]
1561impl IntoGlib for FileAttributeStatus {
1562    type GlibType = ffi::GFileAttributeStatus;
1563
1564    #[inline]
1565    fn into_glib(self) -> ffi::GFileAttributeStatus {
1566        match self {
1567            Self::Unset => ffi::G_FILE_ATTRIBUTE_STATUS_UNSET,
1568            Self::Set => ffi::G_FILE_ATTRIBUTE_STATUS_SET,
1569            Self::ErrorSetting => ffi::G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING,
1570            Self::__Unknown(value) => value,
1571        }
1572    }
1573}
1574
1575#[doc(hidden)]
1576impl FromGlib<ffi::GFileAttributeStatus> for FileAttributeStatus {
1577    #[inline]
1578    unsafe fn from_glib(value: ffi::GFileAttributeStatus) -> Self {
1579        match value {
1580            ffi::G_FILE_ATTRIBUTE_STATUS_UNSET => Self::Unset,
1581            ffi::G_FILE_ATTRIBUTE_STATUS_SET => Self::Set,
1582            ffi::G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING => Self::ErrorSetting,
1583            value => Self::__Unknown(value),
1584        }
1585    }
1586}
1587
1588impl StaticType for FileAttributeStatus {
1589    #[inline]
1590    #[doc(alias = "g_file_attribute_status_get_type")]
1591    fn static_type() -> glib::Type {
1592        unsafe { from_glib(ffi::g_file_attribute_status_get_type()) }
1593    }
1594}
1595
1596impl glib::HasParamSpec for FileAttributeStatus {
1597    type ParamSpec = glib::ParamSpecEnum;
1598    type SetValue = Self;
1599    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1600
1601    fn param_spec_builder() -> Self::BuilderFn {
1602        Self::ParamSpec::builder_with_default
1603    }
1604}
1605
1606impl glib::value::ValueType for FileAttributeStatus {
1607    type Type = Self;
1608}
1609
1610unsafe impl<'a> glib::value::FromValue<'a> for FileAttributeStatus {
1611    type Checker = glib::value::GenericValueTypeChecker<Self>;
1612
1613    #[inline]
1614    unsafe fn from_value(value: &'a glib::Value) -> Self {
1615        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1616    }
1617}
1618
1619impl ToValue for FileAttributeStatus {
1620    #[inline]
1621    fn to_value(&self) -> glib::Value {
1622        let mut value = glib::Value::for_value_type::<Self>();
1623        unsafe {
1624            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1625        }
1626        value
1627    }
1628
1629    #[inline]
1630    fn value_type(&self) -> glib::Type {
1631        Self::static_type()
1632    }
1633}
1634
1635impl From<FileAttributeStatus> for glib::Value {
1636    #[inline]
1637    fn from(v: FileAttributeStatus) -> Self {
1638        ToValue::to_value(&v)
1639    }
1640}
1641
1642/// The data types for file attributes.
1643#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1644#[non_exhaustive]
1645#[doc(alias = "GFileAttributeType")]
1646pub enum FileAttributeType {
1647    /// indicates an invalid or uninitialized type.
1648    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_INVALID")]
1649    Invalid,
1650    /// a null terminated UTF8 string.
1651    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_STRING")]
1652    String,
1653    /// a zero terminated string of non-zero bytes.
1654    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_BYTE_STRING")]
1655    ByteString,
1656    /// a boolean value.
1657    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_BOOLEAN")]
1658    Boolean,
1659    /// an unsigned 4-byte/32-bit integer.
1660    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_UINT32")]
1661    Uint32,
1662    /// a signed 4-byte/32-bit integer.
1663    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_INT32")]
1664    Int32,
1665    /// an unsigned 8-byte/64-bit integer.
1666    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_UINT64")]
1667    Uint64,
1668    /// a signed 8-byte/64-bit integer.
1669    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_INT64")]
1670    Int64,
1671    /// a #GObject.
1672    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_OBJECT")]
1673    Object,
1674    /// a [`None`] terminated char **. Since 2.22
1675    #[doc(alias = "G_FILE_ATTRIBUTE_TYPE_STRINGV")]
1676    Stringv,
1677    #[doc(hidden)]
1678    __Unknown(i32),
1679}
1680
1681#[doc(hidden)]
1682impl IntoGlib for FileAttributeType {
1683    type GlibType = ffi::GFileAttributeType;
1684
1685    #[inline]
1686    fn into_glib(self) -> ffi::GFileAttributeType {
1687        match self {
1688            Self::Invalid => ffi::G_FILE_ATTRIBUTE_TYPE_INVALID,
1689            Self::String => ffi::G_FILE_ATTRIBUTE_TYPE_STRING,
1690            Self::ByteString => ffi::G_FILE_ATTRIBUTE_TYPE_BYTE_STRING,
1691            Self::Boolean => ffi::G_FILE_ATTRIBUTE_TYPE_BOOLEAN,
1692            Self::Uint32 => ffi::G_FILE_ATTRIBUTE_TYPE_UINT32,
1693            Self::Int32 => ffi::G_FILE_ATTRIBUTE_TYPE_INT32,
1694            Self::Uint64 => ffi::G_FILE_ATTRIBUTE_TYPE_UINT64,
1695            Self::Int64 => ffi::G_FILE_ATTRIBUTE_TYPE_INT64,
1696            Self::Object => ffi::G_FILE_ATTRIBUTE_TYPE_OBJECT,
1697            Self::Stringv => ffi::G_FILE_ATTRIBUTE_TYPE_STRINGV,
1698            Self::__Unknown(value) => value,
1699        }
1700    }
1701}
1702
1703#[doc(hidden)]
1704impl FromGlib<ffi::GFileAttributeType> for FileAttributeType {
1705    #[inline]
1706    unsafe fn from_glib(value: ffi::GFileAttributeType) -> Self {
1707        match value {
1708            ffi::G_FILE_ATTRIBUTE_TYPE_INVALID => Self::Invalid,
1709            ffi::G_FILE_ATTRIBUTE_TYPE_STRING => Self::String,
1710            ffi::G_FILE_ATTRIBUTE_TYPE_BYTE_STRING => Self::ByteString,
1711            ffi::G_FILE_ATTRIBUTE_TYPE_BOOLEAN => Self::Boolean,
1712            ffi::G_FILE_ATTRIBUTE_TYPE_UINT32 => Self::Uint32,
1713            ffi::G_FILE_ATTRIBUTE_TYPE_INT32 => Self::Int32,
1714            ffi::G_FILE_ATTRIBUTE_TYPE_UINT64 => Self::Uint64,
1715            ffi::G_FILE_ATTRIBUTE_TYPE_INT64 => Self::Int64,
1716            ffi::G_FILE_ATTRIBUTE_TYPE_OBJECT => Self::Object,
1717            ffi::G_FILE_ATTRIBUTE_TYPE_STRINGV => Self::Stringv,
1718            value => Self::__Unknown(value),
1719        }
1720    }
1721}
1722
1723impl StaticType for FileAttributeType {
1724    #[inline]
1725    #[doc(alias = "g_file_attribute_type_get_type")]
1726    fn static_type() -> glib::Type {
1727        unsafe { from_glib(ffi::g_file_attribute_type_get_type()) }
1728    }
1729}
1730
1731impl glib::HasParamSpec for FileAttributeType {
1732    type ParamSpec = glib::ParamSpecEnum;
1733    type SetValue = Self;
1734    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1735
1736    fn param_spec_builder() -> Self::BuilderFn {
1737        Self::ParamSpec::builder_with_default
1738    }
1739}
1740
1741impl glib::value::ValueType for FileAttributeType {
1742    type Type = Self;
1743}
1744
1745unsafe impl<'a> glib::value::FromValue<'a> for FileAttributeType {
1746    type Checker = glib::value::GenericValueTypeChecker<Self>;
1747
1748    #[inline]
1749    unsafe fn from_value(value: &'a glib::Value) -> Self {
1750        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1751    }
1752}
1753
1754impl ToValue for FileAttributeType {
1755    #[inline]
1756    fn to_value(&self) -> glib::Value {
1757        let mut value = glib::Value::for_value_type::<Self>();
1758        unsafe {
1759            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1760        }
1761        value
1762    }
1763
1764    #[inline]
1765    fn value_type(&self) -> glib::Type {
1766        Self::static_type()
1767    }
1768}
1769
1770impl From<FileAttributeType> for glib::Value {
1771    #[inline]
1772    fn from(v: FileAttributeType) -> Self {
1773        ToValue::to_value(&v)
1774    }
1775}
1776
1777/// Specifies what type of event a monitor event is.
1778#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1779#[non_exhaustive]
1780#[doc(alias = "GFileMonitorEvent")]
1781pub enum FileMonitorEvent {
1782    /// a file changed.
1783    #[doc(alias = "G_FILE_MONITOR_EVENT_CHANGED")]
1784    Changed,
1785    /// a hint that this was probably the last change in a set of changes.
1786    #[doc(alias = "G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT")]
1787    ChangesDoneHint,
1788    /// a file was deleted.
1789    #[doc(alias = "G_FILE_MONITOR_EVENT_DELETED")]
1790    Deleted,
1791    /// a file was created.
1792    #[doc(alias = "G_FILE_MONITOR_EVENT_CREATED")]
1793    Created,
1794    /// a file attribute was changed.
1795    #[doc(alias = "G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED")]
1796    AttributeChanged,
1797    /// the file location will soon be unmounted.
1798    #[doc(alias = "G_FILE_MONITOR_EVENT_PRE_UNMOUNT")]
1799    PreUnmount,
1800    /// the file location was unmounted.
1801    #[doc(alias = "G_FILE_MONITOR_EVENT_UNMOUNTED")]
1802    Unmounted,
1803    /// the file was moved -- only sent if the
1804    ///   (deprecated) [`FileMonitorFlags::SEND_MOVED`][crate::FileMonitorFlags::SEND_MOVED] flag is set
1805    #[doc(alias = "G_FILE_MONITOR_EVENT_MOVED")]
1806    Moved,
1807    /// the file was renamed within the
1808    ///   current directory -- only sent if the [`FileMonitorFlags::WATCH_MOVES`][crate::FileMonitorFlags::WATCH_MOVES]
1809    ///   flag is set.  Since: 2.46.
1810    #[doc(alias = "G_FILE_MONITOR_EVENT_RENAMED")]
1811    Renamed,
1812    /// the file was moved into the
1813    ///   monitored directory from another location -- only sent if the
1814    ///   [`FileMonitorFlags::WATCH_MOVES`][crate::FileMonitorFlags::WATCH_MOVES] flag is set.  Since: 2.46.
1815    #[doc(alias = "G_FILE_MONITOR_EVENT_MOVED_IN")]
1816    MovedIn,
1817    /// the file was moved out of the
1818    ///   monitored directory to another location -- only sent if the
1819    ///   [`FileMonitorFlags::WATCH_MOVES`][crate::FileMonitorFlags::WATCH_MOVES] flag is set.  Since: 2.46
1820    #[doc(alias = "G_FILE_MONITOR_EVENT_MOVED_OUT")]
1821    MovedOut,
1822    #[doc(hidden)]
1823    __Unknown(i32),
1824}
1825
1826#[doc(hidden)]
1827impl IntoGlib for FileMonitorEvent {
1828    type GlibType = ffi::GFileMonitorEvent;
1829
1830    #[inline]
1831    fn into_glib(self) -> ffi::GFileMonitorEvent {
1832        match self {
1833            Self::Changed => ffi::G_FILE_MONITOR_EVENT_CHANGED,
1834            Self::ChangesDoneHint => ffi::G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT,
1835            Self::Deleted => ffi::G_FILE_MONITOR_EVENT_DELETED,
1836            Self::Created => ffi::G_FILE_MONITOR_EVENT_CREATED,
1837            Self::AttributeChanged => ffi::G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED,
1838            Self::PreUnmount => ffi::G_FILE_MONITOR_EVENT_PRE_UNMOUNT,
1839            Self::Unmounted => ffi::G_FILE_MONITOR_EVENT_UNMOUNTED,
1840            Self::Moved => ffi::G_FILE_MONITOR_EVENT_MOVED,
1841            Self::Renamed => ffi::G_FILE_MONITOR_EVENT_RENAMED,
1842            Self::MovedIn => ffi::G_FILE_MONITOR_EVENT_MOVED_IN,
1843            Self::MovedOut => ffi::G_FILE_MONITOR_EVENT_MOVED_OUT,
1844            Self::__Unknown(value) => value,
1845        }
1846    }
1847}
1848
1849#[doc(hidden)]
1850impl FromGlib<ffi::GFileMonitorEvent> for FileMonitorEvent {
1851    #[inline]
1852    unsafe fn from_glib(value: ffi::GFileMonitorEvent) -> Self {
1853        match value {
1854            ffi::G_FILE_MONITOR_EVENT_CHANGED => Self::Changed,
1855            ffi::G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT => Self::ChangesDoneHint,
1856            ffi::G_FILE_MONITOR_EVENT_DELETED => Self::Deleted,
1857            ffi::G_FILE_MONITOR_EVENT_CREATED => Self::Created,
1858            ffi::G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED => Self::AttributeChanged,
1859            ffi::G_FILE_MONITOR_EVENT_PRE_UNMOUNT => Self::PreUnmount,
1860            ffi::G_FILE_MONITOR_EVENT_UNMOUNTED => Self::Unmounted,
1861            ffi::G_FILE_MONITOR_EVENT_MOVED => Self::Moved,
1862            ffi::G_FILE_MONITOR_EVENT_RENAMED => Self::Renamed,
1863            ffi::G_FILE_MONITOR_EVENT_MOVED_IN => Self::MovedIn,
1864            ffi::G_FILE_MONITOR_EVENT_MOVED_OUT => Self::MovedOut,
1865            value => Self::__Unknown(value),
1866        }
1867    }
1868}
1869
1870impl StaticType for FileMonitorEvent {
1871    #[inline]
1872    #[doc(alias = "g_file_monitor_event_get_type")]
1873    fn static_type() -> glib::Type {
1874        unsafe { from_glib(ffi::g_file_monitor_event_get_type()) }
1875    }
1876}
1877
1878impl glib::HasParamSpec for FileMonitorEvent {
1879    type ParamSpec = glib::ParamSpecEnum;
1880    type SetValue = Self;
1881    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1882
1883    fn param_spec_builder() -> Self::BuilderFn {
1884        Self::ParamSpec::builder_with_default
1885    }
1886}
1887
1888impl glib::value::ValueType for FileMonitorEvent {
1889    type Type = Self;
1890}
1891
1892unsafe impl<'a> glib::value::FromValue<'a> for FileMonitorEvent {
1893    type Checker = glib::value::GenericValueTypeChecker<Self>;
1894
1895    #[inline]
1896    unsafe fn from_value(value: &'a glib::Value) -> Self {
1897        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1898    }
1899}
1900
1901impl ToValue for FileMonitorEvent {
1902    #[inline]
1903    fn to_value(&self) -> glib::Value {
1904        let mut value = glib::Value::for_value_type::<Self>();
1905        unsafe {
1906            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1907        }
1908        value
1909    }
1910
1911    #[inline]
1912    fn value_type(&self) -> glib::Type {
1913        Self::static_type()
1914    }
1915}
1916
1917impl From<FileMonitorEvent> for glib::Value {
1918    #[inline]
1919    fn from(v: FileMonitorEvent) -> Self {
1920        ToValue::to_value(&v)
1921    }
1922}
1923
1924/// Indicates the file's on-disk type.
1925///
1926/// On Windows systems a file will never have [`SymbolicLink`][Self::SymbolicLink] type;
1927/// use #GFileInfo and [`FILE_ATTRIBUTE_STANDARD_IS_SYMLINK`][crate::FILE_ATTRIBUTE_STANDARD_IS_SYMLINK] to determine
1928/// whether a file is a symlink or not. This is due to the fact that NTFS does
1929/// not have a single filesystem object type for symbolic links - it has
1930/// files that symlink to files, and directories that symlink to directories.
1931/// #GFileType enumeration cannot precisely represent this important distinction,
1932/// which is why all Windows symlinks will continue to be reported as
1933/// [`Regular`][Self::Regular] or [`Directory`][Self::Directory].
1934#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1935#[non_exhaustive]
1936#[doc(alias = "GFileType")]
1937pub enum FileType {
1938    /// File's type is unknown.
1939    #[doc(alias = "G_FILE_TYPE_UNKNOWN")]
1940    Unknown,
1941    /// File handle represents a regular file.
1942    #[doc(alias = "G_FILE_TYPE_REGULAR")]
1943    Regular,
1944    /// File handle represents a directory.
1945    #[doc(alias = "G_FILE_TYPE_DIRECTORY")]
1946    Directory,
1947    /// File handle represents a symbolic link
1948    ///    (Unix systems).
1949    #[doc(alias = "G_FILE_TYPE_SYMBOLIC_LINK")]
1950    SymbolicLink,
1951    /// File is a "special" file, such as a socket, fifo,
1952    ///    block device, or character device.
1953    #[doc(alias = "G_FILE_TYPE_SPECIAL")]
1954    Special,
1955    /// File is a shortcut (Windows systems).
1956    #[doc(alias = "G_FILE_TYPE_SHORTCUT")]
1957    Shortcut,
1958    /// File is a mountable location.
1959    #[doc(alias = "G_FILE_TYPE_MOUNTABLE")]
1960    Mountable,
1961    #[doc(hidden)]
1962    __Unknown(i32),
1963}
1964
1965#[doc(hidden)]
1966impl IntoGlib for FileType {
1967    type GlibType = ffi::GFileType;
1968
1969    #[inline]
1970    fn into_glib(self) -> ffi::GFileType {
1971        match self {
1972            Self::Unknown => ffi::G_FILE_TYPE_UNKNOWN,
1973            Self::Regular => ffi::G_FILE_TYPE_REGULAR,
1974            Self::Directory => ffi::G_FILE_TYPE_DIRECTORY,
1975            Self::SymbolicLink => ffi::G_FILE_TYPE_SYMBOLIC_LINK,
1976            Self::Special => ffi::G_FILE_TYPE_SPECIAL,
1977            Self::Shortcut => ffi::G_FILE_TYPE_SHORTCUT,
1978            Self::Mountable => ffi::G_FILE_TYPE_MOUNTABLE,
1979            Self::__Unknown(value) => value,
1980        }
1981    }
1982}
1983
1984#[doc(hidden)]
1985impl FromGlib<ffi::GFileType> for FileType {
1986    #[inline]
1987    unsafe fn from_glib(value: ffi::GFileType) -> Self {
1988        match value {
1989            ffi::G_FILE_TYPE_UNKNOWN => Self::Unknown,
1990            ffi::G_FILE_TYPE_REGULAR => Self::Regular,
1991            ffi::G_FILE_TYPE_DIRECTORY => Self::Directory,
1992            ffi::G_FILE_TYPE_SYMBOLIC_LINK => Self::SymbolicLink,
1993            ffi::G_FILE_TYPE_SPECIAL => Self::Special,
1994            ffi::G_FILE_TYPE_SHORTCUT => Self::Shortcut,
1995            ffi::G_FILE_TYPE_MOUNTABLE => Self::Mountable,
1996            value => Self::__Unknown(value),
1997        }
1998    }
1999}
2000
2001impl StaticType for FileType {
2002    #[inline]
2003    #[doc(alias = "g_file_type_get_type")]
2004    fn static_type() -> glib::Type {
2005        unsafe { from_glib(ffi::g_file_type_get_type()) }
2006    }
2007}
2008
2009impl glib::HasParamSpec for FileType {
2010    type ParamSpec = glib::ParamSpecEnum;
2011    type SetValue = Self;
2012    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2013
2014    fn param_spec_builder() -> Self::BuilderFn {
2015        Self::ParamSpec::builder_with_default
2016    }
2017}
2018
2019impl glib::value::ValueType for FileType {
2020    type Type = Self;
2021}
2022
2023unsafe impl<'a> glib::value::FromValue<'a> for FileType {
2024    type Checker = glib::value::GenericValueTypeChecker<Self>;
2025
2026    #[inline]
2027    unsafe fn from_value(value: &'a glib::Value) -> Self {
2028        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2029    }
2030}
2031
2032impl ToValue for FileType {
2033    #[inline]
2034    fn to_value(&self) -> glib::Value {
2035        let mut value = glib::Value::for_value_type::<Self>();
2036        unsafe {
2037            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2038        }
2039        value
2040    }
2041
2042    #[inline]
2043    fn value_type(&self) -> glib::Type {
2044        Self::static_type()
2045    }
2046}
2047
2048impl From<FileType> for glib::Value {
2049    #[inline]
2050    fn from(v: FileType) -> Self {
2051        ToValue::to_value(&v)
2052    }
2053}
2054
2055/// Indicates a hint from the file system whether files should be
2056/// previewed in a file manager. Returned as the value of the key
2057/// [`FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW`][crate::FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW].
2058#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2059#[non_exhaustive]
2060#[doc(alias = "GFilesystemPreviewType")]
2061pub enum FilesystemPreviewType {
2062    /// Only preview files if user has explicitly requested it.
2063    #[doc(alias = "G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS")]
2064    IfAlways,
2065    /// Preview files if user has requested preview of "local" files.
2066    #[doc(alias = "G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL")]
2067    IfLocal,
2068    /// Never preview files.
2069    #[doc(alias = "G_FILESYSTEM_PREVIEW_TYPE_NEVER")]
2070    Never,
2071    #[doc(hidden)]
2072    __Unknown(i32),
2073}
2074
2075#[doc(hidden)]
2076impl IntoGlib for FilesystemPreviewType {
2077    type GlibType = ffi::GFilesystemPreviewType;
2078
2079    #[inline]
2080    fn into_glib(self) -> ffi::GFilesystemPreviewType {
2081        match self {
2082            Self::IfAlways => ffi::G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS,
2083            Self::IfLocal => ffi::G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL,
2084            Self::Never => ffi::G_FILESYSTEM_PREVIEW_TYPE_NEVER,
2085            Self::__Unknown(value) => value,
2086        }
2087    }
2088}
2089
2090#[doc(hidden)]
2091impl FromGlib<ffi::GFilesystemPreviewType> for FilesystemPreviewType {
2092    #[inline]
2093    unsafe fn from_glib(value: ffi::GFilesystemPreviewType) -> Self {
2094        match value {
2095            ffi::G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS => Self::IfAlways,
2096            ffi::G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL => Self::IfLocal,
2097            ffi::G_FILESYSTEM_PREVIEW_TYPE_NEVER => Self::Never,
2098            value => Self::__Unknown(value),
2099        }
2100    }
2101}
2102
2103impl StaticType for FilesystemPreviewType {
2104    #[inline]
2105    #[doc(alias = "g_filesystem_preview_type_get_type")]
2106    fn static_type() -> glib::Type {
2107        unsafe { from_glib(ffi::g_filesystem_preview_type_get_type()) }
2108    }
2109}
2110
2111impl glib::HasParamSpec for FilesystemPreviewType {
2112    type ParamSpec = glib::ParamSpecEnum;
2113    type SetValue = Self;
2114    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2115
2116    fn param_spec_builder() -> Self::BuilderFn {
2117        Self::ParamSpec::builder_with_default
2118    }
2119}
2120
2121impl glib::value::ValueType for FilesystemPreviewType {
2122    type Type = Self;
2123}
2124
2125unsafe impl<'a> glib::value::FromValue<'a> for FilesystemPreviewType {
2126    type Checker = glib::value::GenericValueTypeChecker<Self>;
2127
2128    #[inline]
2129    unsafe fn from_value(value: &'a glib::Value) -> Self {
2130        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2131    }
2132}
2133
2134impl ToValue for FilesystemPreviewType {
2135    #[inline]
2136    fn to_value(&self) -> glib::Value {
2137        let mut value = glib::Value::for_value_type::<Self>();
2138        unsafe {
2139            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2140        }
2141        value
2142    }
2143
2144    #[inline]
2145    fn value_type(&self) -> glib::Type {
2146        Self::static_type()
2147    }
2148}
2149
2150impl From<FilesystemPreviewType> for glib::Value {
2151    #[inline]
2152    fn from(v: FilesystemPreviewType) -> Self {
2153        ToValue::to_value(&v)
2154    }
2155}
2156
2157/// Error codes returned by GIO functions.
2158///
2159/// Note that this domain may be extended in future GLib releases. In
2160/// general, new error codes either only apply to new APIs, or else
2161/// replace [`Failed`][Self::Failed] in cases that were not explicitly
2162/// distinguished before. You should therefore avoid writing code like
2163///
2164///
2165/// **⚠️ The following code is in C ⚠️**
2166///
2167/// ```C
2168/// if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_FAILED))
2169///   {
2170///     // Assume that this is EPRINTERONFIRE
2171///     ...
2172///   }
2173/// ```
2174/// but should instead treat all unrecognized error codes the same as
2175/// [`Failed`][Self::Failed].
2176///
2177/// See also #GPollableReturn for a cheaper way of returning
2178/// [`WouldBlock`][Self::WouldBlock] to callers without allocating a #GError.
2179#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2180#[non_exhaustive]
2181#[doc(alias = "GIOErrorEnum")]
2182pub enum IOErrorEnum {
2183    /// Generic error condition for when an operation fails
2184    ///     and no more specific #GIOErrorEnum value is defined.
2185    #[doc(alias = "G_IO_ERROR_FAILED")]
2186    Failed,
2187    /// File not found.
2188    #[doc(alias = "G_IO_ERROR_NOT_FOUND")]
2189    NotFound,
2190    /// File already exists.
2191    #[doc(alias = "G_IO_ERROR_EXISTS")]
2192    Exists,
2193    /// File is a directory.
2194    #[doc(alias = "G_IO_ERROR_IS_DIRECTORY")]
2195    IsDirectory,
2196    /// File is not a directory.
2197    #[doc(alias = "G_IO_ERROR_NOT_DIRECTORY")]
2198    NotDirectory,
2199    /// File is a directory that isn't empty.
2200    #[doc(alias = "G_IO_ERROR_NOT_EMPTY")]
2201    NotEmpty,
2202    /// File is not a regular file.
2203    #[doc(alias = "G_IO_ERROR_NOT_REGULAR_FILE")]
2204    NotRegularFile,
2205    /// File is not a symbolic link.
2206    #[doc(alias = "G_IO_ERROR_NOT_SYMBOLIC_LINK")]
2207    NotSymbolicLink,
2208    /// File cannot be mounted.
2209    #[doc(alias = "G_IO_ERROR_NOT_MOUNTABLE_FILE")]
2210    NotMountableFile,
2211    /// Filename is too many characters.
2212    #[doc(alias = "G_IO_ERROR_FILENAME_TOO_LONG")]
2213    FilenameTooLong,
2214    /// Filename is invalid or contains invalid characters.
2215    #[doc(alias = "G_IO_ERROR_INVALID_FILENAME")]
2216    InvalidFilename,
2217    /// File contains too many symbolic links.
2218    #[doc(alias = "G_IO_ERROR_TOO_MANY_LINKS")]
2219    TooManyLinks,
2220    /// No space left on drive.
2221    #[doc(alias = "G_IO_ERROR_NO_SPACE")]
2222    NoSpace,
2223    /// Invalid argument.
2224    #[doc(alias = "G_IO_ERROR_INVALID_ARGUMENT")]
2225    InvalidArgument,
2226    /// Permission denied.
2227    #[doc(alias = "G_IO_ERROR_PERMISSION_DENIED")]
2228    PermissionDenied,
2229    /// Operation (or one of its parameters) not supported
2230    #[doc(alias = "G_IO_ERROR_NOT_SUPPORTED")]
2231    NotSupported,
2232    /// File isn't mounted.
2233    #[doc(alias = "G_IO_ERROR_NOT_MOUNTED")]
2234    NotMounted,
2235    /// File is already mounted.
2236    #[doc(alias = "G_IO_ERROR_ALREADY_MOUNTED")]
2237    AlreadyMounted,
2238    /// File was closed.
2239    #[doc(alias = "G_IO_ERROR_CLOSED")]
2240    Closed,
2241    /// Operation was cancelled. See #GCancellable.
2242    #[doc(alias = "G_IO_ERROR_CANCELLED")]
2243    Cancelled,
2244    /// Operations are still pending.
2245    #[doc(alias = "G_IO_ERROR_PENDING")]
2246    Pending,
2247    /// File is read only.
2248    #[doc(alias = "G_IO_ERROR_READ_ONLY")]
2249    ReadOnly,
2250    /// Backup couldn't be created.
2251    #[doc(alias = "G_IO_ERROR_CANT_CREATE_BACKUP")]
2252    CantCreateBackup,
2253    /// File's Entity Tag was incorrect.
2254    #[doc(alias = "G_IO_ERROR_WRONG_ETAG")]
2255    WrongEtag,
2256    /// Operation timed out.
2257    #[doc(alias = "G_IO_ERROR_TIMED_OUT")]
2258    TimedOut,
2259    /// Operation would be recursive.
2260    #[doc(alias = "G_IO_ERROR_WOULD_RECURSE")]
2261    WouldRecurse,
2262    /// File is busy.
2263    #[doc(alias = "G_IO_ERROR_BUSY")]
2264    Busy,
2265    /// Operation would block.
2266    #[doc(alias = "G_IO_ERROR_WOULD_BLOCK")]
2267    WouldBlock,
2268    /// Host couldn't be found (remote operations).
2269    #[doc(alias = "G_IO_ERROR_HOST_NOT_FOUND")]
2270    HostNotFound,
2271    /// Operation would merge files.
2272    #[doc(alias = "G_IO_ERROR_WOULD_MERGE")]
2273    WouldMerge,
2274    /// Operation failed and a helper program has
2275    ///     already interacted with the user. Do not display any error dialog.
2276    #[doc(alias = "G_IO_ERROR_FAILED_HANDLED")]
2277    FailedHandled,
2278    /// The current process has too many files
2279    ///     open and can't open any more. Duplicate descriptors do count toward
2280    ///     this limit. Since 2.20
2281    #[doc(alias = "G_IO_ERROR_TOO_MANY_OPEN_FILES")]
2282    TooManyOpenFiles,
2283    /// The object has not been initialized. Since 2.22
2284    #[doc(alias = "G_IO_ERROR_NOT_INITIALIZED")]
2285    NotInitialized,
2286    /// The requested address is already in use. Since 2.22
2287    #[doc(alias = "G_IO_ERROR_ADDRESS_IN_USE")]
2288    AddressInUse,
2289    /// Need more input to finish operation. Since 2.24
2290    #[doc(alias = "G_IO_ERROR_PARTIAL_INPUT")]
2291    PartialInput,
2292    /// The input data was invalid. Since 2.24
2293    #[doc(alias = "G_IO_ERROR_INVALID_DATA")]
2294    InvalidData,
2295    /// A remote object generated an error that
2296    ///     doesn't correspond to a locally registered #GError error
2297    ///     domain. Use g_dbus_error_get_remote_error() to extract the D-Bus
2298    ///     error name and g_dbus_error_strip_remote_error() to fix up the
2299    ///     message so it matches what was received on the wire. Since 2.26.
2300    #[doc(alias = "G_IO_ERROR_DBUS_ERROR")]
2301    DbusError,
2302    /// Host unreachable. Since 2.26
2303    #[doc(alias = "G_IO_ERROR_HOST_UNREACHABLE")]
2304    HostUnreachable,
2305    /// Network unreachable. Since 2.26
2306    #[doc(alias = "G_IO_ERROR_NETWORK_UNREACHABLE")]
2307    NetworkUnreachable,
2308    /// Connection refused. Since 2.26
2309    #[doc(alias = "G_IO_ERROR_CONNECTION_REFUSED")]
2310    ConnectionRefused,
2311    /// Connection to proxy server failed. Since 2.26
2312    #[doc(alias = "G_IO_ERROR_PROXY_FAILED")]
2313    ProxyFailed,
2314    /// Proxy authentication failed. Since 2.26
2315    #[doc(alias = "G_IO_ERROR_PROXY_AUTH_FAILED")]
2316    ProxyAuthFailed,
2317    /// Proxy server needs authentication. Since 2.26
2318    #[doc(alias = "G_IO_ERROR_PROXY_NEED_AUTH")]
2319    ProxyNeedAuth,
2320    /// Proxy connection is not allowed by ruleset.
2321    ///     Since 2.26
2322    #[doc(alias = "G_IO_ERROR_PROXY_NOT_ALLOWED")]
2323    ProxyNotAllowed,
2324    /// Broken pipe. Since 2.36
2325    #[doc(alias = "G_IO_ERROR_BROKEN_PIPE")]
2326    BrokenPipe,
2327    /// Transport endpoint is not connected. Since 2.44
2328    #[doc(alias = "G_IO_ERROR_NOT_CONNECTED")]
2329    NotConnected,
2330    /// Message too large. Since 2.48.
2331    #[doc(alias = "G_IO_ERROR_MESSAGE_TOO_LARGE")]
2332    MessageTooLarge,
2333    /// No such device found. Since 2.74
2334    #[cfg(feature = "v2_72")]
2335    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
2336    #[doc(alias = "G_IO_ERROR_NO_SUCH_DEVICE")]
2337    NoSuchDevice,
2338    /// Destination address unset. Since 2.80
2339    #[cfg(feature = "v2_80")]
2340    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
2341    #[doc(alias = "G_IO_ERROR_DESTINATION_UNSET")]
2342    DestinationUnset,
2343    #[doc(hidden)]
2344    __Unknown(i32),
2345}
2346
2347#[doc(hidden)]
2348impl IntoGlib for IOErrorEnum {
2349    type GlibType = ffi::GIOErrorEnum;
2350
2351    fn into_glib(self) -> ffi::GIOErrorEnum {
2352        match self {
2353            Self::Failed => ffi::G_IO_ERROR_FAILED,
2354            Self::NotFound => ffi::G_IO_ERROR_NOT_FOUND,
2355            Self::Exists => ffi::G_IO_ERROR_EXISTS,
2356            Self::IsDirectory => ffi::G_IO_ERROR_IS_DIRECTORY,
2357            Self::NotDirectory => ffi::G_IO_ERROR_NOT_DIRECTORY,
2358            Self::NotEmpty => ffi::G_IO_ERROR_NOT_EMPTY,
2359            Self::NotRegularFile => ffi::G_IO_ERROR_NOT_REGULAR_FILE,
2360            Self::NotSymbolicLink => ffi::G_IO_ERROR_NOT_SYMBOLIC_LINK,
2361            Self::NotMountableFile => ffi::G_IO_ERROR_NOT_MOUNTABLE_FILE,
2362            Self::FilenameTooLong => ffi::G_IO_ERROR_FILENAME_TOO_LONG,
2363            Self::InvalidFilename => ffi::G_IO_ERROR_INVALID_FILENAME,
2364            Self::TooManyLinks => ffi::G_IO_ERROR_TOO_MANY_LINKS,
2365            Self::NoSpace => ffi::G_IO_ERROR_NO_SPACE,
2366            Self::InvalidArgument => ffi::G_IO_ERROR_INVALID_ARGUMENT,
2367            Self::PermissionDenied => ffi::G_IO_ERROR_PERMISSION_DENIED,
2368            Self::NotSupported => ffi::G_IO_ERROR_NOT_SUPPORTED,
2369            Self::NotMounted => ffi::G_IO_ERROR_NOT_MOUNTED,
2370            Self::AlreadyMounted => ffi::G_IO_ERROR_ALREADY_MOUNTED,
2371            Self::Closed => ffi::G_IO_ERROR_CLOSED,
2372            Self::Cancelled => ffi::G_IO_ERROR_CANCELLED,
2373            Self::Pending => ffi::G_IO_ERROR_PENDING,
2374            Self::ReadOnly => ffi::G_IO_ERROR_READ_ONLY,
2375            Self::CantCreateBackup => ffi::G_IO_ERROR_CANT_CREATE_BACKUP,
2376            Self::WrongEtag => ffi::G_IO_ERROR_WRONG_ETAG,
2377            Self::TimedOut => ffi::G_IO_ERROR_TIMED_OUT,
2378            Self::WouldRecurse => ffi::G_IO_ERROR_WOULD_RECURSE,
2379            Self::Busy => ffi::G_IO_ERROR_BUSY,
2380            Self::WouldBlock => ffi::G_IO_ERROR_WOULD_BLOCK,
2381            Self::HostNotFound => ffi::G_IO_ERROR_HOST_NOT_FOUND,
2382            Self::WouldMerge => ffi::G_IO_ERROR_WOULD_MERGE,
2383            Self::FailedHandled => ffi::G_IO_ERROR_FAILED_HANDLED,
2384            Self::TooManyOpenFiles => ffi::G_IO_ERROR_TOO_MANY_OPEN_FILES,
2385            Self::NotInitialized => ffi::G_IO_ERROR_NOT_INITIALIZED,
2386            Self::AddressInUse => ffi::G_IO_ERROR_ADDRESS_IN_USE,
2387            Self::PartialInput => ffi::G_IO_ERROR_PARTIAL_INPUT,
2388            Self::InvalidData => ffi::G_IO_ERROR_INVALID_DATA,
2389            Self::DbusError => ffi::G_IO_ERROR_DBUS_ERROR,
2390            Self::HostUnreachable => ffi::G_IO_ERROR_HOST_UNREACHABLE,
2391            Self::NetworkUnreachable => ffi::G_IO_ERROR_NETWORK_UNREACHABLE,
2392            Self::ConnectionRefused => ffi::G_IO_ERROR_CONNECTION_REFUSED,
2393            Self::ProxyFailed => ffi::G_IO_ERROR_PROXY_FAILED,
2394            Self::ProxyAuthFailed => ffi::G_IO_ERROR_PROXY_AUTH_FAILED,
2395            Self::ProxyNeedAuth => ffi::G_IO_ERROR_PROXY_NEED_AUTH,
2396            Self::ProxyNotAllowed => ffi::G_IO_ERROR_PROXY_NOT_ALLOWED,
2397            Self::BrokenPipe => ffi::G_IO_ERROR_BROKEN_PIPE,
2398            Self::NotConnected => ffi::G_IO_ERROR_NOT_CONNECTED,
2399            Self::MessageTooLarge => ffi::G_IO_ERROR_MESSAGE_TOO_LARGE,
2400            #[cfg(feature = "v2_72")]
2401            Self::NoSuchDevice => ffi::G_IO_ERROR_NO_SUCH_DEVICE,
2402            #[cfg(feature = "v2_80")]
2403            Self::DestinationUnset => ffi::G_IO_ERROR_DESTINATION_UNSET,
2404            Self::__Unknown(value) => value,
2405        }
2406    }
2407}
2408
2409#[doc(hidden)]
2410impl FromGlib<ffi::GIOErrorEnum> for IOErrorEnum {
2411    unsafe fn from_glib(value: ffi::GIOErrorEnum) -> Self {
2412        match value {
2413            ffi::G_IO_ERROR_FAILED => Self::Failed,
2414            ffi::G_IO_ERROR_NOT_FOUND => Self::NotFound,
2415            ffi::G_IO_ERROR_EXISTS => Self::Exists,
2416            ffi::G_IO_ERROR_IS_DIRECTORY => Self::IsDirectory,
2417            ffi::G_IO_ERROR_NOT_DIRECTORY => Self::NotDirectory,
2418            ffi::G_IO_ERROR_NOT_EMPTY => Self::NotEmpty,
2419            ffi::G_IO_ERROR_NOT_REGULAR_FILE => Self::NotRegularFile,
2420            ffi::G_IO_ERROR_NOT_SYMBOLIC_LINK => Self::NotSymbolicLink,
2421            ffi::G_IO_ERROR_NOT_MOUNTABLE_FILE => Self::NotMountableFile,
2422            ffi::G_IO_ERROR_FILENAME_TOO_LONG => Self::FilenameTooLong,
2423            ffi::G_IO_ERROR_INVALID_FILENAME => Self::InvalidFilename,
2424            ffi::G_IO_ERROR_TOO_MANY_LINKS => Self::TooManyLinks,
2425            ffi::G_IO_ERROR_NO_SPACE => Self::NoSpace,
2426            ffi::G_IO_ERROR_INVALID_ARGUMENT => Self::InvalidArgument,
2427            ffi::G_IO_ERROR_PERMISSION_DENIED => Self::PermissionDenied,
2428            ffi::G_IO_ERROR_NOT_SUPPORTED => Self::NotSupported,
2429            ffi::G_IO_ERROR_NOT_MOUNTED => Self::NotMounted,
2430            ffi::G_IO_ERROR_ALREADY_MOUNTED => Self::AlreadyMounted,
2431            ffi::G_IO_ERROR_CLOSED => Self::Closed,
2432            ffi::G_IO_ERROR_CANCELLED => Self::Cancelled,
2433            ffi::G_IO_ERROR_PENDING => Self::Pending,
2434            ffi::G_IO_ERROR_READ_ONLY => Self::ReadOnly,
2435            ffi::G_IO_ERROR_CANT_CREATE_BACKUP => Self::CantCreateBackup,
2436            ffi::G_IO_ERROR_WRONG_ETAG => Self::WrongEtag,
2437            ffi::G_IO_ERROR_TIMED_OUT => Self::TimedOut,
2438            ffi::G_IO_ERROR_WOULD_RECURSE => Self::WouldRecurse,
2439            ffi::G_IO_ERROR_BUSY => Self::Busy,
2440            ffi::G_IO_ERROR_WOULD_BLOCK => Self::WouldBlock,
2441            ffi::G_IO_ERROR_HOST_NOT_FOUND => Self::HostNotFound,
2442            ffi::G_IO_ERROR_WOULD_MERGE => Self::WouldMerge,
2443            ffi::G_IO_ERROR_FAILED_HANDLED => Self::FailedHandled,
2444            ffi::G_IO_ERROR_TOO_MANY_OPEN_FILES => Self::TooManyOpenFiles,
2445            ffi::G_IO_ERROR_NOT_INITIALIZED => Self::NotInitialized,
2446            ffi::G_IO_ERROR_ADDRESS_IN_USE => Self::AddressInUse,
2447            ffi::G_IO_ERROR_PARTIAL_INPUT => Self::PartialInput,
2448            ffi::G_IO_ERROR_INVALID_DATA => Self::InvalidData,
2449            ffi::G_IO_ERROR_DBUS_ERROR => Self::DbusError,
2450            ffi::G_IO_ERROR_HOST_UNREACHABLE => Self::HostUnreachable,
2451            ffi::G_IO_ERROR_NETWORK_UNREACHABLE => Self::NetworkUnreachable,
2452            ffi::G_IO_ERROR_CONNECTION_REFUSED => Self::ConnectionRefused,
2453            ffi::G_IO_ERROR_PROXY_FAILED => Self::ProxyFailed,
2454            ffi::G_IO_ERROR_PROXY_AUTH_FAILED => Self::ProxyAuthFailed,
2455            ffi::G_IO_ERROR_PROXY_NEED_AUTH => Self::ProxyNeedAuth,
2456            ffi::G_IO_ERROR_PROXY_NOT_ALLOWED => Self::ProxyNotAllowed,
2457            ffi::G_IO_ERROR_BROKEN_PIPE => Self::BrokenPipe,
2458            ffi::G_IO_ERROR_NOT_CONNECTED => Self::NotConnected,
2459            ffi::G_IO_ERROR_MESSAGE_TOO_LARGE => Self::MessageTooLarge,
2460            #[cfg(feature = "v2_72")]
2461            ffi::G_IO_ERROR_NO_SUCH_DEVICE => Self::NoSuchDevice,
2462            #[cfg(feature = "v2_80")]
2463            ffi::G_IO_ERROR_DESTINATION_UNSET => Self::DestinationUnset,
2464            value => Self::__Unknown(value),
2465        }
2466    }
2467}
2468
2469impl glib::error::ErrorDomain for IOErrorEnum {
2470    #[inline]
2471    fn domain() -> glib::Quark {
2472        unsafe { from_glib(ffi::g_io_error_quark()) }
2473    }
2474
2475    #[inline]
2476    fn code(self) -> i32 {
2477        self.into_glib()
2478    }
2479
2480    #[inline]
2481    #[allow(clippy::match_single_binding)]
2482    fn from(code: i32) -> Option<Self> {
2483        match unsafe { from_glib(code) } {
2484            Self::__Unknown(_) => Some(Self::Failed),
2485            value => Some(value),
2486        }
2487    }
2488}
2489
2490impl StaticType for IOErrorEnum {
2491    #[inline]
2492    #[doc(alias = "g_io_error_enum_get_type")]
2493    fn static_type() -> glib::Type {
2494        unsafe { from_glib(ffi::g_io_error_enum_get_type()) }
2495    }
2496}
2497
2498impl glib::HasParamSpec for IOErrorEnum {
2499    type ParamSpec = glib::ParamSpecEnum;
2500    type SetValue = Self;
2501    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2502
2503    fn param_spec_builder() -> Self::BuilderFn {
2504        Self::ParamSpec::builder_with_default
2505    }
2506}
2507
2508impl glib::value::ValueType for IOErrorEnum {
2509    type Type = Self;
2510}
2511
2512unsafe impl<'a> glib::value::FromValue<'a> for IOErrorEnum {
2513    type Checker = glib::value::GenericValueTypeChecker<Self>;
2514
2515    #[inline]
2516    unsafe fn from_value(value: &'a glib::Value) -> Self {
2517        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2518    }
2519}
2520
2521impl ToValue for IOErrorEnum {
2522    #[inline]
2523    fn to_value(&self) -> glib::Value {
2524        let mut value = glib::Value::for_value_type::<Self>();
2525        unsafe {
2526            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2527        }
2528        value
2529    }
2530
2531    #[inline]
2532    fn value_type(&self) -> glib::Type {
2533        Self::static_type()
2534    }
2535}
2536
2537impl From<IOErrorEnum> for glib::Value {
2538    #[inline]
2539    fn from(v: IOErrorEnum) -> Self {
2540        ToValue::to_value(&v)
2541    }
2542}
2543
2544/// Memory availability warning levels.
2545///
2546/// Note that because new values might be added, it is recommended that applications check
2547/// #GMemoryMonitorWarningLevel as ranges, for example:
2548///
2549///
2550/// **⚠️ The following code is in C ⚠️**
2551///
2552/// ```C
2553/// if (warning_level > G_MEMORY_MONITOR_WARNING_LEVEL_LOW)
2554///   drop_caches ();
2555/// ```
2556#[cfg(feature = "v2_64")]
2557#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2558#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2559#[non_exhaustive]
2560#[doc(alias = "GMemoryMonitorWarningLevel")]
2561pub enum MemoryMonitorWarningLevel {
2562    /// Memory on the device is low, processes
2563    ///   should free up unneeded resources (for example, in-memory caches) so they can
2564    ///   be used elsewhere.
2565    #[doc(alias = "G_MEMORY_MONITOR_WARNING_LEVEL_LOW")]
2566    Low,
2567    /// Same as @G_MEMORY_MONITOR_WARNING_LEVEL_LOW
2568    ///   but the device has even less free memory, so processes should try harder to free
2569    ///   up unneeded resources. If your process does not need to stay running, it is a
2570    ///   good time for it to quit.
2571    #[doc(alias = "G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM")]
2572    Medium,
2573    /// The system will soon start terminating
2574    ///   processes to reclaim memory, including background processes.
2575    #[doc(alias = "G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL")]
2576    Critical,
2577    #[doc(hidden)]
2578    __Unknown(i32),
2579}
2580
2581#[cfg(feature = "v2_64")]
2582#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2583#[doc(hidden)]
2584impl IntoGlib for MemoryMonitorWarningLevel {
2585    type GlibType = ffi::GMemoryMonitorWarningLevel;
2586
2587    #[inline]
2588    fn into_glib(self) -> ffi::GMemoryMonitorWarningLevel {
2589        match self {
2590            Self::Low => ffi::G_MEMORY_MONITOR_WARNING_LEVEL_LOW,
2591            Self::Medium => ffi::G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM,
2592            Self::Critical => ffi::G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL,
2593            Self::__Unknown(value) => value,
2594        }
2595    }
2596}
2597
2598#[cfg(feature = "v2_64")]
2599#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2600#[doc(hidden)]
2601impl FromGlib<ffi::GMemoryMonitorWarningLevel> for MemoryMonitorWarningLevel {
2602    #[inline]
2603    unsafe fn from_glib(value: ffi::GMemoryMonitorWarningLevel) -> Self {
2604        match value {
2605            ffi::G_MEMORY_MONITOR_WARNING_LEVEL_LOW => Self::Low,
2606            ffi::G_MEMORY_MONITOR_WARNING_LEVEL_MEDIUM => Self::Medium,
2607            ffi::G_MEMORY_MONITOR_WARNING_LEVEL_CRITICAL => Self::Critical,
2608            value => Self::__Unknown(value),
2609        }
2610    }
2611}
2612
2613#[cfg(feature = "v2_64")]
2614#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2615impl StaticType for MemoryMonitorWarningLevel {
2616    #[inline]
2617    #[doc(alias = "g_memory_monitor_warning_level_get_type")]
2618    fn static_type() -> glib::Type {
2619        unsafe { from_glib(ffi::g_memory_monitor_warning_level_get_type()) }
2620    }
2621}
2622
2623#[cfg(feature = "v2_64")]
2624#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2625impl glib::HasParamSpec for MemoryMonitorWarningLevel {
2626    type ParamSpec = glib::ParamSpecEnum;
2627    type SetValue = Self;
2628    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2629
2630    fn param_spec_builder() -> Self::BuilderFn {
2631        Self::ParamSpec::builder_with_default
2632    }
2633}
2634
2635#[cfg(feature = "v2_64")]
2636#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2637impl glib::value::ValueType for MemoryMonitorWarningLevel {
2638    type Type = Self;
2639}
2640
2641#[cfg(feature = "v2_64")]
2642#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2643unsafe impl<'a> glib::value::FromValue<'a> for MemoryMonitorWarningLevel {
2644    type Checker = glib::value::GenericValueTypeChecker<Self>;
2645
2646    #[inline]
2647    unsafe fn from_value(value: &'a glib::Value) -> Self {
2648        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2649    }
2650}
2651
2652#[cfg(feature = "v2_64")]
2653#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2654impl ToValue for MemoryMonitorWarningLevel {
2655    #[inline]
2656    fn to_value(&self) -> glib::Value {
2657        let mut value = glib::Value::for_value_type::<Self>();
2658        unsafe {
2659            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2660        }
2661        value
2662    }
2663
2664    #[inline]
2665    fn value_type(&self) -> glib::Type {
2666        Self::static_type()
2667    }
2668}
2669
2670#[cfg(feature = "v2_64")]
2671#[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2672impl From<MemoryMonitorWarningLevel> for glib::Value {
2673    #[inline]
2674    fn from(v: MemoryMonitorWarningLevel) -> Self {
2675        ToValue::to_value(&v)
2676    }
2677}
2678
2679/// #GMountOperationResult is returned as a result when a request for
2680/// information is send by the mounting operation.
2681#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2682#[non_exhaustive]
2683#[doc(alias = "GMountOperationResult")]
2684pub enum MountOperationResult {
2685    /// The request was fulfilled and the
2686    ///     user specified data is now available
2687    #[doc(alias = "G_MOUNT_OPERATION_HANDLED")]
2688    Handled,
2689    /// The user requested the mount operation
2690    ///     to be aborted
2691    #[doc(alias = "G_MOUNT_OPERATION_ABORTED")]
2692    Aborted,
2693    /// The request was unhandled (i.e. not
2694    ///     implemented)
2695    #[doc(alias = "G_MOUNT_OPERATION_UNHANDLED")]
2696    Unhandled,
2697    #[doc(hidden)]
2698    __Unknown(i32),
2699}
2700
2701#[doc(hidden)]
2702impl IntoGlib for MountOperationResult {
2703    type GlibType = ffi::GMountOperationResult;
2704
2705    #[inline]
2706    fn into_glib(self) -> ffi::GMountOperationResult {
2707        match self {
2708            Self::Handled => ffi::G_MOUNT_OPERATION_HANDLED,
2709            Self::Aborted => ffi::G_MOUNT_OPERATION_ABORTED,
2710            Self::Unhandled => ffi::G_MOUNT_OPERATION_UNHANDLED,
2711            Self::__Unknown(value) => value,
2712        }
2713    }
2714}
2715
2716#[doc(hidden)]
2717impl FromGlib<ffi::GMountOperationResult> for MountOperationResult {
2718    #[inline]
2719    unsafe fn from_glib(value: ffi::GMountOperationResult) -> Self {
2720        match value {
2721            ffi::G_MOUNT_OPERATION_HANDLED => Self::Handled,
2722            ffi::G_MOUNT_OPERATION_ABORTED => Self::Aborted,
2723            ffi::G_MOUNT_OPERATION_UNHANDLED => Self::Unhandled,
2724            value => Self::__Unknown(value),
2725        }
2726    }
2727}
2728
2729impl StaticType for MountOperationResult {
2730    #[inline]
2731    #[doc(alias = "g_mount_operation_result_get_type")]
2732    fn static_type() -> glib::Type {
2733        unsafe { from_glib(ffi::g_mount_operation_result_get_type()) }
2734    }
2735}
2736
2737impl glib::HasParamSpec for MountOperationResult {
2738    type ParamSpec = glib::ParamSpecEnum;
2739    type SetValue = Self;
2740    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2741
2742    fn param_spec_builder() -> Self::BuilderFn {
2743        Self::ParamSpec::builder_with_default
2744    }
2745}
2746
2747impl glib::value::ValueType for MountOperationResult {
2748    type Type = Self;
2749}
2750
2751unsafe impl<'a> glib::value::FromValue<'a> for MountOperationResult {
2752    type Checker = glib::value::GenericValueTypeChecker<Self>;
2753
2754    #[inline]
2755    unsafe fn from_value(value: &'a glib::Value) -> Self {
2756        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2757    }
2758}
2759
2760impl ToValue for MountOperationResult {
2761    #[inline]
2762    fn to_value(&self) -> glib::Value {
2763        let mut value = glib::Value::for_value_type::<Self>();
2764        unsafe {
2765            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2766        }
2767        value
2768    }
2769
2770    #[inline]
2771    fn value_type(&self) -> glib::Type {
2772        Self::static_type()
2773    }
2774}
2775
2776impl From<MountOperationResult> for glib::Value {
2777    #[inline]
2778    fn from(v: MountOperationResult) -> Self {
2779        ToValue::to_value(&v)
2780    }
2781}
2782
2783/// The host's network connectivity state, as reported by #GNetworkMonitor.
2784#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2785#[non_exhaustive]
2786#[doc(alias = "GNetworkConnectivity")]
2787pub enum NetworkConnectivity {
2788    /// The host is not configured with a
2789    ///   route to the Internet; it may or may not be connected to a local
2790    ///   network.
2791    #[doc(alias = "G_NETWORK_CONNECTIVITY_LOCAL")]
2792    Local,
2793    /// The host is connected to a network, but
2794    ///   does not appear to be able to reach the full Internet, perhaps
2795    ///   due to upstream network problems.
2796    #[doc(alias = "G_NETWORK_CONNECTIVITY_LIMITED")]
2797    Limited,
2798    /// The host is behind a captive portal and
2799    ///   cannot reach the full Internet.
2800    #[doc(alias = "G_NETWORK_CONNECTIVITY_PORTAL")]
2801    Portal,
2802    /// The host is connected to a network, and
2803    ///   appears to be able to reach the full Internet.
2804    #[doc(alias = "G_NETWORK_CONNECTIVITY_FULL")]
2805    Full,
2806    #[doc(hidden)]
2807    __Unknown(i32),
2808}
2809
2810#[doc(hidden)]
2811impl IntoGlib for NetworkConnectivity {
2812    type GlibType = ffi::GNetworkConnectivity;
2813
2814    #[inline]
2815    fn into_glib(self) -> ffi::GNetworkConnectivity {
2816        match self {
2817            Self::Local => ffi::G_NETWORK_CONNECTIVITY_LOCAL,
2818            Self::Limited => ffi::G_NETWORK_CONNECTIVITY_LIMITED,
2819            Self::Portal => ffi::G_NETWORK_CONNECTIVITY_PORTAL,
2820            Self::Full => ffi::G_NETWORK_CONNECTIVITY_FULL,
2821            Self::__Unknown(value) => value,
2822        }
2823    }
2824}
2825
2826#[doc(hidden)]
2827impl FromGlib<ffi::GNetworkConnectivity> for NetworkConnectivity {
2828    #[inline]
2829    unsafe fn from_glib(value: ffi::GNetworkConnectivity) -> Self {
2830        match value {
2831            ffi::G_NETWORK_CONNECTIVITY_LOCAL => Self::Local,
2832            ffi::G_NETWORK_CONNECTIVITY_LIMITED => Self::Limited,
2833            ffi::G_NETWORK_CONNECTIVITY_PORTAL => Self::Portal,
2834            ffi::G_NETWORK_CONNECTIVITY_FULL => Self::Full,
2835            value => Self::__Unknown(value),
2836        }
2837    }
2838}
2839
2840impl StaticType for NetworkConnectivity {
2841    #[inline]
2842    #[doc(alias = "g_network_connectivity_get_type")]
2843    fn static_type() -> glib::Type {
2844        unsafe { from_glib(ffi::g_network_connectivity_get_type()) }
2845    }
2846}
2847
2848impl glib::HasParamSpec for NetworkConnectivity {
2849    type ParamSpec = glib::ParamSpecEnum;
2850    type SetValue = Self;
2851    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2852
2853    fn param_spec_builder() -> Self::BuilderFn {
2854        Self::ParamSpec::builder_with_default
2855    }
2856}
2857
2858impl glib::value::ValueType for NetworkConnectivity {
2859    type Type = Self;
2860}
2861
2862unsafe impl<'a> glib::value::FromValue<'a> for NetworkConnectivity {
2863    type Checker = glib::value::GenericValueTypeChecker<Self>;
2864
2865    #[inline]
2866    unsafe fn from_value(value: &'a glib::Value) -> Self {
2867        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2868    }
2869}
2870
2871impl ToValue for NetworkConnectivity {
2872    #[inline]
2873    fn to_value(&self) -> glib::Value {
2874        let mut value = glib::Value::for_value_type::<Self>();
2875        unsafe {
2876            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2877        }
2878        value
2879    }
2880
2881    #[inline]
2882    fn value_type(&self) -> glib::Type {
2883        Self::static_type()
2884    }
2885}
2886
2887impl From<NetworkConnectivity> for glib::Value {
2888    #[inline]
2889    fn from(v: NetworkConnectivity) -> Self {
2890        ToValue::to_value(&v)
2891    }
2892}
2893
2894/// Priority levels for #GNotifications.
2895#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2896#[non_exhaustive]
2897#[doc(alias = "GNotificationPriority")]
2898pub enum NotificationPriority {
2899    /// the default priority, to be used for the
2900    ///   majority of notifications (for example email messages, software updates,
2901    ///   completed download/sync operations)
2902    #[doc(alias = "G_NOTIFICATION_PRIORITY_NORMAL")]
2903    Normal,
2904    /// for notifications that do not require
2905    ///   immediate attention - typically used for contextual background
2906    ///   information, such as contact birthdays or local weather
2907    #[doc(alias = "G_NOTIFICATION_PRIORITY_LOW")]
2908    Low,
2909    /// for events that require more attention,
2910    ///   usually because responses are time-sensitive (for example chat and SMS
2911    ///   messages or alarms)
2912    #[doc(alias = "G_NOTIFICATION_PRIORITY_HIGH")]
2913    High,
2914    /// for urgent notifications, or notifications
2915    ///   that require a response in a short space of time (for example phone calls
2916    ///   or emergency warnings)
2917    #[doc(alias = "G_NOTIFICATION_PRIORITY_URGENT")]
2918    Urgent,
2919    #[doc(hidden)]
2920    __Unknown(i32),
2921}
2922
2923#[doc(hidden)]
2924impl IntoGlib for NotificationPriority {
2925    type GlibType = ffi::GNotificationPriority;
2926
2927    #[inline]
2928    fn into_glib(self) -> ffi::GNotificationPriority {
2929        match self {
2930            Self::Normal => ffi::G_NOTIFICATION_PRIORITY_NORMAL,
2931            Self::Low => ffi::G_NOTIFICATION_PRIORITY_LOW,
2932            Self::High => ffi::G_NOTIFICATION_PRIORITY_HIGH,
2933            Self::Urgent => ffi::G_NOTIFICATION_PRIORITY_URGENT,
2934            Self::__Unknown(value) => value,
2935        }
2936    }
2937}
2938
2939#[doc(hidden)]
2940impl FromGlib<ffi::GNotificationPriority> for NotificationPriority {
2941    #[inline]
2942    unsafe fn from_glib(value: ffi::GNotificationPriority) -> Self {
2943        match value {
2944            ffi::G_NOTIFICATION_PRIORITY_NORMAL => Self::Normal,
2945            ffi::G_NOTIFICATION_PRIORITY_LOW => Self::Low,
2946            ffi::G_NOTIFICATION_PRIORITY_HIGH => Self::High,
2947            ffi::G_NOTIFICATION_PRIORITY_URGENT => Self::Urgent,
2948            value => Self::__Unknown(value),
2949        }
2950    }
2951}
2952
2953impl StaticType for NotificationPriority {
2954    #[inline]
2955    #[doc(alias = "g_notification_priority_get_type")]
2956    fn static_type() -> glib::Type {
2957        unsafe { from_glib(ffi::g_notification_priority_get_type()) }
2958    }
2959}
2960
2961impl glib::HasParamSpec for NotificationPriority {
2962    type ParamSpec = glib::ParamSpecEnum;
2963    type SetValue = Self;
2964    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2965
2966    fn param_spec_builder() -> Self::BuilderFn {
2967        Self::ParamSpec::builder_with_default
2968    }
2969}
2970
2971impl glib::value::ValueType for NotificationPriority {
2972    type Type = Self;
2973}
2974
2975unsafe impl<'a> glib::value::FromValue<'a> for NotificationPriority {
2976    type Checker = glib::value::GenericValueTypeChecker<Self>;
2977
2978    #[inline]
2979    unsafe fn from_value(value: &'a glib::Value) -> Self {
2980        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2981    }
2982}
2983
2984impl ToValue for NotificationPriority {
2985    #[inline]
2986    fn to_value(&self) -> glib::Value {
2987        let mut value = glib::Value::for_value_type::<Self>();
2988        unsafe {
2989            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2990        }
2991        value
2992    }
2993
2994    #[inline]
2995    fn value_type(&self) -> glib::Type {
2996        Self::static_type()
2997    }
2998}
2999
3000impl From<NotificationPriority> for glib::Value {
3001    #[inline]
3002    fn from(v: NotificationPriority) -> Self {
3003        ToValue::to_value(&v)
3004    }
3005}
3006
3007/// #GPasswordSave is used to indicate the lifespan of a saved password.
3008///
3009/// #Gvfs stores passwords in the Gnome keyring when this flag allows it
3010/// to, and later retrieves it again from there.
3011#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3012#[non_exhaustive]
3013#[doc(alias = "GPasswordSave")]
3014pub enum PasswordSave {
3015    /// never save a password.
3016    #[doc(alias = "G_PASSWORD_SAVE_NEVER")]
3017    Never,
3018    /// save a password for the session.
3019    #[doc(alias = "G_PASSWORD_SAVE_FOR_SESSION")]
3020    ForSession,
3021    /// save a password permanently.
3022    #[doc(alias = "G_PASSWORD_SAVE_PERMANENTLY")]
3023    Permanently,
3024    #[doc(hidden)]
3025    __Unknown(i32),
3026}
3027
3028#[doc(hidden)]
3029impl IntoGlib for PasswordSave {
3030    type GlibType = ffi::GPasswordSave;
3031
3032    #[inline]
3033    fn into_glib(self) -> ffi::GPasswordSave {
3034        match self {
3035            Self::Never => ffi::G_PASSWORD_SAVE_NEVER,
3036            Self::ForSession => ffi::G_PASSWORD_SAVE_FOR_SESSION,
3037            Self::Permanently => ffi::G_PASSWORD_SAVE_PERMANENTLY,
3038            Self::__Unknown(value) => value,
3039        }
3040    }
3041}
3042
3043#[doc(hidden)]
3044impl FromGlib<ffi::GPasswordSave> for PasswordSave {
3045    #[inline]
3046    unsafe fn from_glib(value: ffi::GPasswordSave) -> Self {
3047        match value {
3048            ffi::G_PASSWORD_SAVE_NEVER => Self::Never,
3049            ffi::G_PASSWORD_SAVE_FOR_SESSION => Self::ForSession,
3050            ffi::G_PASSWORD_SAVE_PERMANENTLY => Self::Permanently,
3051            value => Self::__Unknown(value),
3052        }
3053    }
3054}
3055
3056impl StaticType for PasswordSave {
3057    #[inline]
3058    #[doc(alias = "g_password_save_get_type")]
3059    fn static_type() -> glib::Type {
3060        unsafe { from_glib(ffi::g_password_save_get_type()) }
3061    }
3062}
3063
3064impl glib::HasParamSpec for PasswordSave {
3065    type ParamSpec = glib::ParamSpecEnum;
3066    type SetValue = Self;
3067    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3068
3069    fn param_spec_builder() -> Self::BuilderFn {
3070        Self::ParamSpec::builder_with_default
3071    }
3072}
3073
3074impl glib::value::ValueType for PasswordSave {
3075    type Type = Self;
3076}
3077
3078unsafe impl<'a> glib::value::FromValue<'a> for PasswordSave {
3079    type Checker = glib::value::GenericValueTypeChecker<Self>;
3080
3081    #[inline]
3082    unsafe fn from_value(value: &'a glib::Value) -> Self {
3083        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3084    }
3085}
3086
3087impl ToValue for PasswordSave {
3088    #[inline]
3089    fn to_value(&self) -> glib::Value {
3090        let mut value = glib::Value::for_value_type::<Self>();
3091        unsafe {
3092            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3093        }
3094        value
3095    }
3096
3097    #[inline]
3098    fn value_type(&self) -> glib::Type {
3099        Self::static_type()
3100    }
3101}
3102
3103impl From<PasswordSave> for glib::Value {
3104    #[inline]
3105    fn from(v: PasswordSave) -> Self {
3106        ToValue::to_value(&v)
3107    }
3108}
3109
3110/// Return value for various IO operations that signal errors via the
3111/// return value and not necessarily via a #GError.
3112///
3113/// This enum exists to be able to return errors to callers without having to
3114/// allocate a #GError. Allocating #GErrors can be quite expensive for
3115/// regularly happening errors like [`IOErrorEnum::WouldBlock`][crate::IOErrorEnum::WouldBlock].
3116///
3117/// In case of [`Failed`][Self::Failed] a #GError should be set for the
3118/// operation to give details about the error that happened.
3119#[cfg(feature = "v2_60")]
3120#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3121#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3122#[non_exhaustive]
3123#[doc(alias = "GPollableReturn")]
3124pub enum PollableReturn {
3125    /// Generic error condition for when an operation fails.
3126    #[doc(alias = "G_POLLABLE_RETURN_FAILED")]
3127    Failed,
3128    /// The operation was successfully finished.
3129    #[doc(alias = "G_POLLABLE_RETURN_OK")]
3130    Ok,
3131    /// The operation would block.
3132    #[doc(alias = "G_POLLABLE_RETURN_WOULD_BLOCK")]
3133    WouldBlock,
3134    #[doc(hidden)]
3135    __Unknown(i32),
3136}
3137
3138#[cfg(feature = "v2_60")]
3139#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3140#[doc(hidden)]
3141impl IntoGlib for PollableReturn {
3142    type GlibType = ffi::GPollableReturn;
3143
3144    #[inline]
3145    fn into_glib(self) -> ffi::GPollableReturn {
3146        match self {
3147            Self::Failed => ffi::G_POLLABLE_RETURN_FAILED,
3148            Self::Ok => ffi::G_POLLABLE_RETURN_OK,
3149            Self::WouldBlock => ffi::G_POLLABLE_RETURN_WOULD_BLOCK,
3150            Self::__Unknown(value) => value,
3151        }
3152    }
3153}
3154
3155#[cfg(feature = "v2_60")]
3156#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3157#[doc(hidden)]
3158impl FromGlib<ffi::GPollableReturn> for PollableReturn {
3159    #[inline]
3160    unsafe fn from_glib(value: ffi::GPollableReturn) -> Self {
3161        match value {
3162            ffi::G_POLLABLE_RETURN_FAILED => Self::Failed,
3163            ffi::G_POLLABLE_RETURN_OK => Self::Ok,
3164            ffi::G_POLLABLE_RETURN_WOULD_BLOCK => Self::WouldBlock,
3165            value => Self::__Unknown(value),
3166        }
3167    }
3168}
3169
3170#[cfg(feature = "v2_60")]
3171#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3172impl StaticType for PollableReturn {
3173    #[inline]
3174    #[doc(alias = "g_pollable_return_get_type")]
3175    fn static_type() -> glib::Type {
3176        unsafe { from_glib(ffi::g_pollable_return_get_type()) }
3177    }
3178}
3179
3180#[cfg(feature = "v2_60")]
3181#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3182impl glib::HasParamSpec for PollableReturn {
3183    type ParamSpec = glib::ParamSpecEnum;
3184    type SetValue = Self;
3185    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3186
3187    fn param_spec_builder() -> Self::BuilderFn {
3188        Self::ParamSpec::builder_with_default
3189    }
3190}
3191
3192#[cfg(feature = "v2_60")]
3193#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3194impl glib::value::ValueType for PollableReturn {
3195    type Type = Self;
3196}
3197
3198#[cfg(feature = "v2_60")]
3199#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3200unsafe impl<'a> glib::value::FromValue<'a> for PollableReturn {
3201    type Checker = glib::value::GenericValueTypeChecker<Self>;
3202
3203    #[inline]
3204    unsafe fn from_value(value: &'a glib::Value) -> Self {
3205        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3206    }
3207}
3208
3209#[cfg(feature = "v2_60")]
3210#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3211impl ToValue for PollableReturn {
3212    #[inline]
3213    fn to_value(&self) -> glib::Value {
3214        let mut value = glib::Value::for_value_type::<Self>();
3215        unsafe {
3216            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3217        }
3218        value
3219    }
3220
3221    #[inline]
3222    fn value_type(&self) -> glib::Type {
3223        Self::static_type()
3224    }
3225}
3226
3227#[cfg(feature = "v2_60")]
3228#[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
3229impl From<PollableReturn> for glib::Value {
3230    #[inline]
3231    fn from(v: PollableReturn) -> Self {
3232        ToValue::to_value(&v)
3233    }
3234}
3235
3236/// An error code used with `G_RESOLVER_ERROR` in a #GError returned
3237/// from a #GResolver routine.
3238#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3239#[non_exhaustive]
3240#[doc(alias = "GResolverError")]
3241pub enum ResolverError {
3242    /// the requested name/address/service was not
3243    ///     found
3244    #[doc(alias = "G_RESOLVER_ERROR_NOT_FOUND")]
3245    NotFound,
3246    /// the requested information could not
3247    ///     be looked up due to a network error or similar problem
3248    #[doc(alias = "G_RESOLVER_ERROR_TEMPORARY_FAILURE")]
3249    TemporaryFailure,
3250    /// unknown error
3251    #[doc(alias = "G_RESOLVER_ERROR_INTERNAL")]
3252    Internal,
3253    #[doc(hidden)]
3254    __Unknown(i32),
3255}
3256
3257#[doc(hidden)]
3258impl IntoGlib for ResolverError {
3259    type GlibType = ffi::GResolverError;
3260
3261    #[inline]
3262    fn into_glib(self) -> ffi::GResolverError {
3263        match self {
3264            Self::NotFound => ffi::G_RESOLVER_ERROR_NOT_FOUND,
3265            Self::TemporaryFailure => ffi::G_RESOLVER_ERROR_TEMPORARY_FAILURE,
3266            Self::Internal => ffi::G_RESOLVER_ERROR_INTERNAL,
3267            Self::__Unknown(value) => value,
3268        }
3269    }
3270}
3271
3272#[doc(hidden)]
3273impl FromGlib<ffi::GResolverError> for ResolverError {
3274    #[inline]
3275    unsafe fn from_glib(value: ffi::GResolverError) -> Self {
3276        match value {
3277            ffi::G_RESOLVER_ERROR_NOT_FOUND => Self::NotFound,
3278            ffi::G_RESOLVER_ERROR_TEMPORARY_FAILURE => Self::TemporaryFailure,
3279            ffi::G_RESOLVER_ERROR_INTERNAL => Self::Internal,
3280            value => Self::__Unknown(value),
3281        }
3282    }
3283}
3284
3285impl glib::error::ErrorDomain for ResolverError {
3286    #[inline]
3287    fn domain() -> glib::Quark {
3288        unsafe { from_glib(ffi::g_resolver_error_quark()) }
3289    }
3290
3291    #[inline]
3292    fn code(self) -> i32 {
3293        self.into_glib()
3294    }
3295
3296    #[inline]
3297    #[allow(clippy::match_single_binding)]
3298    fn from(code: i32) -> Option<Self> {
3299        match unsafe { from_glib(code) } {
3300            value => Some(value),
3301        }
3302    }
3303}
3304
3305impl StaticType for ResolverError {
3306    #[inline]
3307    #[doc(alias = "g_resolver_error_get_type")]
3308    fn static_type() -> glib::Type {
3309        unsafe { from_glib(ffi::g_resolver_error_get_type()) }
3310    }
3311}
3312
3313impl glib::HasParamSpec for ResolverError {
3314    type ParamSpec = glib::ParamSpecEnum;
3315    type SetValue = Self;
3316    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3317
3318    fn param_spec_builder() -> Self::BuilderFn {
3319        Self::ParamSpec::builder_with_default
3320    }
3321}
3322
3323impl glib::value::ValueType for ResolverError {
3324    type Type = Self;
3325}
3326
3327unsafe impl<'a> glib::value::FromValue<'a> for ResolverError {
3328    type Checker = glib::value::GenericValueTypeChecker<Self>;
3329
3330    #[inline]
3331    unsafe fn from_value(value: &'a glib::Value) -> Self {
3332        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3333    }
3334}
3335
3336impl ToValue for ResolverError {
3337    #[inline]
3338    fn to_value(&self) -> glib::Value {
3339        let mut value = glib::Value::for_value_type::<Self>();
3340        unsafe {
3341            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3342        }
3343        value
3344    }
3345
3346    #[inline]
3347    fn value_type(&self) -> glib::Type {
3348        Self::static_type()
3349    }
3350}
3351
3352impl From<ResolverError> for glib::Value {
3353    #[inline]
3354    fn from(v: ResolverError) -> Self {
3355        ToValue::to_value(&v)
3356    }
3357}
3358
3359/// The type of record that g_resolver_lookup_records() or
3360/// g_resolver_lookup_records_async() should retrieve. The records are returned
3361/// as lists of #GVariant tuples. Each record type has different values in
3362/// the variant tuples returned.
3363///
3364/// [`Srv`][Self::Srv] records are returned as variants with the signature
3365/// `(qqqs)`, containing a `guint16` with the priority, a `guint16` with the
3366/// weight, a `guint16` with the port, and a string of the hostname.
3367///
3368/// [`Mx`][Self::Mx] records are returned as variants with the signature
3369/// `(qs)`, representing a `guint16` with the preference, and a string containing
3370/// the mail exchanger hostname.
3371///
3372/// [`Txt`][Self::Txt] records are returned as variants with the signature
3373/// `(as)`, representing an array of the strings in the text record. Note: Most TXT
3374/// records only contain a single string, but
3375/// [RFC 1035](https://tools.ietf.org/html/rfc1035#section-3.3.14) does allow a
3376/// record to contain multiple strings. The RFC which defines the interpretation
3377/// of a specific TXT record will likely require concatenation of multiple
3378/// strings if they are present, as with
3379/// [RFC 7208](https://tools.ietf.org/html/rfc7208#section-3.3).
3380///
3381/// [`Soa`][Self::Soa] records are returned as variants with the signature
3382/// `(ssuuuuu)`, representing a string containing the primary name server, a
3383/// string containing the administrator, the serial as a `guint32`, the refresh
3384/// interval as a `guint32`, the retry interval as a `guint32`, the expire timeout
3385/// as a `guint32`, and the TTL as a `guint32`.
3386///
3387/// [`Ns`][Self::Ns] records are returned as variants with the signature
3388/// `(s)`, representing a string of the hostname of the name server.
3389#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3390#[non_exhaustive]
3391#[doc(alias = "GResolverRecordType")]
3392pub enum ResolverRecordType {
3393    /// look up DNS SRV records for a domain
3394    #[doc(alias = "G_RESOLVER_RECORD_SRV")]
3395    Srv,
3396    /// look up DNS MX records for a domain
3397    #[doc(alias = "G_RESOLVER_RECORD_MX")]
3398    Mx,
3399    /// look up DNS TXT records for a name
3400    #[doc(alias = "G_RESOLVER_RECORD_TXT")]
3401    Txt,
3402    /// look up DNS SOA records for a zone
3403    #[doc(alias = "G_RESOLVER_RECORD_SOA")]
3404    Soa,
3405    /// look up DNS NS records for a domain
3406    #[doc(alias = "G_RESOLVER_RECORD_NS")]
3407    Ns,
3408    #[doc(hidden)]
3409    __Unknown(i32),
3410}
3411
3412#[doc(hidden)]
3413impl IntoGlib for ResolverRecordType {
3414    type GlibType = ffi::GResolverRecordType;
3415
3416    #[inline]
3417    fn into_glib(self) -> ffi::GResolverRecordType {
3418        match self {
3419            Self::Srv => ffi::G_RESOLVER_RECORD_SRV,
3420            Self::Mx => ffi::G_RESOLVER_RECORD_MX,
3421            Self::Txt => ffi::G_RESOLVER_RECORD_TXT,
3422            Self::Soa => ffi::G_RESOLVER_RECORD_SOA,
3423            Self::Ns => ffi::G_RESOLVER_RECORD_NS,
3424            Self::__Unknown(value) => value,
3425        }
3426    }
3427}
3428
3429#[doc(hidden)]
3430impl FromGlib<ffi::GResolverRecordType> for ResolverRecordType {
3431    #[inline]
3432    unsafe fn from_glib(value: ffi::GResolverRecordType) -> Self {
3433        match value {
3434            ffi::G_RESOLVER_RECORD_SRV => Self::Srv,
3435            ffi::G_RESOLVER_RECORD_MX => Self::Mx,
3436            ffi::G_RESOLVER_RECORD_TXT => Self::Txt,
3437            ffi::G_RESOLVER_RECORD_SOA => Self::Soa,
3438            ffi::G_RESOLVER_RECORD_NS => Self::Ns,
3439            value => Self::__Unknown(value),
3440        }
3441    }
3442}
3443
3444impl StaticType for ResolverRecordType {
3445    #[inline]
3446    #[doc(alias = "g_resolver_record_type_get_type")]
3447    fn static_type() -> glib::Type {
3448        unsafe { from_glib(ffi::g_resolver_record_type_get_type()) }
3449    }
3450}
3451
3452impl glib::HasParamSpec for ResolverRecordType {
3453    type ParamSpec = glib::ParamSpecEnum;
3454    type SetValue = Self;
3455    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3456
3457    fn param_spec_builder() -> Self::BuilderFn {
3458        Self::ParamSpec::builder_with_default
3459    }
3460}
3461
3462impl glib::value::ValueType for ResolverRecordType {
3463    type Type = Self;
3464}
3465
3466unsafe impl<'a> glib::value::FromValue<'a> for ResolverRecordType {
3467    type Checker = glib::value::GenericValueTypeChecker<Self>;
3468
3469    #[inline]
3470    unsafe fn from_value(value: &'a glib::Value) -> Self {
3471        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3472    }
3473}
3474
3475impl ToValue for ResolverRecordType {
3476    #[inline]
3477    fn to_value(&self) -> glib::Value {
3478        let mut value = glib::Value::for_value_type::<Self>();
3479        unsafe {
3480            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3481        }
3482        value
3483    }
3484
3485    #[inline]
3486    fn value_type(&self) -> glib::Type {
3487        Self::static_type()
3488    }
3489}
3490
3491impl From<ResolverRecordType> for glib::Value {
3492    #[inline]
3493    fn from(v: ResolverRecordType) -> Self {
3494        ToValue::to_value(&v)
3495    }
3496}
3497
3498/// An error code used with `G_RESOURCE_ERROR` in a #GError returned
3499/// from a #GResource routine.
3500#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3501#[non_exhaustive]
3502#[doc(alias = "GResourceError")]
3503pub enum ResourceError {
3504    /// no file was found at the requested path
3505    #[doc(alias = "G_RESOURCE_ERROR_NOT_FOUND")]
3506    NotFound,
3507    /// unknown error
3508    #[doc(alias = "G_RESOURCE_ERROR_INTERNAL")]
3509    Internal,
3510    #[doc(hidden)]
3511    __Unknown(i32),
3512}
3513
3514#[doc(hidden)]
3515impl IntoGlib for ResourceError {
3516    type GlibType = ffi::GResourceError;
3517
3518    #[inline]
3519    fn into_glib(self) -> ffi::GResourceError {
3520        match self {
3521            Self::NotFound => ffi::G_RESOURCE_ERROR_NOT_FOUND,
3522            Self::Internal => ffi::G_RESOURCE_ERROR_INTERNAL,
3523            Self::__Unknown(value) => value,
3524        }
3525    }
3526}
3527
3528#[doc(hidden)]
3529impl FromGlib<ffi::GResourceError> for ResourceError {
3530    #[inline]
3531    unsafe fn from_glib(value: ffi::GResourceError) -> Self {
3532        match value {
3533            ffi::G_RESOURCE_ERROR_NOT_FOUND => Self::NotFound,
3534            ffi::G_RESOURCE_ERROR_INTERNAL => Self::Internal,
3535            value => Self::__Unknown(value),
3536        }
3537    }
3538}
3539
3540impl glib::error::ErrorDomain for ResourceError {
3541    #[inline]
3542    fn domain() -> glib::Quark {
3543        unsafe { from_glib(ffi::g_resource_error_quark()) }
3544    }
3545
3546    #[inline]
3547    fn code(self) -> i32 {
3548        self.into_glib()
3549    }
3550
3551    #[inline]
3552    #[allow(clippy::match_single_binding)]
3553    fn from(code: i32) -> Option<Self> {
3554        match unsafe { from_glib(code) } {
3555            value => Some(value),
3556        }
3557    }
3558}
3559
3560impl StaticType for ResourceError {
3561    #[inline]
3562    #[doc(alias = "g_resource_error_get_type")]
3563    fn static_type() -> glib::Type {
3564        unsafe { from_glib(ffi::g_resource_error_get_type()) }
3565    }
3566}
3567
3568impl glib::HasParamSpec for ResourceError {
3569    type ParamSpec = glib::ParamSpecEnum;
3570    type SetValue = Self;
3571    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3572
3573    fn param_spec_builder() -> Self::BuilderFn {
3574        Self::ParamSpec::builder_with_default
3575    }
3576}
3577
3578impl glib::value::ValueType for ResourceError {
3579    type Type = Self;
3580}
3581
3582unsafe impl<'a> glib::value::FromValue<'a> for ResourceError {
3583    type Checker = glib::value::GenericValueTypeChecker<Self>;
3584
3585    #[inline]
3586    unsafe fn from_value(value: &'a glib::Value) -> Self {
3587        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3588    }
3589}
3590
3591impl ToValue for ResourceError {
3592    #[inline]
3593    fn to_value(&self) -> glib::Value {
3594        let mut value = glib::Value::for_value_type::<Self>();
3595        unsafe {
3596            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3597        }
3598        value
3599    }
3600
3601    #[inline]
3602    fn value_type(&self) -> glib::Type {
3603        Self::static_type()
3604    }
3605}
3606
3607impl From<ResourceError> for glib::Value {
3608    #[inline]
3609    fn from(v: ResourceError) -> Self {
3610        ToValue::to_value(&v)
3611    }
3612}
3613
3614/// Describes an event occurring on a #GSocketClient. See the
3615/// #GSocketClient::event signal for more details.
3616///
3617/// Additional values may be added to this type in the future.
3618#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3619#[non_exhaustive]
3620#[doc(alias = "GSocketClientEvent")]
3621pub enum SocketClientEvent {
3622    /// The client is doing a DNS lookup.
3623    #[doc(alias = "G_SOCKET_CLIENT_RESOLVING")]
3624    Resolving,
3625    /// The client has completed a DNS lookup.
3626    #[doc(alias = "G_SOCKET_CLIENT_RESOLVED")]
3627    Resolved,
3628    /// The client is connecting to a remote
3629    ///   host (either a proxy or the destination server).
3630    #[doc(alias = "G_SOCKET_CLIENT_CONNECTING")]
3631    Connecting,
3632    /// The client has connected to a remote
3633    ///   host.
3634    #[doc(alias = "G_SOCKET_CLIENT_CONNECTED")]
3635    Connected,
3636    /// The client is negotiating
3637    ///   with a proxy to connect to the destination server.
3638    #[doc(alias = "G_SOCKET_CLIENT_PROXY_NEGOTIATING")]
3639    ProxyNegotiating,
3640    /// The client has negotiated
3641    ///   with the proxy server.
3642    #[doc(alias = "G_SOCKET_CLIENT_PROXY_NEGOTIATED")]
3643    ProxyNegotiated,
3644    /// The client is performing a
3645    ///   TLS handshake.
3646    #[doc(alias = "G_SOCKET_CLIENT_TLS_HANDSHAKING")]
3647    TlsHandshaking,
3648    /// The client has performed a
3649    ///   TLS handshake.
3650    #[doc(alias = "G_SOCKET_CLIENT_TLS_HANDSHAKED")]
3651    TlsHandshaked,
3652    /// The client is done with a particular
3653    ///   #GSocketConnectable.
3654    #[doc(alias = "G_SOCKET_CLIENT_COMPLETE")]
3655    Complete,
3656    #[doc(hidden)]
3657    __Unknown(i32),
3658}
3659
3660#[doc(hidden)]
3661impl IntoGlib for SocketClientEvent {
3662    type GlibType = ffi::GSocketClientEvent;
3663
3664    #[inline]
3665    fn into_glib(self) -> ffi::GSocketClientEvent {
3666        match self {
3667            Self::Resolving => ffi::G_SOCKET_CLIENT_RESOLVING,
3668            Self::Resolved => ffi::G_SOCKET_CLIENT_RESOLVED,
3669            Self::Connecting => ffi::G_SOCKET_CLIENT_CONNECTING,
3670            Self::Connected => ffi::G_SOCKET_CLIENT_CONNECTED,
3671            Self::ProxyNegotiating => ffi::G_SOCKET_CLIENT_PROXY_NEGOTIATING,
3672            Self::ProxyNegotiated => ffi::G_SOCKET_CLIENT_PROXY_NEGOTIATED,
3673            Self::TlsHandshaking => ffi::G_SOCKET_CLIENT_TLS_HANDSHAKING,
3674            Self::TlsHandshaked => ffi::G_SOCKET_CLIENT_TLS_HANDSHAKED,
3675            Self::Complete => ffi::G_SOCKET_CLIENT_COMPLETE,
3676            Self::__Unknown(value) => value,
3677        }
3678    }
3679}
3680
3681#[doc(hidden)]
3682impl FromGlib<ffi::GSocketClientEvent> for SocketClientEvent {
3683    #[inline]
3684    unsafe fn from_glib(value: ffi::GSocketClientEvent) -> Self {
3685        match value {
3686            ffi::G_SOCKET_CLIENT_RESOLVING => Self::Resolving,
3687            ffi::G_SOCKET_CLIENT_RESOLVED => Self::Resolved,
3688            ffi::G_SOCKET_CLIENT_CONNECTING => Self::Connecting,
3689            ffi::G_SOCKET_CLIENT_CONNECTED => Self::Connected,
3690            ffi::G_SOCKET_CLIENT_PROXY_NEGOTIATING => Self::ProxyNegotiating,
3691            ffi::G_SOCKET_CLIENT_PROXY_NEGOTIATED => Self::ProxyNegotiated,
3692            ffi::G_SOCKET_CLIENT_TLS_HANDSHAKING => Self::TlsHandshaking,
3693            ffi::G_SOCKET_CLIENT_TLS_HANDSHAKED => Self::TlsHandshaked,
3694            ffi::G_SOCKET_CLIENT_COMPLETE => Self::Complete,
3695            value => Self::__Unknown(value),
3696        }
3697    }
3698}
3699
3700impl StaticType for SocketClientEvent {
3701    #[inline]
3702    #[doc(alias = "g_socket_client_event_get_type")]
3703    fn static_type() -> glib::Type {
3704        unsafe { from_glib(ffi::g_socket_client_event_get_type()) }
3705    }
3706}
3707
3708impl glib::HasParamSpec for SocketClientEvent {
3709    type ParamSpec = glib::ParamSpecEnum;
3710    type SetValue = Self;
3711    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3712
3713    fn param_spec_builder() -> Self::BuilderFn {
3714        Self::ParamSpec::builder_with_default
3715    }
3716}
3717
3718impl glib::value::ValueType for SocketClientEvent {
3719    type Type = Self;
3720}
3721
3722unsafe impl<'a> glib::value::FromValue<'a> for SocketClientEvent {
3723    type Checker = glib::value::GenericValueTypeChecker<Self>;
3724
3725    #[inline]
3726    unsafe fn from_value(value: &'a glib::Value) -> Self {
3727        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3728    }
3729}
3730
3731impl ToValue for SocketClientEvent {
3732    #[inline]
3733    fn to_value(&self) -> glib::Value {
3734        let mut value = glib::Value::for_value_type::<Self>();
3735        unsafe {
3736            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3737        }
3738        value
3739    }
3740
3741    #[inline]
3742    fn value_type(&self) -> glib::Type {
3743        Self::static_type()
3744    }
3745}
3746
3747impl From<SocketClientEvent> for glib::Value {
3748    #[inline]
3749    fn from(v: SocketClientEvent) -> Self {
3750        ToValue::to_value(&v)
3751    }
3752}
3753
3754/// The protocol family of a #GSocketAddress. (These values are
3755/// identical to the system defines `AF_INET`, `AF_INET6` and `AF_UNIX`,
3756/// if available.)
3757#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3758#[non_exhaustive]
3759#[doc(alias = "GSocketFamily")]
3760pub enum SocketFamily {
3761    /// no address family
3762    #[doc(alias = "G_SOCKET_FAMILY_INVALID")]
3763    Invalid,
3764    /// the UNIX domain family
3765    #[doc(alias = "G_SOCKET_FAMILY_UNIX")]
3766    Unix,
3767    /// the IPv4 family
3768    #[doc(alias = "G_SOCKET_FAMILY_IPV4")]
3769    Ipv4,
3770    /// the IPv6 family
3771    #[doc(alias = "G_SOCKET_FAMILY_IPV6")]
3772    Ipv6,
3773    #[doc(hidden)]
3774    __Unknown(i32),
3775}
3776
3777#[doc(hidden)]
3778impl IntoGlib for SocketFamily {
3779    type GlibType = ffi::GSocketFamily;
3780
3781    #[inline]
3782    fn into_glib(self) -> ffi::GSocketFamily {
3783        match self {
3784            Self::Invalid => ffi::G_SOCKET_FAMILY_INVALID,
3785            Self::Unix => ffi::G_SOCKET_FAMILY_UNIX,
3786            Self::Ipv4 => ffi::G_SOCKET_FAMILY_IPV4,
3787            Self::Ipv6 => ffi::G_SOCKET_FAMILY_IPV6,
3788            Self::__Unknown(value) => value,
3789        }
3790    }
3791}
3792
3793#[doc(hidden)]
3794impl FromGlib<ffi::GSocketFamily> for SocketFamily {
3795    #[inline]
3796    unsafe fn from_glib(value: ffi::GSocketFamily) -> Self {
3797        match value {
3798            ffi::G_SOCKET_FAMILY_INVALID => Self::Invalid,
3799            ffi::G_SOCKET_FAMILY_UNIX => Self::Unix,
3800            ffi::G_SOCKET_FAMILY_IPV4 => Self::Ipv4,
3801            ffi::G_SOCKET_FAMILY_IPV6 => Self::Ipv6,
3802            value => Self::__Unknown(value),
3803        }
3804    }
3805}
3806
3807impl StaticType for SocketFamily {
3808    #[inline]
3809    #[doc(alias = "g_socket_family_get_type")]
3810    fn static_type() -> glib::Type {
3811        unsafe { from_glib(ffi::g_socket_family_get_type()) }
3812    }
3813}
3814
3815impl glib::HasParamSpec for SocketFamily {
3816    type ParamSpec = glib::ParamSpecEnum;
3817    type SetValue = Self;
3818    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3819
3820    fn param_spec_builder() -> Self::BuilderFn {
3821        Self::ParamSpec::builder_with_default
3822    }
3823}
3824
3825impl glib::value::ValueType for SocketFamily {
3826    type Type = Self;
3827}
3828
3829unsafe impl<'a> glib::value::FromValue<'a> for SocketFamily {
3830    type Checker = glib::value::GenericValueTypeChecker<Self>;
3831
3832    #[inline]
3833    unsafe fn from_value(value: &'a glib::Value) -> Self {
3834        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3835    }
3836}
3837
3838impl ToValue for SocketFamily {
3839    #[inline]
3840    fn to_value(&self) -> glib::Value {
3841        let mut value = glib::Value::for_value_type::<Self>();
3842        unsafe {
3843            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3844        }
3845        value
3846    }
3847
3848    #[inline]
3849    fn value_type(&self) -> glib::Type {
3850        Self::static_type()
3851    }
3852}
3853
3854impl From<SocketFamily> for glib::Value {
3855    #[inline]
3856    fn from(v: SocketFamily) -> Self {
3857        ToValue::to_value(&v)
3858    }
3859}
3860
3861/// Describes an event occurring on a #GSocketListener. See the
3862/// #GSocketListener::event signal for more details.
3863///
3864/// Additional values may be added to this type in the future.
3865#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3866#[non_exhaustive]
3867#[doc(alias = "GSocketListenerEvent")]
3868pub enum SocketListenerEvent {
3869    /// The listener is about to bind a socket.
3870    #[doc(alias = "G_SOCKET_LISTENER_BINDING")]
3871    Binding,
3872    /// The listener has bound a socket.
3873    #[doc(alias = "G_SOCKET_LISTENER_BOUND")]
3874    Bound,
3875    /// The listener is about to start
3876    ///    listening on this socket.
3877    #[doc(alias = "G_SOCKET_LISTENER_LISTENING")]
3878    Listening,
3879    /// The listener is now listening on
3880    ///   this socket.
3881    #[doc(alias = "G_SOCKET_LISTENER_LISTENED")]
3882    Listened,
3883    #[doc(hidden)]
3884    __Unknown(i32),
3885}
3886
3887#[doc(hidden)]
3888impl IntoGlib for SocketListenerEvent {
3889    type GlibType = ffi::GSocketListenerEvent;
3890
3891    #[inline]
3892    fn into_glib(self) -> ffi::GSocketListenerEvent {
3893        match self {
3894            Self::Binding => ffi::G_SOCKET_LISTENER_BINDING,
3895            Self::Bound => ffi::G_SOCKET_LISTENER_BOUND,
3896            Self::Listening => ffi::G_SOCKET_LISTENER_LISTENING,
3897            Self::Listened => ffi::G_SOCKET_LISTENER_LISTENED,
3898            Self::__Unknown(value) => value,
3899        }
3900    }
3901}
3902
3903#[doc(hidden)]
3904impl FromGlib<ffi::GSocketListenerEvent> for SocketListenerEvent {
3905    #[inline]
3906    unsafe fn from_glib(value: ffi::GSocketListenerEvent) -> Self {
3907        match value {
3908            ffi::G_SOCKET_LISTENER_BINDING => Self::Binding,
3909            ffi::G_SOCKET_LISTENER_BOUND => Self::Bound,
3910            ffi::G_SOCKET_LISTENER_LISTENING => Self::Listening,
3911            ffi::G_SOCKET_LISTENER_LISTENED => Self::Listened,
3912            value => Self::__Unknown(value),
3913        }
3914    }
3915}
3916
3917impl StaticType for SocketListenerEvent {
3918    #[inline]
3919    #[doc(alias = "g_socket_listener_event_get_type")]
3920    fn static_type() -> glib::Type {
3921        unsafe { from_glib(ffi::g_socket_listener_event_get_type()) }
3922    }
3923}
3924
3925impl glib::HasParamSpec for SocketListenerEvent {
3926    type ParamSpec = glib::ParamSpecEnum;
3927    type SetValue = Self;
3928    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3929
3930    fn param_spec_builder() -> Self::BuilderFn {
3931        Self::ParamSpec::builder_with_default
3932    }
3933}
3934
3935impl glib::value::ValueType for SocketListenerEvent {
3936    type Type = Self;
3937}
3938
3939unsafe impl<'a> glib::value::FromValue<'a> for SocketListenerEvent {
3940    type Checker = glib::value::GenericValueTypeChecker<Self>;
3941
3942    #[inline]
3943    unsafe fn from_value(value: &'a glib::Value) -> Self {
3944        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3945    }
3946}
3947
3948impl ToValue for SocketListenerEvent {
3949    #[inline]
3950    fn to_value(&self) -> glib::Value {
3951        let mut value = glib::Value::for_value_type::<Self>();
3952        unsafe {
3953            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3954        }
3955        value
3956    }
3957
3958    #[inline]
3959    fn value_type(&self) -> glib::Type {
3960        Self::static_type()
3961    }
3962}
3963
3964impl From<SocketListenerEvent> for glib::Value {
3965    #[inline]
3966    fn from(v: SocketListenerEvent) -> Self {
3967        ToValue::to_value(&v)
3968    }
3969}
3970
3971/// A protocol identifier is specified when creating a #GSocket, which is a
3972/// family/type specific identifier, where 0 means the default protocol for
3973/// the particular family/type.
3974///
3975/// This enum contains a set of commonly available and used protocols. You
3976/// can also pass any other identifiers handled by the platform in order to
3977/// use protocols not listed here.
3978#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3979#[non_exhaustive]
3980#[doc(alias = "GSocketProtocol")]
3981pub enum SocketProtocol {
3982    /// The protocol type is unknown
3983    #[doc(alias = "G_SOCKET_PROTOCOL_UNKNOWN")]
3984    Unknown,
3985    /// The default protocol for the family/type
3986    #[doc(alias = "G_SOCKET_PROTOCOL_DEFAULT")]
3987    Default,
3988    /// TCP over IP
3989    #[doc(alias = "G_SOCKET_PROTOCOL_TCP")]
3990    Tcp,
3991    /// UDP over IP
3992    #[doc(alias = "G_SOCKET_PROTOCOL_UDP")]
3993    Udp,
3994    /// SCTP over IP
3995    #[doc(alias = "G_SOCKET_PROTOCOL_SCTP")]
3996    Sctp,
3997    #[doc(hidden)]
3998    __Unknown(i32),
3999}
4000
4001#[doc(hidden)]
4002impl IntoGlib for SocketProtocol {
4003    type GlibType = ffi::GSocketProtocol;
4004
4005    #[inline]
4006    fn into_glib(self) -> ffi::GSocketProtocol {
4007        match self {
4008            Self::Unknown => ffi::G_SOCKET_PROTOCOL_UNKNOWN,
4009            Self::Default => ffi::G_SOCKET_PROTOCOL_DEFAULT,
4010            Self::Tcp => ffi::G_SOCKET_PROTOCOL_TCP,
4011            Self::Udp => ffi::G_SOCKET_PROTOCOL_UDP,
4012            Self::Sctp => ffi::G_SOCKET_PROTOCOL_SCTP,
4013            Self::__Unknown(value) => value,
4014        }
4015    }
4016}
4017
4018#[doc(hidden)]
4019impl FromGlib<ffi::GSocketProtocol> for SocketProtocol {
4020    #[inline]
4021    unsafe fn from_glib(value: ffi::GSocketProtocol) -> Self {
4022        match value {
4023            ffi::G_SOCKET_PROTOCOL_UNKNOWN => Self::Unknown,
4024            ffi::G_SOCKET_PROTOCOL_DEFAULT => Self::Default,
4025            ffi::G_SOCKET_PROTOCOL_TCP => Self::Tcp,
4026            ffi::G_SOCKET_PROTOCOL_UDP => Self::Udp,
4027            ffi::G_SOCKET_PROTOCOL_SCTP => Self::Sctp,
4028            value => Self::__Unknown(value),
4029        }
4030    }
4031}
4032
4033impl StaticType for SocketProtocol {
4034    #[inline]
4035    #[doc(alias = "g_socket_protocol_get_type")]
4036    fn static_type() -> glib::Type {
4037        unsafe { from_glib(ffi::g_socket_protocol_get_type()) }
4038    }
4039}
4040
4041impl glib::HasParamSpec for SocketProtocol {
4042    type ParamSpec = glib::ParamSpecEnum;
4043    type SetValue = Self;
4044    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4045
4046    fn param_spec_builder() -> Self::BuilderFn {
4047        Self::ParamSpec::builder_with_default
4048    }
4049}
4050
4051impl glib::value::ValueType for SocketProtocol {
4052    type Type = Self;
4053}
4054
4055unsafe impl<'a> glib::value::FromValue<'a> for SocketProtocol {
4056    type Checker = glib::value::GenericValueTypeChecker<Self>;
4057
4058    #[inline]
4059    unsafe fn from_value(value: &'a glib::Value) -> Self {
4060        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4061    }
4062}
4063
4064impl ToValue for SocketProtocol {
4065    #[inline]
4066    fn to_value(&self) -> glib::Value {
4067        let mut value = glib::Value::for_value_type::<Self>();
4068        unsafe {
4069            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4070        }
4071        value
4072    }
4073
4074    #[inline]
4075    fn value_type(&self) -> glib::Type {
4076        Self::static_type()
4077    }
4078}
4079
4080impl From<SocketProtocol> for glib::Value {
4081    #[inline]
4082    fn from(v: SocketProtocol) -> Self {
4083        ToValue::to_value(&v)
4084    }
4085}
4086
4087/// Flags used when creating a #GSocket. Some protocols may not implement
4088/// all the socket types.
4089#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4090#[non_exhaustive]
4091#[doc(alias = "GSocketType")]
4092pub enum SocketType {
4093    /// Type unknown or wrong
4094    #[doc(alias = "G_SOCKET_TYPE_INVALID")]
4095    Invalid,
4096    /// Reliable connection-based byte streams (e.g. TCP).
4097    #[doc(alias = "G_SOCKET_TYPE_STREAM")]
4098    Stream,
4099    /// Connectionless, unreliable datagram passing.
4100    ///     (e.g. UDP)
4101    #[doc(alias = "G_SOCKET_TYPE_DATAGRAM")]
4102    Datagram,
4103    /// Reliable connection-based passing of datagrams
4104    ///     of fixed maximum length (e.g. SCTP).
4105    #[doc(alias = "G_SOCKET_TYPE_SEQPACKET")]
4106    Seqpacket,
4107    #[doc(hidden)]
4108    __Unknown(i32),
4109}
4110
4111#[doc(hidden)]
4112impl IntoGlib for SocketType {
4113    type GlibType = ffi::GSocketType;
4114
4115    #[inline]
4116    fn into_glib(self) -> ffi::GSocketType {
4117        match self {
4118            Self::Invalid => ffi::G_SOCKET_TYPE_INVALID,
4119            Self::Stream => ffi::G_SOCKET_TYPE_STREAM,
4120            Self::Datagram => ffi::G_SOCKET_TYPE_DATAGRAM,
4121            Self::Seqpacket => ffi::G_SOCKET_TYPE_SEQPACKET,
4122            Self::__Unknown(value) => value,
4123        }
4124    }
4125}
4126
4127#[doc(hidden)]
4128impl FromGlib<ffi::GSocketType> for SocketType {
4129    #[inline]
4130    unsafe fn from_glib(value: ffi::GSocketType) -> Self {
4131        match value {
4132            ffi::G_SOCKET_TYPE_INVALID => Self::Invalid,
4133            ffi::G_SOCKET_TYPE_STREAM => Self::Stream,
4134            ffi::G_SOCKET_TYPE_DATAGRAM => Self::Datagram,
4135            ffi::G_SOCKET_TYPE_SEQPACKET => Self::Seqpacket,
4136            value => Self::__Unknown(value),
4137        }
4138    }
4139}
4140
4141impl StaticType for SocketType {
4142    #[inline]
4143    #[doc(alias = "g_socket_type_get_type")]
4144    fn static_type() -> glib::Type {
4145        unsafe { from_glib(ffi::g_socket_type_get_type()) }
4146    }
4147}
4148
4149impl glib::HasParamSpec for SocketType {
4150    type ParamSpec = glib::ParamSpecEnum;
4151    type SetValue = Self;
4152    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4153
4154    fn param_spec_builder() -> Self::BuilderFn {
4155        Self::ParamSpec::builder_with_default
4156    }
4157}
4158
4159impl glib::value::ValueType for SocketType {
4160    type Type = Self;
4161}
4162
4163unsafe impl<'a> glib::value::FromValue<'a> for SocketType {
4164    type Checker = glib::value::GenericValueTypeChecker<Self>;
4165
4166    #[inline]
4167    unsafe fn from_value(value: &'a glib::Value) -> Self {
4168        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4169    }
4170}
4171
4172impl ToValue for SocketType {
4173    #[inline]
4174    fn to_value(&self) -> glib::Value {
4175        let mut value = glib::Value::for_value_type::<Self>();
4176        unsafe {
4177            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4178        }
4179        value
4180    }
4181
4182    #[inline]
4183    fn value_type(&self) -> glib::Type {
4184        Self::static_type()
4185    }
4186}
4187
4188impl From<SocketType> for glib::Value {
4189    #[inline]
4190    fn from(v: SocketType) -> Self {
4191        ToValue::to_value(&v)
4192    }
4193}
4194
4195/// The client authentication mode for a #GTlsServerConnection.
4196#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4197#[non_exhaustive]
4198#[doc(alias = "GTlsAuthenticationMode")]
4199pub enum TlsAuthenticationMode {
4200    /// client authentication not required
4201    #[doc(alias = "G_TLS_AUTHENTICATION_NONE")]
4202    None,
4203    /// client authentication is requested
4204    #[doc(alias = "G_TLS_AUTHENTICATION_REQUESTED")]
4205    Requested,
4206    /// client authentication is required
4207    #[doc(alias = "G_TLS_AUTHENTICATION_REQUIRED")]
4208    Required,
4209    #[doc(hidden)]
4210    __Unknown(i32),
4211}
4212
4213#[doc(hidden)]
4214impl IntoGlib for TlsAuthenticationMode {
4215    type GlibType = ffi::GTlsAuthenticationMode;
4216
4217    #[inline]
4218    fn into_glib(self) -> ffi::GTlsAuthenticationMode {
4219        match self {
4220            Self::None => ffi::G_TLS_AUTHENTICATION_NONE,
4221            Self::Requested => ffi::G_TLS_AUTHENTICATION_REQUESTED,
4222            Self::Required => ffi::G_TLS_AUTHENTICATION_REQUIRED,
4223            Self::__Unknown(value) => value,
4224        }
4225    }
4226}
4227
4228#[doc(hidden)]
4229impl FromGlib<ffi::GTlsAuthenticationMode> for TlsAuthenticationMode {
4230    #[inline]
4231    unsafe fn from_glib(value: ffi::GTlsAuthenticationMode) -> Self {
4232        match value {
4233            ffi::G_TLS_AUTHENTICATION_NONE => Self::None,
4234            ffi::G_TLS_AUTHENTICATION_REQUESTED => Self::Requested,
4235            ffi::G_TLS_AUTHENTICATION_REQUIRED => Self::Required,
4236            value => Self::__Unknown(value),
4237        }
4238    }
4239}
4240
4241impl StaticType for TlsAuthenticationMode {
4242    #[inline]
4243    #[doc(alias = "g_tls_authentication_mode_get_type")]
4244    fn static_type() -> glib::Type {
4245        unsafe { from_glib(ffi::g_tls_authentication_mode_get_type()) }
4246    }
4247}
4248
4249impl glib::HasParamSpec for TlsAuthenticationMode {
4250    type ParamSpec = glib::ParamSpecEnum;
4251    type SetValue = Self;
4252    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4253
4254    fn param_spec_builder() -> Self::BuilderFn {
4255        Self::ParamSpec::builder_with_default
4256    }
4257}
4258
4259impl glib::value::ValueType for TlsAuthenticationMode {
4260    type Type = Self;
4261}
4262
4263unsafe impl<'a> glib::value::FromValue<'a> for TlsAuthenticationMode {
4264    type Checker = glib::value::GenericValueTypeChecker<Self>;
4265
4266    #[inline]
4267    unsafe fn from_value(value: &'a glib::Value) -> Self {
4268        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4269    }
4270}
4271
4272impl ToValue for TlsAuthenticationMode {
4273    #[inline]
4274    fn to_value(&self) -> glib::Value {
4275        let mut value = glib::Value::for_value_type::<Self>();
4276        unsafe {
4277            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4278        }
4279        value
4280    }
4281
4282    #[inline]
4283    fn value_type(&self) -> glib::Type {
4284        Self::static_type()
4285    }
4286}
4287
4288impl From<TlsAuthenticationMode> for glib::Value {
4289    #[inline]
4290    fn from(v: TlsAuthenticationMode) -> Self {
4291        ToValue::to_value(&v)
4292    }
4293}
4294
4295/// An error code used with `G_TLS_CHANNEL_BINDING_ERROR` in a #GError to
4296/// indicate a TLS channel binding retrieval error.
4297#[cfg(feature = "v2_66")]
4298#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4299#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4300#[non_exhaustive]
4301#[doc(alias = "GTlsChannelBindingError")]
4302pub enum TlsChannelBindingError {
4303    /// Either entire binding
4304    ///    retrieval facility or specific binding type is not implemented in the
4305    ///    TLS backend.
4306    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED")]
4307    NotImplemented,
4308    /// The handshake is not yet
4309    ///    complete on the connection which is a strong requirement for any existing
4310    ///    binding type.
4311    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE")]
4312    InvalidState,
4313    /// Handshake is complete but
4314    ///    binding data is not available. That normally indicates the TLS
4315    ///    implementation failed to provide the binding data. For example, some
4316    ///    implementations do not provide a peer certificate for resumed connections.
4317    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE")]
4318    NotAvailable,
4319    /// Binding type is not supported
4320    ///    on the current connection. This error could be triggered when requesting
4321    ///    `tls-server-end-point` binding data for a certificate which has no hash
4322    ///    function or uses multiple hash functions.
4323    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED")]
4324    NotSupported,
4325    /// Any other backend error
4326    ///    preventing binding data retrieval.
4327    #[doc(alias = "G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR")]
4328    GeneralError,
4329    #[doc(hidden)]
4330    __Unknown(i32),
4331}
4332
4333#[cfg(feature = "v2_66")]
4334#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4335#[doc(hidden)]
4336impl IntoGlib for TlsChannelBindingError {
4337    type GlibType = ffi::GTlsChannelBindingError;
4338
4339    #[inline]
4340    fn into_glib(self) -> ffi::GTlsChannelBindingError {
4341        match self {
4342            Self::NotImplemented => ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED,
4343            Self::InvalidState => ffi::G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE,
4344            Self::NotAvailable => ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE,
4345            Self::NotSupported => ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED,
4346            Self::GeneralError => ffi::G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR,
4347            Self::__Unknown(value) => value,
4348        }
4349    }
4350}
4351
4352#[cfg(feature = "v2_66")]
4353#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4354#[doc(hidden)]
4355impl FromGlib<ffi::GTlsChannelBindingError> for TlsChannelBindingError {
4356    #[inline]
4357    unsafe fn from_glib(value: ffi::GTlsChannelBindingError) -> Self {
4358        match value {
4359            ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED => Self::NotImplemented,
4360            ffi::G_TLS_CHANNEL_BINDING_ERROR_INVALID_STATE => Self::InvalidState,
4361            ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_AVAILABLE => Self::NotAvailable,
4362            ffi::G_TLS_CHANNEL_BINDING_ERROR_NOT_SUPPORTED => Self::NotSupported,
4363            ffi::G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR => Self::GeneralError,
4364            value => Self::__Unknown(value),
4365        }
4366    }
4367}
4368
4369#[cfg(feature = "v2_66")]
4370#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4371impl glib::error::ErrorDomain for TlsChannelBindingError {
4372    #[inline]
4373    fn domain() -> glib::Quark {
4374        unsafe { from_glib(ffi::g_tls_channel_binding_error_quark()) }
4375    }
4376
4377    #[inline]
4378    fn code(self) -> i32 {
4379        self.into_glib()
4380    }
4381
4382    #[inline]
4383    #[allow(clippy::match_single_binding)]
4384    fn from(code: i32) -> Option<Self> {
4385        match unsafe { from_glib(code) } {
4386            value => Some(value),
4387        }
4388    }
4389}
4390
4391#[cfg(feature = "v2_66")]
4392#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4393impl StaticType for TlsChannelBindingError {
4394    #[inline]
4395    #[doc(alias = "g_tls_channel_binding_error_get_type")]
4396    fn static_type() -> glib::Type {
4397        unsafe { from_glib(ffi::g_tls_channel_binding_error_get_type()) }
4398    }
4399}
4400
4401#[cfg(feature = "v2_66")]
4402#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4403impl glib::HasParamSpec for TlsChannelBindingError {
4404    type ParamSpec = glib::ParamSpecEnum;
4405    type SetValue = Self;
4406    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4407
4408    fn param_spec_builder() -> Self::BuilderFn {
4409        Self::ParamSpec::builder_with_default
4410    }
4411}
4412
4413#[cfg(feature = "v2_66")]
4414#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4415impl glib::value::ValueType for TlsChannelBindingError {
4416    type Type = Self;
4417}
4418
4419#[cfg(feature = "v2_66")]
4420#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4421unsafe impl<'a> glib::value::FromValue<'a> for TlsChannelBindingError {
4422    type Checker = glib::value::GenericValueTypeChecker<Self>;
4423
4424    #[inline]
4425    unsafe fn from_value(value: &'a glib::Value) -> Self {
4426        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4427    }
4428}
4429
4430#[cfg(feature = "v2_66")]
4431#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4432impl ToValue for TlsChannelBindingError {
4433    #[inline]
4434    fn to_value(&self) -> glib::Value {
4435        let mut value = glib::Value::for_value_type::<Self>();
4436        unsafe {
4437            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4438        }
4439        value
4440    }
4441
4442    #[inline]
4443    fn value_type(&self) -> glib::Type {
4444        Self::static_type()
4445    }
4446}
4447
4448#[cfg(feature = "v2_66")]
4449#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4450impl From<TlsChannelBindingError> for glib::Value {
4451    #[inline]
4452    fn from(v: TlsChannelBindingError) -> Self {
4453        ToValue::to_value(&v)
4454    }
4455}
4456
4457/// The type of TLS channel binding data to retrieve from #GTlsConnection
4458/// or #GDtlsConnection, as documented by RFC 5929 or RFC 9266. The
4459/// [`tls-unique-for-telnet`](https://tools.ietf.org/html/rfc5929#section-5)
4460/// binding type is not currently implemented.
4461#[cfg(feature = "v2_66")]
4462#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4463#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4464#[non_exhaustive]
4465#[doc(alias = "GTlsChannelBindingType")]
4466pub enum TlsChannelBindingType {
4467    /// [`tls-unique`](https://tools.ietf.org/html/rfc5929#section-3) binding
4468    ///    type
4469    #[doc(alias = "G_TLS_CHANNEL_BINDING_TLS_UNIQUE")]
4470    Unique,
4471    /// [`tls-server-end-point`](https://tools.ietf.org/html/rfc5929#section-4)
4472    ///    binding type
4473    #[doc(alias = "G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT")]
4474    ServerEndPoint,
4475    /// [`tls-exporter`](https://www.rfc-editor.org/rfc/rfc9266.html) binding
4476    ///    type. Since: 2.74
4477    #[cfg(feature = "v2_74")]
4478    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
4479    #[doc(alias = "G_TLS_CHANNEL_BINDING_TLS_EXPORTER")]
4480    Exporter,
4481    #[doc(hidden)]
4482    __Unknown(i32),
4483}
4484
4485#[cfg(feature = "v2_66")]
4486#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4487#[doc(hidden)]
4488impl IntoGlib for TlsChannelBindingType {
4489    type GlibType = ffi::GTlsChannelBindingType;
4490
4491    #[inline]
4492    fn into_glib(self) -> ffi::GTlsChannelBindingType {
4493        match self {
4494            Self::Unique => ffi::G_TLS_CHANNEL_BINDING_TLS_UNIQUE,
4495            Self::ServerEndPoint => ffi::G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT,
4496            #[cfg(feature = "v2_74")]
4497            Self::Exporter => ffi::G_TLS_CHANNEL_BINDING_TLS_EXPORTER,
4498            Self::__Unknown(value) => value,
4499        }
4500    }
4501}
4502
4503#[cfg(feature = "v2_66")]
4504#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4505#[doc(hidden)]
4506impl FromGlib<ffi::GTlsChannelBindingType> for TlsChannelBindingType {
4507    #[inline]
4508    unsafe fn from_glib(value: ffi::GTlsChannelBindingType) -> Self {
4509        match value {
4510            ffi::G_TLS_CHANNEL_BINDING_TLS_UNIQUE => Self::Unique,
4511            ffi::G_TLS_CHANNEL_BINDING_TLS_SERVER_END_POINT => Self::ServerEndPoint,
4512            #[cfg(feature = "v2_74")]
4513            ffi::G_TLS_CHANNEL_BINDING_TLS_EXPORTER => Self::Exporter,
4514            value => Self::__Unknown(value),
4515        }
4516    }
4517}
4518
4519#[cfg(feature = "v2_66")]
4520#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4521impl StaticType for TlsChannelBindingType {
4522    #[inline]
4523    #[doc(alias = "g_tls_channel_binding_type_get_type")]
4524    fn static_type() -> glib::Type {
4525        unsafe { from_glib(ffi::g_tls_channel_binding_type_get_type()) }
4526    }
4527}
4528
4529#[cfg(feature = "v2_66")]
4530#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4531impl glib::HasParamSpec for TlsChannelBindingType {
4532    type ParamSpec = glib::ParamSpecEnum;
4533    type SetValue = Self;
4534    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4535
4536    fn param_spec_builder() -> Self::BuilderFn {
4537        Self::ParamSpec::builder_with_default
4538    }
4539}
4540
4541#[cfg(feature = "v2_66")]
4542#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4543impl glib::value::ValueType for TlsChannelBindingType {
4544    type Type = Self;
4545}
4546
4547#[cfg(feature = "v2_66")]
4548#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4549unsafe impl<'a> glib::value::FromValue<'a> for TlsChannelBindingType {
4550    type Checker = glib::value::GenericValueTypeChecker<Self>;
4551
4552    #[inline]
4553    unsafe fn from_value(value: &'a glib::Value) -> Self {
4554        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4555    }
4556}
4557
4558#[cfg(feature = "v2_66")]
4559#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4560impl ToValue for TlsChannelBindingType {
4561    #[inline]
4562    fn to_value(&self) -> glib::Value {
4563        let mut value = glib::Value::for_value_type::<Self>();
4564        unsafe {
4565            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4566        }
4567        value
4568    }
4569
4570    #[inline]
4571    fn value_type(&self) -> glib::Type {
4572        Self::static_type()
4573    }
4574}
4575
4576#[cfg(feature = "v2_66")]
4577#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
4578impl From<TlsChannelBindingType> for glib::Value {
4579    #[inline]
4580    fn from(v: TlsChannelBindingType) -> Self {
4581        ToValue::to_value(&v)
4582    }
4583}
4584
4585/// An error code used with `G_TLS_ERROR` in a #GError returned from a
4586/// TLS-related routine.
4587#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4588#[non_exhaustive]
4589#[doc(alias = "GTlsError")]
4590pub enum TlsError {
4591    /// No TLS provider is available
4592    #[doc(alias = "G_TLS_ERROR_UNAVAILABLE")]
4593    Unavailable,
4594    /// Miscellaneous TLS error
4595    #[doc(alias = "G_TLS_ERROR_MISC")]
4596    Misc,
4597    /// The certificate presented could not
4598    ///   be parsed or failed validation.
4599    #[doc(alias = "G_TLS_ERROR_BAD_CERTIFICATE")]
4600    BadCertificate,
4601    /// The TLS handshake failed because the
4602    ///   peer does not seem to be a TLS server.
4603    #[doc(alias = "G_TLS_ERROR_NOT_TLS")]
4604    NotTls,
4605    /// The TLS handshake failed because the
4606    ///   peer's certificate was not acceptable.
4607    #[doc(alias = "G_TLS_ERROR_HANDSHAKE")]
4608    Handshake,
4609    /// The TLS handshake failed because
4610    ///   the server requested a client-side certificate, but none was
4611    ///   provided. See g_tls_connection_set_certificate().
4612    #[doc(alias = "G_TLS_ERROR_CERTIFICATE_REQUIRED")]
4613    CertificateRequired,
4614    /// The TLS connection was closed without proper
4615    ///   notice, which may indicate an attack. See
4616    ///   g_tls_connection_set_require_close_notify().
4617    #[doc(alias = "G_TLS_ERROR_EOF")]
4618    Eof,
4619    /// The TLS handshake failed
4620    ///   because the client sent the fallback SCSV, indicating a protocol
4621    ///   downgrade attack. Since: 2.60
4622    #[doc(alias = "G_TLS_ERROR_INAPPROPRIATE_FALLBACK")]
4623    InappropriateFallback,
4624    /// The certificate failed
4625    ///   to load because a password was incorrect. Since: 2.72
4626    #[cfg(feature = "v2_72")]
4627    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
4628    #[doc(alias = "G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD")]
4629    BadCertificatePassword,
4630    #[doc(hidden)]
4631    __Unknown(i32),
4632}
4633
4634#[doc(hidden)]
4635impl IntoGlib for TlsError {
4636    type GlibType = ffi::GTlsError;
4637
4638    #[inline]
4639    fn into_glib(self) -> ffi::GTlsError {
4640        match self {
4641            Self::Unavailable => ffi::G_TLS_ERROR_UNAVAILABLE,
4642            Self::Misc => ffi::G_TLS_ERROR_MISC,
4643            Self::BadCertificate => ffi::G_TLS_ERROR_BAD_CERTIFICATE,
4644            Self::NotTls => ffi::G_TLS_ERROR_NOT_TLS,
4645            Self::Handshake => ffi::G_TLS_ERROR_HANDSHAKE,
4646            Self::CertificateRequired => ffi::G_TLS_ERROR_CERTIFICATE_REQUIRED,
4647            Self::Eof => ffi::G_TLS_ERROR_EOF,
4648            Self::InappropriateFallback => ffi::G_TLS_ERROR_INAPPROPRIATE_FALLBACK,
4649            #[cfg(feature = "v2_72")]
4650            Self::BadCertificatePassword => ffi::G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD,
4651            Self::__Unknown(value) => value,
4652        }
4653    }
4654}
4655
4656#[doc(hidden)]
4657impl FromGlib<ffi::GTlsError> for TlsError {
4658    #[inline]
4659    unsafe fn from_glib(value: ffi::GTlsError) -> Self {
4660        match value {
4661            ffi::G_TLS_ERROR_UNAVAILABLE => Self::Unavailable,
4662            ffi::G_TLS_ERROR_MISC => Self::Misc,
4663            ffi::G_TLS_ERROR_BAD_CERTIFICATE => Self::BadCertificate,
4664            ffi::G_TLS_ERROR_NOT_TLS => Self::NotTls,
4665            ffi::G_TLS_ERROR_HANDSHAKE => Self::Handshake,
4666            ffi::G_TLS_ERROR_CERTIFICATE_REQUIRED => Self::CertificateRequired,
4667            ffi::G_TLS_ERROR_EOF => Self::Eof,
4668            ffi::G_TLS_ERROR_INAPPROPRIATE_FALLBACK => Self::InappropriateFallback,
4669            #[cfg(feature = "v2_72")]
4670            ffi::G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD => Self::BadCertificatePassword,
4671            value => Self::__Unknown(value),
4672        }
4673    }
4674}
4675
4676impl glib::error::ErrorDomain for TlsError {
4677    #[inline]
4678    fn domain() -> glib::Quark {
4679        unsafe { from_glib(ffi::g_tls_error_quark()) }
4680    }
4681
4682    #[inline]
4683    fn code(self) -> i32 {
4684        self.into_glib()
4685    }
4686
4687    #[inline]
4688    #[allow(clippy::match_single_binding)]
4689    fn from(code: i32) -> Option<Self> {
4690        match unsafe { from_glib(code) } {
4691            value => Some(value),
4692        }
4693    }
4694}
4695
4696impl StaticType for TlsError {
4697    #[inline]
4698    #[doc(alias = "g_tls_error_get_type")]
4699    fn static_type() -> glib::Type {
4700        unsafe { from_glib(ffi::g_tls_error_get_type()) }
4701    }
4702}
4703
4704impl glib::HasParamSpec for TlsError {
4705    type ParamSpec = glib::ParamSpecEnum;
4706    type SetValue = Self;
4707    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4708
4709    fn param_spec_builder() -> Self::BuilderFn {
4710        Self::ParamSpec::builder_with_default
4711    }
4712}
4713
4714impl glib::value::ValueType for TlsError {
4715    type Type = Self;
4716}
4717
4718unsafe impl<'a> glib::value::FromValue<'a> for TlsError {
4719    type Checker = glib::value::GenericValueTypeChecker<Self>;
4720
4721    #[inline]
4722    unsafe fn from_value(value: &'a glib::Value) -> Self {
4723        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4724    }
4725}
4726
4727impl ToValue for TlsError {
4728    #[inline]
4729    fn to_value(&self) -> glib::Value {
4730        let mut value = glib::Value::for_value_type::<Self>();
4731        unsafe {
4732            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4733        }
4734        value
4735    }
4736
4737    #[inline]
4738    fn value_type(&self) -> glib::Type {
4739        Self::static_type()
4740    }
4741}
4742
4743impl From<TlsError> for glib::Value {
4744    #[inline]
4745    fn from(v: TlsError) -> Self {
4746        ToValue::to_value(&v)
4747    }
4748}
4749
4750/// #GTlsInteractionResult is returned by various functions in #GTlsInteraction
4751/// when finishing an interaction request.
4752#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4753#[non_exhaustive]
4754#[doc(alias = "GTlsInteractionResult")]
4755pub enum TlsInteractionResult {
4756    /// The interaction was unhandled (i.e. not
4757    ///     implemented).
4758    #[doc(alias = "G_TLS_INTERACTION_UNHANDLED")]
4759    Unhandled,
4760    /// The interaction completed, and resulting data
4761    ///     is available.
4762    #[doc(alias = "G_TLS_INTERACTION_HANDLED")]
4763    Handled,
4764    /// The interaction has failed, or was cancelled.
4765    ///     and the operation should be aborted.
4766    #[doc(alias = "G_TLS_INTERACTION_FAILED")]
4767    Failed,
4768    #[doc(hidden)]
4769    __Unknown(i32),
4770}
4771
4772#[doc(hidden)]
4773impl IntoGlib for TlsInteractionResult {
4774    type GlibType = ffi::GTlsInteractionResult;
4775
4776    #[inline]
4777    fn into_glib(self) -> ffi::GTlsInteractionResult {
4778        match self {
4779            Self::Unhandled => ffi::G_TLS_INTERACTION_UNHANDLED,
4780            Self::Handled => ffi::G_TLS_INTERACTION_HANDLED,
4781            Self::Failed => ffi::G_TLS_INTERACTION_FAILED,
4782            Self::__Unknown(value) => value,
4783        }
4784    }
4785}
4786
4787#[doc(hidden)]
4788impl FromGlib<ffi::GTlsInteractionResult> for TlsInteractionResult {
4789    #[inline]
4790    unsafe fn from_glib(value: ffi::GTlsInteractionResult) -> Self {
4791        match value {
4792            ffi::G_TLS_INTERACTION_UNHANDLED => Self::Unhandled,
4793            ffi::G_TLS_INTERACTION_HANDLED => Self::Handled,
4794            ffi::G_TLS_INTERACTION_FAILED => Self::Failed,
4795            value => Self::__Unknown(value),
4796        }
4797    }
4798}
4799
4800impl StaticType for TlsInteractionResult {
4801    #[inline]
4802    #[doc(alias = "g_tls_interaction_result_get_type")]
4803    fn static_type() -> glib::Type {
4804        unsafe { from_glib(ffi::g_tls_interaction_result_get_type()) }
4805    }
4806}
4807
4808impl glib::HasParamSpec for TlsInteractionResult {
4809    type ParamSpec = glib::ParamSpecEnum;
4810    type SetValue = Self;
4811    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4812
4813    fn param_spec_builder() -> Self::BuilderFn {
4814        Self::ParamSpec::builder_with_default
4815    }
4816}
4817
4818impl glib::value::ValueType for TlsInteractionResult {
4819    type Type = Self;
4820}
4821
4822unsafe impl<'a> glib::value::FromValue<'a> for TlsInteractionResult {
4823    type Checker = glib::value::GenericValueTypeChecker<Self>;
4824
4825    #[inline]
4826    unsafe fn from_value(value: &'a glib::Value) -> Self {
4827        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4828    }
4829}
4830
4831impl ToValue for TlsInteractionResult {
4832    #[inline]
4833    fn to_value(&self) -> glib::Value {
4834        let mut value = glib::Value::for_value_type::<Self>();
4835        unsafe {
4836            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4837        }
4838        value
4839    }
4840
4841    #[inline]
4842    fn value_type(&self) -> glib::Type {
4843        Self::static_type()
4844    }
4845}
4846
4847impl From<TlsInteractionResult> for glib::Value {
4848    #[inline]
4849    fn from(v: TlsInteractionResult) -> Self {
4850        ToValue::to_value(&v)
4851    }
4852}
4853
4854/// The TLS or DTLS protocol version used by a #GTlsConnection or
4855/// #GDtlsConnection. The integer values of these versions are sequential
4856/// to ensure newer known protocol versions compare greater than older
4857/// known versions. Any known DTLS protocol version will compare greater
4858/// than any SSL or TLS protocol version. The protocol version may be
4859/// [`Unknown`][Self::Unknown] if the TLS backend supports a newer
4860/// protocol version that GLib does not yet know about. This means that
4861/// it's possible for an unknown DTLS protocol version to compare less
4862/// than the TLS protocol versions.
4863#[cfg(feature = "v2_70")]
4864#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4865#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4866#[non_exhaustive]
4867#[doc(alias = "GTlsProtocolVersion")]
4868pub enum TlsProtocolVersion {
4869    /// No protocol version or unknown protocol version
4870    #[doc(alias = "G_TLS_PROTOCOL_VERSION_UNKNOWN")]
4871    Unknown,
4872    /// SSL 3.0, which is insecure and should not be used
4873    #[doc(alias = "G_TLS_PROTOCOL_VERSION_SSL_3_0")]
4874    Ssl30,
4875    /// TLS 1.0, which is insecure and should not be used
4876    #[doc(alias = "G_TLS_PROTOCOL_VERSION_TLS_1_0")]
4877    Tls10,
4878    /// TLS 1.1, which is insecure and should not be used
4879    #[doc(alias = "G_TLS_PROTOCOL_VERSION_TLS_1_1")]
4880    Tls11,
4881    /// TLS 1.2, defined by [RFC 5246](https://datatracker.ietf.org/doc/html/rfc5246)
4882    #[doc(alias = "G_TLS_PROTOCOL_VERSION_TLS_1_2")]
4883    Tls12,
4884    /// TLS 1.3, defined by [RFC 8446](https://datatracker.ietf.org/doc/html/rfc8446)
4885    #[doc(alias = "G_TLS_PROTOCOL_VERSION_TLS_1_3")]
4886    Tls13,
4887    /// DTLS 1.0, which is insecure and should not be used
4888    #[doc(alias = "G_TLS_PROTOCOL_VERSION_DTLS_1_0")]
4889    Dtls10,
4890    /// DTLS 1.2, defined by [RFC 6347](https://datatracker.ietf.org/doc/html/rfc6347)
4891    #[doc(alias = "G_TLS_PROTOCOL_VERSION_DTLS_1_2")]
4892    Dtls12,
4893    #[doc(hidden)]
4894    __Unknown(i32),
4895}
4896
4897#[cfg(feature = "v2_70")]
4898#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4899#[doc(hidden)]
4900impl IntoGlib for TlsProtocolVersion {
4901    type GlibType = ffi::GTlsProtocolVersion;
4902
4903    #[inline]
4904    fn into_glib(self) -> ffi::GTlsProtocolVersion {
4905        match self {
4906            Self::Unknown => ffi::G_TLS_PROTOCOL_VERSION_UNKNOWN,
4907            Self::Ssl30 => ffi::G_TLS_PROTOCOL_VERSION_SSL_3_0,
4908            Self::Tls10 => ffi::G_TLS_PROTOCOL_VERSION_TLS_1_0,
4909            Self::Tls11 => ffi::G_TLS_PROTOCOL_VERSION_TLS_1_1,
4910            Self::Tls12 => ffi::G_TLS_PROTOCOL_VERSION_TLS_1_2,
4911            Self::Tls13 => ffi::G_TLS_PROTOCOL_VERSION_TLS_1_3,
4912            Self::Dtls10 => ffi::G_TLS_PROTOCOL_VERSION_DTLS_1_0,
4913            Self::Dtls12 => ffi::G_TLS_PROTOCOL_VERSION_DTLS_1_2,
4914            Self::__Unknown(value) => value,
4915        }
4916    }
4917}
4918
4919#[cfg(feature = "v2_70")]
4920#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4921#[doc(hidden)]
4922impl FromGlib<ffi::GTlsProtocolVersion> for TlsProtocolVersion {
4923    #[inline]
4924    unsafe fn from_glib(value: ffi::GTlsProtocolVersion) -> Self {
4925        match value {
4926            ffi::G_TLS_PROTOCOL_VERSION_UNKNOWN => Self::Unknown,
4927            ffi::G_TLS_PROTOCOL_VERSION_SSL_3_0 => Self::Ssl30,
4928            ffi::G_TLS_PROTOCOL_VERSION_TLS_1_0 => Self::Tls10,
4929            ffi::G_TLS_PROTOCOL_VERSION_TLS_1_1 => Self::Tls11,
4930            ffi::G_TLS_PROTOCOL_VERSION_TLS_1_2 => Self::Tls12,
4931            ffi::G_TLS_PROTOCOL_VERSION_TLS_1_3 => Self::Tls13,
4932            ffi::G_TLS_PROTOCOL_VERSION_DTLS_1_0 => Self::Dtls10,
4933            ffi::G_TLS_PROTOCOL_VERSION_DTLS_1_2 => Self::Dtls12,
4934            value => Self::__Unknown(value),
4935        }
4936    }
4937}
4938
4939#[cfg(feature = "v2_70")]
4940#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4941impl StaticType for TlsProtocolVersion {
4942    #[inline]
4943    #[doc(alias = "g_tls_protocol_version_get_type")]
4944    fn static_type() -> glib::Type {
4945        unsafe { from_glib(ffi::g_tls_protocol_version_get_type()) }
4946    }
4947}
4948
4949#[cfg(feature = "v2_70")]
4950#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4951impl glib::HasParamSpec for TlsProtocolVersion {
4952    type ParamSpec = glib::ParamSpecEnum;
4953    type SetValue = Self;
4954    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4955
4956    fn param_spec_builder() -> Self::BuilderFn {
4957        Self::ParamSpec::builder_with_default
4958    }
4959}
4960
4961#[cfg(feature = "v2_70")]
4962#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4963impl glib::value::ValueType for TlsProtocolVersion {
4964    type Type = Self;
4965}
4966
4967#[cfg(feature = "v2_70")]
4968#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4969unsafe impl<'a> glib::value::FromValue<'a> for TlsProtocolVersion {
4970    type Checker = glib::value::GenericValueTypeChecker<Self>;
4971
4972    #[inline]
4973    unsafe fn from_value(value: &'a glib::Value) -> Self {
4974        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4975    }
4976}
4977
4978#[cfg(feature = "v2_70")]
4979#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4980impl ToValue for TlsProtocolVersion {
4981    #[inline]
4982    fn to_value(&self) -> glib::Value {
4983        let mut value = glib::Value::for_value_type::<Self>();
4984        unsafe {
4985            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4986        }
4987        value
4988    }
4989
4990    #[inline]
4991    fn value_type(&self) -> glib::Type {
4992        Self::static_type()
4993    }
4994}
4995
4996#[cfg(feature = "v2_70")]
4997#[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4998impl From<TlsProtocolVersion> for glib::Value {
4999    #[inline]
5000    fn from(v: TlsProtocolVersion) -> Self {
5001        ToValue::to_value(&v)
5002    }
5003}
5004
5005/// When to allow rehandshaking. See
5006/// g_tls_connection_set_rehandshake_mode().
5007///
5008/// # Deprecated since 2.60
5009///
5010/// Changing the rehandshake mode is no longer
5011///   required for compatibility. Also, rehandshaking has been removed
5012///   from the TLS protocol in TLS 1.3.
5013#[cfg_attr(feature = "v2_60", deprecated = "Since 2.60")]
5014#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5015#[non_exhaustive]
5016#[doc(alias = "GTlsRehandshakeMode")]
5017pub enum TlsRehandshakeMode {
5018    /// Never allow rehandshaking
5019    #[doc(alias = "G_TLS_REHANDSHAKE_NEVER")]
5020    Never,
5021    /// Allow safe rehandshaking only
5022    #[doc(alias = "G_TLS_REHANDSHAKE_SAFELY")]
5023    Safely,
5024    /// Allow unsafe rehandshaking
5025    #[doc(alias = "G_TLS_REHANDSHAKE_UNSAFELY")]
5026    Unsafely,
5027    #[doc(hidden)]
5028    __Unknown(i32),
5029}
5030
5031#[allow(deprecated)]
5032#[doc(hidden)]
5033impl IntoGlib for TlsRehandshakeMode {
5034    type GlibType = ffi::GTlsRehandshakeMode;
5035
5036    #[inline]
5037    fn into_glib(self) -> ffi::GTlsRehandshakeMode {
5038        match self {
5039            Self::Never => ffi::G_TLS_REHANDSHAKE_NEVER,
5040            Self::Safely => ffi::G_TLS_REHANDSHAKE_SAFELY,
5041            Self::Unsafely => ffi::G_TLS_REHANDSHAKE_UNSAFELY,
5042            Self::__Unknown(value) => value,
5043        }
5044    }
5045}
5046
5047#[allow(deprecated)]
5048#[doc(hidden)]
5049impl FromGlib<ffi::GTlsRehandshakeMode> for TlsRehandshakeMode {
5050    #[inline]
5051    unsafe fn from_glib(value: ffi::GTlsRehandshakeMode) -> Self {
5052        match value {
5053            ffi::G_TLS_REHANDSHAKE_NEVER => Self::Never,
5054            ffi::G_TLS_REHANDSHAKE_SAFELY => Self::Safely,
5055            ffi::G_TLS_REHANDSHAKE_UNSAFELY => Self::Unsafely,
5056            value => Self::__Unknown(value),
5057        }
5058    }
5059}
5060
5061#[allow(deprecated)]
5062impl StaticType for TlsRehandshakeMode {
5063    #[inline]
5064    #[doc(alias = "g_tls_rehandshake_mode_get_type")]
5065    fn static_type() -> glib::Type {
5066        unsafe { from_glib(ffi::g_tls_rehandshake_mode_get_type()) }
5067    }
5068}
5069
5070#[allow(deprecated)]
5071impl glib::HasParamSpec for TlsRehandshakeMode {
5072    type ParamSpec = glib::ParamSpecEnum;
5073    type SetValue = Self;
5074    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5075
5076    fn param_spec_builder() -> Self::BuilderFn {
5077        Self::ParamSpec::builder_with_default
5078    }
5079}
5080
5081#[allow(deprecated)]
5082impl glib::value::ValueType for TlsRehandshakeMode {
5083    type Type = Self;
5084}
5085
5086#[allow(deprecated)]
5087unsafe impl<'a> glib::value::FromValue<'a> for TlsRehandshakeMode {
5088    type Checker = glib::value::GenericValueTypeChecker<Self>;
5089
5090    #[inline]
5091    unsafe fn from_value(value: &'a glib::Value) -> Self {
5092        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5093    }
5094}
5095
5096#[allow(deprecated)]
5097impl ToValue for TlsRehandshakeMode {
5098    #[inline]
5099    fn to_value(&self) -> glib::Value {
5100        let mut value = glib::Value::for_value_type::<Self>();
5101        unsafe {
5102            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5103        }
5104        value
5105    }
5106
5107    #[inline]
5108    fn value_type(&self) -> glib::Type {
5109        Self::static_type()
5110    }
5111}
5112
5113#[allow(deprecated)]
5114impl From<TlsRehandshakeMode> for glib::Value {
5115    #[inline]
5116    fn from(v: TlsRehandshakeMode) -> Self {
5117        ToValue::to_value(&v)
5118    }
5119}
5120
5121/// The type of name used by a #GUnixSocketAddress.
5122/// [`Path`][Self::Path] indicates a traditional unix domain
5123/// socket bound to a filesystem path. [`Anonymous`][Self::Anonymous]
5124/// indicates a socket not bound to any name (eg, a client-side socket,
5125/// or a socket created with socketpair()).
5126///
5127/// For abstract sockets, there are two incompatible ways of naming
5128/// them; the man pages suggest using the entire `struct sockaddr_un`
5129/// as the name, padding the unused parts of the `sun_path` field with
5130/// zeroes; this corresponds to [`AbstractPadded`][Self::AbstractPadded].
5131/// However, many programs instead just use a portion of `sun_path`, and
5132/// pass an appropriate smaller length to bind() or connect(). This is
5133/// [`Abstract`][Self::Abstract].
5134#[cfg(unix)]
5135#[cfg_attr(docsrs, doc(cfg(unix)))]
5136#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5137#[non_exhaustive]
5138#[doc(alias = "GUnixSocketAddressType")]
5139pub enum UnixSocketAddressType {
5140    /// invalid
5141    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_INVALID")]
5142    Invalid,
5143    /// anonymous
5144    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_ANONYMOUS")]
5145    Anonymous,
5146    /// a filesystem path
5147    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_PATH")]
5148    Path,
5149    /// an abstract name
5150    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_ABSTRACT")]
5151    Abstract,
5152    /// an abstract name, 0-padded
5153    ///   to the full length of a unix socket name
5154    #[doc(alias = "G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED")]
5155    AbstractPadded,
5156    #[doc(hidden)]
5157    __Unknown(i32),
5158}
5159
5160#[cfg(unix)]
5161#[doc(hidden)]
5162impl IntoGlib for UnixSocketAddressType {
5163    type GlibType = ffi::GUnixSocketAddressType;
5164
5165    #[inline]
5166    fn into_glib(self) -> ffi::GUnixSocketAddressType {
5167        match self {
5168            Self::Invalid => ffi::G_UNIX_SOCKET_ADDRESS_INVALID,
5169            Self::Anonymous => ffi::G_UNIX_SOCKET_ADDRESS_ANONYMOUS,
5170            Self::Path => ffi::G_UNIX_SOCKET_ADDRESS_PATH,
5171            Self::Abstract => ffi::G_UNIX_SOCKET_ADDRESS_ABSTRACT,
5172            Self::AbstractPadded => ffi::G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED,
5173            Self::__Unknown(value) => value,
5174        }
5175    }
5176}
5177
5178#[cfg(unix)]
5179#[doc(hidden)]
5180impl FromGlib<ffi::GUnixSocketAddressType> for UnixSocketAddressType {
5181    #[inline]
5182    unsafe fn from_glib(value: ffi::GUnixSocketAddressType) -> Self {
5183        match value {
5184            ffi::G_UNIX_SOCKET_ADDRESS_INVALID => Self::Invalid,
5185            ffi::G_UNIX_SOCKET_ADDRESS_ANONYMOUS => Self::Anonymous,
5186            ffi::G_UNIX_SOCKET_ADDRESS_PATH => Self::Path,
5187            ffi::G_UNIX_SOCKET_ADDRESS_ABSTRACT => Self::Abstract,
5188            ffi::G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED => Self::AbstractPadded,
5189            value => Self::__Unknown(value),
5190        }
5191    }
5192}
5193
5194#[cfg(unix)]
5195impl StaticType for UnixSocketAddressType {
5196    #[inline]
5197    #[doc(alias = "g_unix_socket_address_type_get_type")]
5198    fn static_type() -> glib::Type {
5199        unsafe { from_glib(ffi::g_unix_socket_address_type_get_type()) }
5200    }
5201}
5202
5203#[cfg(unix)]
5204impl glib::HasParamSpec for UnixSocketAddressType {
5205    type ParamSpec = glib::ParamSpecEnum;
5206    type SetValue = Self;
5207    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5208
5209    fn param_spec_builder() -> Self::BuilderFn {
5210        Self::ParamSpec::builder_with_default
5211    }
5212}
5213
5214#[cfg(unix)]
5215impl glib::value::ValueType for UnixSocketAddressType {
5216    type Type = Self;
5217}
5218
5219#[cfg(unix)]
5220unsafe impl<'a> glib::value::FromValue<'a> for UnixSocketAddressType {
5221    type Checker = glib::value::GenericValueTypeChecker<Self>;
5222
5223    #[inline]
5224    unsafe fn from_value(value: &'a glib::Value) -> Self {
5225        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5226    }
5227}
5228
5229#[cfg(unix)]
5230impl ToValue for UnixSocketAddressType {
5231    #[inline]
5232    fn to_value(&self) -> glib::Value {
5233        let mut value = glib::Value::for_value_type::<Self>();
5234        unsafe {
5235            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5236        }
5237        value
5238    }
5239
5240    #[inline]
5241    fn value_type(&self) -> glib::Type {
5242        Self::static_type()
5243    }
5244}
5245
5246#[cfg(unix)]
5247impl From<UnixSocketAddressType> for glib::Value {
5248    #[inline]
5249    fn from(v: UnixSocketAddressType) -> Self {
5250        ToValue::to_value(&v)
5251    }
5252}
5253
5254/// Used to select the type of data format to use for #GZlibDecompressor
5255/// and #GZlibCompressor.
5256#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5257#[non_exhaustive]
5258#[doc(alias = "GZlibCompressorFormat")]
5259pub enum ZlibCompressorFormat {
5260    /// deflate compression with zlib header
5261    #[doc(alias = "G_ZLIB_COMPRESSOR_FORMAT_ZLIB")]
5262    Zlib,
5263    /// gzip file format
5264    #[doc(alias = "G_ZLIB_COMPRESSOR_FORMAT_GZIP")]
5265    Gzip,
5266    /// deflate compression with no header
5267    #[doc(alias = "G_ZLIB_COMPRESSOR_FORMAT_RAW")]
5268    Raw,
5269    #[doc(hidden)]
5270    __Unknown(i32),
5271}
5272
5273#[doc(hidden)]
5274impl IntoGlib for ZlibCompressorFormat {
5275    type GlibType = ffi::GZlibCompressorFormat;
5276
5277    #[inline]
5278    fn into_glib(self) -> ffi::GZlibCompressorFormat {
5279        match self {
5280            Self::Zlib => ffi::G_ZLIB_COMPRESSOR_FORMAT_ZLIB,
5281            Self::Gzip => ffi::G_ZLIB_COMPRESSOR_FORMAT_GZIP,
5282            Self::Raw => ffi::G_ZLIB_COMPRESSOR_FORMAT_RAW,
5283            Self::__Unknown(value) => value,
5284        }
5285    }
5286}
5287
5288#[doc(hidden)]
5289impl FromGlib<ffi::GZlibCompressorFormat> for ZlibCompressorFormat {
5290    #[inline]
5291    unsafe fn from_glib(value: ffi::GZlibCompressorFormat) -> Self {
5292        match value {
5293            ffi::G_ZLIB_COMPRESSOR_FORMAT_ZLIB => Self::Zlib,
5294            ffi::G_ZLIB_COMPRESSOR_FORMAT_GZIP => Self::Gzip,
5295            ffi::G_ZLIB_COMPRESSOR_FORMAT_RAW => Self::Raw,
5296            value => Self::__Unknown(value),
5297        }
5298    }
5299}
5300
5301impl StaticType for ZlibCompressorFormat {
5302    #[inline]
5303    #[doc(alias = "g_zlib_compressor_format_get_type")]
5304    fn static_type() -> glib::Type {
5305        unsafe { from_glib(ffi::g_zlib_compressor_format_get_type()) }
5306    }
5307}
5308
5309impl glib::HasParamSpec for ZlibCompressorFormat {
5310    type ParamSpec = glib::ParamSpecEnum;
5311    type SetValue = Self;
5312    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5313
5314    fn param_spec_builder() -> Self::BuilderFn {
5315        Self::ParamSpec::builder_with_default
5316    }
5317}
5318
5319impl glib::value::ValueType for ZlibCompressorFormat {
5320    type Type = Self;
5321}
5322
5323unsafe impl<'a> glib::value::FromValue<'a> for ZlibCompressorFormat {
5324    type Checker = glib::value::GenericValueTypeChecker<Self>;
5325
5326    #[inline]
5327    unsafe fn from_value(value: &'a glib::Value) -> Self {
5328        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5329    }
5330}
5331
5332impl ToValue for ZlibCompressorFormat {
5333    #[inline]
5334    fn to_value(&self) -> glib::Value {
5335        let mut value = glib::Value::for_value_type::<Self>();
5336        unsafe {
5337            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5338        }
5339        value
5340    }
5341
5342    #[inline]
5343    fn value_type(&self) -> glib::Type {
5344        Self::static_type()
5345    }
5346}
5347
5348impl From<ZlibCompressorFormat> for glib::Value {
5349    #[inline]
5350    fn from(v: ZlibCompressorFormat) -> Self {
5351        ToValue::to_value(&v)
5352    }
5353}