glib/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, prelude::*, translate::*};
6
7/// The hashing algorithm to be used by #GChecksum when performing the
8/// digest of some data.
9///
10/// Note that the #GChecksumType enumeration may be extended at a later
11/// date to include new hashing algorithm types.
12// rustdoc-stripper-ignore-next-stop
13/// The hashing algorithm to be used by #GChecksum when performing the
14/// digest of some data.
15///
16/// Note that the #GChecksumType enumeration may be extended at a later
17/// date to include new hashing algorithm types.
18#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
19#[non_exhaustive]
20#[doc(alias = "GChecksumType")]
21pub enum ChecksumType {
22    /// Use the MD5 hashing algorithm
23    // rustdoc-stripper-ignore-next-stop
24    /// Use the MD5 hashing algorithm
25    #[doc(alias = "G_CHECKSUM_MD5")]
26    Md5,
27    /// Use the SHA-1 hashing algorithm
28    // rustdoc-stripper-ignore-next-stop
29    /// Use the SHA-1 hashing algorithm
30    #[doc(alias = "G_CHECKSUM_SHA1")]
31    Sha1,
32    /// Use the SHA-256 hashing algorithm
33    // rustdoc-stripper-ignore-next-stop
34    /// Use the SHA-256 hashing algorithm
35    #[doc(alias = "G_CHECKSUM_SHA256")]
36    Sha256,
37    /// Use the SHA-512 hashing algorithm (Since: 2.36)
38    // rustdoc-stripper-ignore-next-stop
39    /// Use the SHA-512 hashing algorithm (Since: 2.36)
40    #[doc(alias = "G_CHECKSUM_SHA512")]
41    Sha512,
42    /// Use the SHA-384 hashing algorithm (Since: 2.51)
43    // rustdoc-stripper-ignore-next-stop
44    /// Use the SHA-384 hashing algorithm (Since: 2.51)
45    #[doc(alias = "G_CHECKSUM_SHA384")]
46    Sha384,
47    #[doc(hidden)]
48    __Unknown(i32),
49}
50
51#[doc(hidden)]
52impl IntoGlib for ChecksumType {
53    type GlibType = ffi::GChecksumType;
54
55    #[inline]
56    fn into_glib(self) -> ffi::GChecksumType {
57        match self {
58            Self::Md5 => ffi::G_CHECKSUM_MD5,
59            Self::Sha1 => ffi::G_CHECKSUM_SHA1,
60            Self::Sha256 => ffi::G_CHECKSUM_SHA256,
61            Self::Sha512 => ffi::G_CHECKSUM_SHA512,
62            Self::Sha384 => ffi::G_CHECKSUM_SHA384,
63            Self::__Unknown(value) => value,
64        }
65    }
66}
67
68#[doc(hidden)]
69impl FromGlib<ffi::GChecksumType> for ChecksumType {
70    #[inline]
71    unsafe fn from_glib(value: ffi::GChecksumType) -> Self {
72        match value {
73            ffi::G_CHECKSUM_MD5 => Self::Md5,
74            ffi::G_CHECKSUM_SHA1 => Self::Sha1,
75            ffi::G_CHECKSUM_SHA256 => Self::Sha256,
76            ffi::G_CHECKSUM_SHA512 => Self::Sha512,
77            ffi::G_CHECKSUM_SHA384 => Self::Sha384,
78            value => Self::__Unknown(value),
79        }
80    }
81}
82
83/// Error codes returned by character set conversion routines.
84// rustdoc-stripper-ignore-next-stop
85/// Error codes returned by character set conversion routines.
86#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
87#[non_exhaustive]
88#[doc(alias = "GConvertError")]
89pub enum ConvertError {
90    /// Conversion between the requested character
91    ///     sets is not supported.
92    // rustdoc-stripper-ignore-next-stop
93    /// Conversion between the requested character
94    ///     sets is not supported.
95    #[doc(alias = "G_CONVERT_ERROR_NO_CONVERSION")]
96    NoConversion,
97    /// Invalid byte sequence in conversion input;
98    ///    or the character sequence could not be represented in the target
99    ///    character set.
100    // rustdoc-stripper-ignore-next-stop
101    /// Invalid byte sequence in conversion input;
102    ///    or the character sequence could not be represented in the target
103    ///    character set.
104    #[doc(alias = "G_CONVERT_ERROR_ILLEGAL_SEQUENCE")]
105    IllegalSequence,
106    /// Conversion failed for some reason.
107    // rustdoc-stripper-ignore-next-stop
108    /// Conversion failed for some reason.
109    #[doc(alias = "G_CONVERT_ERROR_FAILED")]
110    Failed,
111    /// Partial character sequence at end of input.
112    // rustdoc-stripper-ignore-next-stop
113    /// Partial character sequence at end of input.
114    #[doc(alias = "G_CONVERT_ERROR_PARTIAL_INPUT")]
115    PartialInput,
116    /// URI is invalid.
117    // rustdoc-stripper-ignore-next-stop
118    /// URI is invalid.
119    #[doc(alias = "G_CONVERT_ERROR_BAD_URI")]
120    BadUri,
121    /// Pathname is not an absolute path.
122    // rustdoc-stripper-ignore-next-stop
123    /// Pathname is not an absolute path.
124    #[doc(alias = "G_CONVERT_ERROR_NOT_ABSOLUTE_PATH")]
125    NotAbsolutePath,
126    /// No memory available. Since: 2.40
127    // rustdoc-stripper-ignore-next-stop
128    /// No memory available. Since: 2.40
129    #[doc(alias = "G_CONVERT_ERROR_NO_MEMORY")]
130    NoMemory,
131    /// An embedded NUL character is present in
132    ///     conversion output where a NUL-terminated string is expected.
133    ///     Since: 2.56
134    // rustdoc-stripper-ignore-next-stop
135    /// An embedded NUL character is present in
136    ///     conversion output where a NUL-terminated string is expected.
137    ///     Since: 2.56
138    #[doc(alias = "G_CONVERT_ERROR_EMBEDDED_NUL")]
139    EmbeddedNul,
140    #[doc(hidden)]
141    __Unknown(i32),
142}
143
144#[doc(hidden)]
145impl IntoGlib for ConvertError {
146    type GlibType = ffi::GConvertError;
147
148    #[inline]
149    fn into_glib(self) -> ffi::GConvertError {
150        match self {
151            Self::NoConversion => ffi::G_CONVERT_ERROR_NO_CONVERSION,
152            Self::IllegalSequence => ffi::G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
153            Self::Failed => ffi::G_CONVERT_ERROR_FAILED,
154            Self::PartialInput => ffi::G_CONVERT_ERROR_PARTIAL_INPUT,
155            Self::BadUri => ffi::G_CONVERT_ERROR_BAD_URI,
156            Self::NotAbsolutePath => ffi::G_CONVERT_ERROR_NOT_ABSOLUTE_PATH,
157            Self::NoMemory => ffi::G_CONVERT_ERROR_NO_MEMORY,
158            Self::EmbeddedNul => ffi::G_CONVERT_ERROR_EMBEDDED_NUL,
159            Self::__Unknown(value) => value,
160        }
161    }
162}
163
164#[doc(hidden)]
165impl FromGlib<ffi::GConvertError> for ConvertError {
166    #[inline]
167    unsafe fn from_glib(value: ffi::GConvertError) -> Self {
168        match value {
169            ffi::G_CONVERT_ERROR_NO_CONVERSION => Self::NoConversion,
170            ffi::G_CONVERT_ERROR_ILLEGAL_SEQUENCE => Self::IllegalSequence,
171            ffi::G_CONVERT_ERROR_FAILED => Self::Failed,
172            ffi::G_CONVERT_ERROR_PARTIAL_INPUT => Self::PartialInput,
173            ffi::G_CONVERT_ERROR_BAD_URI => Self::BadUri,
174            ffi::G_CONVERT_ERROR_NOT_ABSOLUTE_PATH => Self::NotAbsolutePath,
175            ffi::G_CONVERT_ERROR_NO_MEMORY => Self::NoMemory,
176            ffi::G_CONVERT_ERROR_EMBEDDED_NUL => Self::EmbeddedNul,
177            value => Self::__Unknown(value),
178        }
179    }
180}
181
182impl crate::error::ErrorDomain for ConvertError {
183    #[inline]
184    fn domain() -> crate::Quark {
185        unsafe { from_glib(ffi::g_convert_error_quark()) }
186    }
187
188    #[inline]
189    fn code(self) -> i32 {
190        self.into_glib()
191    }
192
193    #[inline]
194    #[allow(clippy::match_single_binding)]
195    fn from(code: i32) -> Option<Self> {
196        match unsafe { from_glib(code) } {
197            Self::__Unknown(_) => Some(Self::Failed),
198            value => Some(value),
199        }
200    }
201}
202
203/// Enumeration representing a month; values are [`January`][Self::January],
204/// [`February`][Self::February], etc. [`BadMonth`][Self::BadMonth] is the invalid value.
205// rustdoc-stripper-ignore-next-stop
206/// Enumeration representing a month; values are [`January`][Self::January],
207/// [`February`][Self::February], etc. [`BadMonth`][Self::BadMonth] is the invalid value.
208#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
209#[non_exhaustive]
210#[doc(alias = "GDateMonth")]
211pub enum DateMonth {
212    /// invalid value
213    // rustdoc-stripper-ignore-next-stop
214    /// invalid value
215    #[doc(alias = "G_DATE_BAD_MONTH")]
216    BadMonth,
217    /// January
218    // rustdoc-stripper-ignore-next-stop
219    /// January
220    #[doc(alias = "G_DATE_JANUARY")]
221    January,
222    /// February
223    // rustdoc-stripper-ignore-next-stop
224    /// February
225    #[doc(alias = "G_DATE_FEBRUARY")]
226    February,
227    /// March
228    // rustdoc-stripper-ignore-next-stop
229    /// March
230    #[doc(alias = "G_DATE_MARCH")]
231    March,
232    /// April
233    // rustdoc-stripper-ignore-next-stop
234    /// April
235    #[doc(alias = "G_DATE_APRIL")]
236    April,
237    /// May
238    // rustdoc-stripper-ignore-next-stop
239    /// May
240    #[doc(alias = "G_DATE_MAY")]
241    May,
242    /// June
243    // rustdoc-stripper-ignore-next-stop
244    /// June
245    #[doc(alias = "G_DATE_JUNE")]
246    June,
247    /// July
248    // rustdoc-stripper-ignore-next-stop
249    /// July
250    #[doc(alias = "G_DATE_JULY")]
251    July,
252    /// August
253    // rustdoc-stripper-ignore-next-stop
254    /// August
255    #[doc(alias = "G_DATE_AUGUST")]
256    August,
257    /// September
258    // rustdoc-stripper-ignore-next-stop
259    /// September
260    #[doc(alias = "G_DATE_SEPTEMBER")]
261    September,
262    /// October
263    // rustdoc-stripper-ignore-next-stop
264    /// October
265    #[doc(alias = "G_DATE_OCTOBER")]
266    October,
267    /// November
268    // rustdoc-stripper-ignore-next-stop
269    /// November
270    #[doc(alias = "G_DATE_NOVEMBER")]
271    November,
272    /// December
273    // rustdoc-stripper-ignore-next-stop
274    /// December
275    #[doc(alias = "G_DATE_DECEMBER")]
276    December,
277    #[doc(hidden)]
278    __Unknown(i32),
279}
280
281#[doc(hidden)]
282impl IntoGlib for DateMonth {
283    type GlibType = ffi::GDateMonth;
284
285    fn into_glib(self) -> ffi::GDateMonth {
286        match self {
287            Self::BadMonth => ffi::G_DATE_BAD_MONTH,
288            Self::January => ffi::G_DATE_JANUARY,
289            Self::February => ffi::G_DATE_FEBRUARY,
290            Self::March => ffi::G_DATE_MARCH,
291            Self::April => ffi::G_DATE_APRIL,
292            Self::May => ffi::G_DATE_MAY,
293            Self::June => ffi::G_DATE_JUNE,
294            Self::July => ffi::G_DATE_JULY,
295            Self::August => ffi::G_DATE_AUGUST,
296            Self::September => ffi::G_DATE_SEPTEMBER,
297            Self::October => ffi::G_DATE_OCTOBER,
298            Self::November => ffi::G_DATE_NOVEMBER,
299            Self::December => ffi::G_DATE_DECEMBER,
300            Self::__Unknown(value) => value,
301        }
302    }
303}
304
305#[doc(hidden)]
306impl FromGlib<ffi::GDateMonth> for DateMonth {
307    unsafe fn from_glib(value: ffi::GDateMonth) -> Self {
308        match value {
309            ffi::G_DATE_BAD_MONTH => Self::BadMonth,
310            ffi::G_DATE_JANUARY => Self::January,
311            ffi::G_DATE_FEBRUARY => Self::February,
312            ffi::G_DATE_MARCH => Self::March,
313            ffi::G_DATE_APRIL => Self::April,
314            ffi::G_DATE_MAY => Self::May,
315            ffi::G_DATE_JUNE => Self::June,
316            ffi::G_DATE_JULY => Self::July,
317            ffi::G_DATE_AUGUST => Self::August,
318            ffi::G_DATE_SEPTEMBER => Self::September,
319            ffi::G_DATE_OCTOBER => Self::October,
320            ffi::G_DATE_NOVEMBER => Self::November,
321            ffi::G_DATE_DECEMBER => Self::December,
322            value => Self::__Unknown(value),
323        }
324    }
325}
326
327/// Enumeration representing a day of the week; [`Monday`][Self::Monday],
328/// [`Tuesday`][Self::Tuesday], etc. [`BadWeekday`][Self::BadWeekday] is an invalid weekday.
329// rustdoc-stripper-ignore-next-stop
330/// Enumeration representing a day of the week; [`Monday`][Self::Monday],
331/// [`Tuesday`][Self::Tuesday], etc. [`BadWeekday`][Self::BadWeekday] is an invalid weekday.
332#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
333#[non_exhaustive]
334#[doc(alias = "GDateWeekday")]
335pub enum DateWeekday {
336    /// invalid value
337    // rustdoc-stripper-ignore-next-stop
338    /// invalid value
339    #[doc(alias = "G_DATE_BAD_WEEKDAY")]
340    BadWeekday,
341    /// Monday
342    // rustdoc-stripper-ignore-next-stop
343    /// Monday
344    #[doc(alias = "G_DATE_MONDAY")]
345    Monday,
346    /// Tuesday
347    // rustdoc-stripper-ignore-next-stop
348    /// Tuesday
349    #[doc(alias = "G_DATE_TUESDAY")]
350    Tuesday,
351    /// Wednesday
352    // rustdoc-stripper-ignore-next-stop
353    /// Wednesday
354    #[doc(alias = "G_DATE_WEDNESDAY")]
355    Wednesday,
356    /// Thursday
357    // rustdoc-stripper-ignore-next-stop
358    /// Thursday
359    #[doc(alias = "G_DATE_THURSDAY")]
360    Thursday,
361    /// Friday
362    // rustdoc-stripper-ignore-next-stop
363    /// Friday
364    #[doc(alias = "G_DATE_FRIDAY")]
365    Friday,
366    /// Saturday
367    // rustdoc-stripper-ignore-next-stop
368    /// Saturday
369    #[doc(alias = "G_DATE_SATURDAY")]
370    Saturday,
371    /// Sunday
372    // rustdoc-stripper-ignore-next-stop
373    /// Sunday
374    #[doc(alias = "G_DATE_SUNDAY")]
375    Sunday,
376    #[doc(hidden)]
377    __Unknown(i32),
378}
379
380#[doc(hidden)]
381impl IntoGlib for DateWeekday {
382    type GlibType = ffi::GDateWeekday;
383
384    #[inline]
385    fn into_glib(self) -> ffi::GDateWeekday {
386        match self {
387            Self::BadWeekday => ffi::G_DATE_BAD_WEEKDAY,
388            Self::Monday => ffi::G_DATE_MONDAY,
389            Self::Tuesday => ffi::G_DATE_TUESDAY,
390            Self::Wednesday => ffi::G_DATE_WEDNESDAY,
391            Self::Thursday => ffi::G_DATE_THURSDAY,
392            Self::Friday => ffi::G_DATE_FRIDAY,
393            Self::Saturday => ffi::G_DATE_SATURDAY,
394            Self::Sunday => ffi::G_DATE_SUNDAY,
395            Self::__Unknown(value) => value,
396        }
397    }
398}
399
400#[doc(hidden)]
401impl FromGlib<ffi::GDateWeekday> for DateWeekday {
402    #[inline]
403    unsafe fn from_glib(value: ffi::GDateWeekday) -> Self {
404        match value {
405            ffi::G_DATE_BAD_WEEKDAY => Self::BadWeekday,
406            ffi::G_DATE_MONDAY => Self::Monday,
407            ffi::G_DATE_TUESDAY => Self::Tuesday,
408            ffi::G_DATE_WEDNESDAY => Self::Wednesday,
409            ffi::G_DATE_THURSDAY => Self::Thursday,
410            ffi::G_DATE_FRIDAY => Self::Friday,
411            ffi::G_DATE_SATURDAY => Self::Saturday,
412            ffi::G_DATE_SUNDAY => Self::Sunday,
413            value => Self::__Unknown(value),
414        }
415    }
416}
417
418/// Values corresponding to @errno codes returned from file operations
419/// on UNIX. Unlike @errno codes, GFileError values are available on
420/// all systems, even Windows. The exact meaning of each code depends
421/// on what sort of file operation you were performing; the UNIX
422/// documentation gives more details. The following error code descriptions
423/// come from the GNU C Library manual, and are under the copyright
424/// of that manual.
425///
426/// It's not very portable to make detailed assumptions about exactly
427/// which errors will be returned from a given operation. Some errors
428/// don't occur on some systems, etc., sometimes there are subtle
429/// differences in when a system will report a given error, etc.
430// rustdoc-stripper-ignore-next-stop
431/// Values corresponding to @errno codes returned from file operations
432/// on UNIX. Unlike @errno codes, GFileError values are available on
433/// all systems, even Windows. The exact meaning of each code depends
434/// on what sort of file operation you were performing; the UNIX
435/// documentation gives more details. The following error code descriptions
436/// come from the GNU C Library manual, and are under the copyright
437/// of that manual.
438///
439/// It's not very portable to make detailed assumptions about exactly
440/// which errors will be returned from a given operation. Some errors
441/// don't occur on some systems, etc., sometimes there are subtle
442/// differences in when a system will report a given error, etc.
443#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
444#[non_exhaustive]
445#[doc(alias = "GFileError")]
446pub enum FileError {
447    /// Operation not permitted; only the owner of
448    ///     the file (or other resource) or processes with special privileges
449    ///     can perform the operation.
450    // rustdoc-stripper-ignore-next-stop
451    /// Operation not permitted; only the owner of
452    ///     the file (or other resource) or processes with special privileges
453    ///     can perform the operation.
454    #[doc(alias = "G_FILE_ERROR_EXIST")]
455    Exist,
456    /// File is a directory; you cannot open a directory
457    ///     for writing, or create or remove hard links to it.
458    // rustdoc-stripper-ignore-next-stop
459    /// File is a directory; you cannot open a directory
460    ///     for writing, or create or remove hard links to it.
461    #[doc(alias = "G_FILE_ERROR_ISDIR")]
462    Isdir,
463    /// Permission denied; the file permissions do not
464    ///     allow the attempted operation.
465    // rustdoc-stripper-ignore-next-stop
466    /// Permission denied; the file permissions do not
467    ///     allow the attempted operation.
468    #[doc(alias = "G_FILE_ERROR_ACCES")]
469    Acces,
470    /// Filename too long.
471    // rustdoc-stripper-ignore-next-stop
472    /// Filename too long.
473    #[doc(alias = "G_FILE_ERROR_NAMETOOLONG")]
474    Nametoolong,
475    /// No such file or directory. This is a "file
476    ///     doesn't exist" error for ordinary files that are referenced in
477    ///     contexts where they are expected to already exist.
478    // rustdoc-stripper-ignore-next-stop
479    /// No such file or directory. This is a "file
480    ///     doesn't exist" error for ordinary files that are referenced in
481    ///     contexts where they are expected to already exist.
482    #[doc(alias = "G_FILE_ERROR_NOENT")]
483    Noent,
484    /// A file that isn't a directory was specified when
485    ///     a directory is required.
486    // rustdoc-stripper-ignore-next-stop
487    /// A file that isn't a directory was specified when
488    ///     a directory is required.
489    #[doc(alias = "G_FILE_ERROR_NOTDIR")]
490    Notdir,
491    /// No such device or address. The system tried to
492    ///     use the device represented by a file you specified, and it
493    ///     couldn't find the device. This can mean that the device file was
494    ///     installed incorrectly, or that the physical device is missing or
495    ///     not correctly attached to the computer.
496    // rustdoc-stripper-ignore-next-stop
497    /// No such device or address. The system tried to
498    ///     use the device represented by a file you specified, and it
499    ///     couldn't find the device. This can mean that the device file was
500    ///     installed incorrectly, or that the physical device is missing or
501    ///     not correctly attached to the computer.
502    #[doc(alias = "G_FILE_ERROR_NXIO")]
503    Nxio,
504    /// The underlying file system of the specified file
505    ///     does not support memory mapping.
506    // rustdoc-stripper-ignore-next-stop
507    /// The underlying file system of the specified file
508    ///     does not support memory mapping.
509    #[doc(alias = "G_FILE_ERROR_NODEV")]
510    Nodev,
511    /// The directory containing the new link can't be
512    ///     modified because it's on a read-only file system.
513    // rustdoc-stripper-ignore-next-stop
514    /// The directory containing the new link can't be
515    ///     modified because it's on a read-only file system.
516    #[doc(alias = "G_FILE_ERROR_ROFS")]
517    Rofs,
518    /// Text file busy.
519    // rustdoc-stripper-ignore-next-stop
520    /// Text file busy.
521    #[doc(alias = "G_FILE_ERROR_TXTBSY")]
522    Txtbsy,
523    /// You passed in a pointer to bad memory.
524    ///     (GLib won't reliably return this, don't pass in pointers to bad
525    ///     memory.)
526    // rustdoc-stripper-ignore-next-stop
527    /// You passed in a pointer to bad memory.
528    ///     (GLib won't reliably return this, don't pass in pointers to bad
529    ///     memory.)
530    #[doc(alias = "G_FILE_ERROR_FAULT")]
531    Fault,
532    /// Too many levels of symbolic links were encountered
533    ///     in looking up a file name. This often indicates a cycle of symbolic
534    ///     links.
535    // rustdoc-stripper-ignore-next-stop
536    /// Too many levels of symbolic links were encountered
537    ///     in looking up a file name. This often indicates a cycle of symbolic
538    ///     links.
539    #[doc(alias = "G_FILE_ERROR_LOOP")]
540    Loop,
541    /// No space left on device; write operation on a
542    ///     file failed because the disk is full.
543    // rustdoc-stripper-ignore-next-stop
544    /// No space left on device; write operation on a
545    ///     file failed because the disk is full.
546    #[doc(alias = "G_FILE_ERROR_NOSPC")]
547    Nospc,
548    /// No memory available. The system cannot allocate
549    ///     more virtual memory because its capacity is full.
550    // rustdoc-stripper-ignore-next-stop
551    /// No memory available. The system cannot allocate
552    ///     more virtual memory because its capacity is full.
553    #[doc(alias = "G_FILE_ERROR_NOMEM")]
554    Nomem,
555    /// The current process has too many files open and
556    ///     can't open any more. Duplicate descriptors do count toward this
557    ///     limit.
558    // rustdoc-stripper-ignore-next-stop
559    /// The current process has too many files open and
560    ///     can't open any more. Duplicate descriptors do count toward this
561    ///     limit.
562    #[doc(alias = "G_FILE_ERROR_MFILE")]
563    Mfile,
564    /// There are too many distinct file openings in the
565    ///     entire system.
566    // rustdoc-stripper-ignore-next-stop
567    /// There are too many distinct file openings in the
568    ///     entire system.
569    #[doc(alias = "G_FILE_ERROR_NFILE")]
570    Nfile,
571    /// Bad file descriptor; for example, I/O on a
572    ///     descriptor that has been closed or reading from a descriptor open
573    ///     only for writing (or vice versa).
574    // rustdoc-stripper-ignore-next-stop
575    /// Bad file descriptor; for example, I/O on a
576    ///     descriptor that has been closed or reading from a descriptor open
577    ///     only for writing (or vice versa).
578    #[doc(alias = "G_FILE_ERROR_BADF")]
579    Badf,
580    /// Invalid argument. This is used to indicate
581    ///     various kinds of problems with passing the wrong argument to a
582    ///     library function.
583    // rustdoc-stripper-ignore-next-stop
584    /// Invalid argument. This is used to indicate
585    ///     various kinds of problems with passing the wrong argument to a
586    ///     library function.
587    #[doc(alias = "G_FILE_ERROR_INVAL")]
588    Inval,
589    /// Broken pipe; there is no process reading from the
590    ///     other end of a pipe. Every library function that returns this
591    ///     error code also generates a 'SIGPIPE' signal; this signal
592    ///     terminates the program if not handled or blocked. Thus, your
593    ///     program will never actually see this code unless it has handled
594    ///     or blocked 'SIGPIPE'.
595    // rustdoc-stripper-ignore-next-stop
596    /// Broken pipe; there is no process reading from the
597    ///     other end of a pipe. Every library function that returns this
598    ///     error code also generates a 'SIGPIPE' signal; this signal
599    ///     terminates the program if not handled or blocked. Thus, your
600    ///     program will never actually see this code unless it has handled
601    ///     or blocked 'SIGPIPE'.
602    #[doc(alias = "G_FILE_ERROR_PIPE")]
603    Pipe,
604    /// Resource temporarily unavailable; the call might
605    ///     work if you try again later.
606    // rustdoc-stripper-ignore-next-stop
607    /// Resource temporarily unavailable; the call might
608    ///     work if you try again later.
609    #[doc(alias = "G_FILE_ERROR_AGAIN")]
610    Again,
611    /// Interrupted function call; an asynchronous signal
612    ///     occurred and prevented completion of the call. When this
613    ///     happens, you should try the call again.
614    // rustdoc-stripper-ignore-next-stop
615    /// Interrupted function call; an asynchronous signal
616    ///     occurred and prevented completion of the call. When this
617    ///     happens, you should try the call again.
618    #[doc(alias = "G_FILE_ERROR_INTR")]
619    Intr,
620    /// Input/output error; usually used for physical read
621    ///    or write errors. i.e. the disk or other physical device hardware
622    ///    is returning errors.
623    // rustdoc-stripper-ignore-next-stop
624    /// Input/output error; usually used for physical read
625    ///    or write errors. i.e. the disk or other physical device hardware
626    ///    is returning errors.
627    #[doc(alias = "G_FILE_ERROR_IO")]
628    Io,
629    /// Operation not permitted; only the owner of the
630    ///    file (or other resource) or processes with special privileges can
631    ///    perform the operation.
632    // rustdoc-stripper-ignore-next-stop
633    /// Operation not permitted; only the owner of the
634    ///    file (or other resource) or processes with special privileges can
635    ///    perform the operation.
636    #[doc(alias = "G_FILE_ERROR_PERM")]
637    Perm,
638    /// Function not implemented; this indicates that
639    ///    the system is missing some functionality.
640    // rustdoc-stripper-ignore-next-stop
641    /// Function not implemented; this indicates that
642    ///    the system is missing some functionality.
643    #[doc(alias = "G_FILE_ERROR_NOSYS")]
644    Nosys,
645    /// Does not correspond to a UNIX error code; this
646    ///    is the standard "failed for unspecified reason" error code present
647    ///    in all #GError error code enumerations. Returned if no specific
648    ///    code applies.
649    // rustdoc-stripper-ignore-next-stop
650    /// Does not correspond to a UNIX error code; this
651    ///    is the standard "failed for unspecified reason" error code present
652    ///    in all #GError error code enumerations. Returned if no specific
653    ///    code applies.
654    #[doc(alias = "G_FILE_ERROR_FAILED")]
655    Failed,
656    #[doc(hidden)]
657    __Unknown(i32),
658}
659
660#[doc(hidden)]
661impl IntoGlib for FileError {
662    type GlibType = ffi::GFileError;
663
664    fn into_glib(self) -> ffi::GFileError {
665        match self {
666            Self::Exist => ffi::G_FILE_ERROR_EXIST,
667            Self::Isdir => ffi::G_FILE_ERROR_ISDIR,
668            Self::Acces => ffi::G_FILE_ERROR_ACCES,
669            Self::Nametoolong => ffi::G_FILE_ERROR_NAMETOOLONG,
670            Self::Noent => ffi::G_FILE_ERROR_NOENT,
671            Self::Notdir => ffi::G_FILE_ERROR_NOTDIR,
672            Self::Nxio => ffi::G_FILE_ERROR_NXIO,
673            Self::Nodev => ffi::G_FILE_ERROR_NODEV,
674            Self::Rofs => ffi::G_FILE_ERROR_ROFS,
675            Self::Txtbsy => ffi::G_FILE_ERROR_TXTBSY,
676            Self::Fault => ffi::G_FILE_ERROR_FAULT,
677            Self::Loop => ffi::G_FILE_ERROR_LOOP,
678            Self::Nospc => ffi::G_FILE_ERROR_NOSPC,
679            Self::Nomem => ffi::G_FILE_ERROR_NOMEM,
680            Self::Mfile => ffi::G_FILE_ERROR_MFILE,
681            Self::Nfile => ffi::G_FILE_ERROR_NFILE,
682            Self::Badf => ffi::G_FILE_ERROR_BADF,
683            Self::Inval => ffi::G_FILE_ERROR_INVAL,
684            Self::Pipe => ffi::G_FILE_ERROR_PIPE,
685            Self::Again => ffi::G_FILE_ERROR_AGAIN,
686            Self::Intr => ffi::G_FILE_ERROR_INTR,
687            Self::Io => ffi::G_FILE_ERROR_IO,
688            Self::Perm => ffi::G_FILE_ERROR_PERM,
689            Self::Nosys => ffi::G_FILE_ERROR_NOSYS,
690            Self::Failed => ffi::G_FILE_ERROR_FAILED,
691            Self::__Unknown(value) => value,
692        }
693    }
694}
695
696#[doc(hidden)]
697impl FromGlib<ffi::GFileError> for FileError {
698    unsafe fn from_glib(value: ffi::GFileError) -> Self {
699        match value {
700            ffi::G_FILE_ERROR_EXIST => Self::Exist,
701            ffi::G_FILE_ERROR_ISDIR => Self::Isdir,
702            ffi::G_FILE_ERROR_ACCES => Self::Acces,
703            ffi::G_FILE_ERROR_NAMETOOLONG => Self::Nametoolong,
704            ffi::G_FILE_ERROR_NOENT => Self::Noent,
705            ffi::G_FILE_ERROR_NOTDIR => Self::Notdir,
706            ffi::G_FILE_ERROR_NXIO => Self::Nxio,
707            ffi::G_FILE_ERROR_NODEV => Self::Nodev,
708            ffi::G_FILE_ERROR_ROFS => Self::Rofs,
709            ffi::G_FILE_ERROR_TXTBSY => Self::Txtbsy,
710            ffi::G_FILE_ERROR_FAULT => Self::Fault,
711            ffi::G_FILE_ERROR_LOOP => Self::Loop,
712            ffi::G_FILE_ERROR_NOSPC => Self::Nospc,
713            ffi::G_FILE_ERROR_NOMEM => Self::Nomem,
714            ffi::G_FILE_ERROR_MFILE => Self::Mfile,
715            ffi::G_FILE_ERROR_NFILE => Self::Nfile,
716            ffi::G_FILE_ERROR_BADF => Self::Badf,
717            ffi::G_FILE_ERROR_INVAL => Self::Inval,
718            ffi::G_FILE_ERROR_PIPE => Self::Pipe,
719            ffi::G_FILE_ERROR_AGAIN => Self::Again,
720            ffi::G_FILE_ERROR_INTR => Self::Intr,
721            ffi::G_FILE_ERROR_IO => Self::Io,
722            ffi::G_FILE_ERROR_PERM => Self::Perm,
723            ffi::G_FILE_ERROR_NOSYS => Self::Nosys,
724            ffi::G_FILE_ERROR_FAILED => Self::Failed,
725            value => Self::__Unknown(value),
726        }
727    }
728}
729
730impl crate::error::ErrorDomain for FileError {
731    #[inline]
732    fn domain() -> crate::Quark {
733        unsafe { from_glib(ffi::g_file_error_quark()) }
734    }
735
736    #[inline]
737    fn code(self) -> i32 {
738        self.into_glib()
739    }
740
741    #[inline]
742    #[allow(clippy::match_single_binding)]
743    fn from(code: i32) -> Option<Self> {
744        match unsafe { from_glib(code) } {
745            Self::__Unknown(_) => Some(Self::Failed),
746            value => Some(value),
747        }
748    }
749}
750
751/// Error codes returned by key file parsing.
752#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
753#[non_exhaustive]
754#[doc(alias = "GKeyFileError")]
755pub enum KeyFileError {
756    /// the text being parsed was in
757    ///   an unknown encoding
758    #[doc(alias = "G_KEY_FILE_ERROR_UNKNOWN_ENCODING")]
759    UnknownEncoding,
760    /// document was ill-formed
761    #[doc(alias = "G_KEY_FILE_ERROR_PARSE")]
762    Parse,
763    /// the file was not found
764    #[doc(alias = "G_KEY_FILE_ERROR_NOT_FOUND")]
765    NotFound,
766    /// a requested key was not found
767    #[doc(alias = "G_KEY_FILE_ERROR_KEY_NOT_FOUND")]
768    KeyNotFound,
769    /// a requested group was not found
770    #[doc(alias = "G_KEY_FILE_ERROR_GROUP_NOT_FOUND")]
771    GroupNotFound,
772    /// a value could not be parsed
773    #[doc(alias = "G_KEY_FILE_ERROR_INVALID_VALUE")]
774    InvalidValue,
775    #[doc(hidden)]
776    __Unknown(i32),
777}
778
779#[doc(hidden)]
780impl IntoGlib for KeyFileError {
781    type GlibType = ffi::GKeyFileError;
782
783    #[inline]
784    fn into_glib(self) -> ffi::GKeyFileError {
785        match self {
786            Self::UnknownEncoding => ffi::G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
787            Self::Parse => ffi::G_KEY_FILE_ERROR_PARSE,
788            Self::NotFound => ffi::G_KEY_FILE_ERROR_NOT_FOUND,
789            Self::KeyNotFound => ffi::G_KEY_FILE_ERROR_KEY_NOT_FOUND,
790            Self::GroupNotFound => ffi::G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
791            Self::InvalidValue => ffi::G_KEY_FILE_ERROR_INVALID_VALUE,
792            Self::__Unknown(value) => value,
793        }
794    }
795}
796
797#[doc(hidden)]
798impl FromGlib<ffi::GKeyFileError> for KeyFileError {
799    #[inline]
800    unsafe fn from_glib(value: ffi::GKeyFileError) -> Self {
801        match value {
802            ffi::G_KEY_FILE_ERROR_UNKNOWN_ENCODING => Self::UnknownEncoding,
803            ffi::G_KEY_FILE_ERROR_PARSE => Self::Parse,
804            ffi::G_KEY_FILE_ERROR_NOT_FOUND => Self::NotFound,
805            ffi::G_KEY_FILE_ERROR_KEY_NOT_FOUND => Self::KeyNotFound,
806            ffi::G_KEY_FILE_ERROR_GROUP_NOT_FOUND => Self::GroupNotFound,
807            ffi::G_KEY_FILE_ERROR_INVALID_VALUE => Self::InvalidValue,
808            value => Self::__Unknown(value),
809        }
810    }
811}
812
813impl crate::error::ErrorDomain for KeyFileError {
814    #[inline]
815    fn domain() -> crate::Quark {
816        unsafe { from_glib(ffi::g_key_file_error_quark()) }
817    }
818
819    #[inline]
820    fn code(self) -> i32 {
821        self.into_glib()
822    }
823
824    #[inline]
825    #[allow(clippy::match_single_binding)]
826    fn from(code: i32) -> Option<Self> {
827        match unsafe { from_glib(code) } {
828            value => Some(value),
829        }
830    }
831}
832
833/// Return values from #GLogWriterFuncs to indicate whether the given log entry
834/// was successfully handled by the writer, or whether there was an error in
835/// handling it (and hence a fallback writer should be used).
836///
837/// If a #GLogWriterFunc ignores a log entry, it should return
838/// [`Handled`][Self::Handled].
839#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
840#[non_exhaustive]
841#[doc(alias = "GLogWriterOutput")]
842pub enum LogWriterOutput {
843    /// Log writer has handled the log entry.
844    #[doc(alias = "G_LOG_WRITER_HANDLED")]
845    Handled,
846    /// Log writer could not handle the log entry.
847    #[doc(alias = "G_LOG_WRITER_UNHANDLED")]
848    Unhandled,
849    #[doc(hidden)]
850    __Unknown(i32),
851}
852
853#[doc(hidden)]
854impl IntoGlib for LogWriterOutput {
855    type GlibType = ffi::GLogWriterOutput;
856
857    #[inline]
858    fn into_glib(self) -> ffi::GLogWriterOutput {
859        match self {
860            Self::Handled => ffi::G_LOG_WRITER_HANDLED,
861            Self::Unhandled => ffi::G_LOG_WRITER_UNHANDLED,
862            Self::__Unknown(value) => value,
863        }
864    }
865}
866
867#[doc(hidden)]
868impl FromGlib<ffi::GLogWriterOutput> for LogWriterOutput {
869    #[inline]
870    unsafe fn from_glib(value: ffi::GLogWriterOutput) -> Self {
871        match value {
872            ffi::G_LOG_WRITER_HANDLED => Self::Handled,
873            ffi::G_LOG_WRITER_UNHANDLED => Self::Unhandled,
874            value => Self::__Unknown(value),
875        }
876    }
877}
878
879/// Error codes returned by markup parsing.
880#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
881#[non_exhaustive]
882#[doc(alias = "GMarkupError")]
883pub enum MarkupError {
884    /// text being parsed was not valid UTF-8
885    #[doc(alias = "G_MARKUP_ERROR_BAD_UTF8")]
886    BadUtf8,
887    /// document contained nothing, or only whitespace
888    #[doc(alias = "G_MARKUP_ERROR_EMPTY")]
889    Empty,
890    /// document was ill-formed
891    #[doc(alias = "G_MARKUP_ERROR_PARSE")]
892    Parse,
893    /// error should be set by #GMarkupParser
894    ///     functions; element wasn't known
895    #[doc(alias = "G_MARKUP_ERROR_UNKNOWN_ELEMENT")]
896    UnknownElement,
897    /// error should be set by #GMarkupParser
898    ///     functions; attribute wasn't known
899    #[doc(alias = "G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE")]
900    UnknownAttribute,
901    /// error should be set by #GMarkupParser
902    ///     functions; content was invalid
903    #[doc(alias = "G_MARKUP_ERROR_INVALID_CONTENT")]
904    InvalidContent,
905    /// error should be set by #GMarkupParser
906    ///     functions; a required attribute was missing
907    #[doc(alias = "G_MARKUP_ERROR_MISSING_ATTRIBUTE")]
908    MissingAttribute,
909    #[doc(hidden)]
910    __Unknown(i32),
911}
912
913#[doc(hidden)]
914impl IntoGlib for MarkupError {
915    type GlibType = ffi::GMarkupError;
916
917    #[inline]
918    fn into_glib(self) -> ffi::GMarkupError {
919        match self {
920            Self::BadUtf8 => ffi::G_MARKUP_ERROR_BAD_UTF8,
921            Self::Empty => ffi::G_MARKUP_ERROR_EMPTY,
922            Self::Parse => ffi::G_MARKUP_ERROR_PARSE,
923            Self::UnknownElement => ffi::G_MARKUP_ERROR_UNKNOWN_ELEMENT,
924            Self::UnknownAttribute => ffi::G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE,
925            Self::InvalidContent => ffi::G_MARKUP_ERROR_INVALID_CONTENT,
926            Self::MissingAttribute => ffi::G_MARKUP_ERROR_MISSING_ATTRIBUTE,
927            Self::__Unknown(value) => value,
928        }
929    }
930}
931
932#[doc(hidden)]
933impl FromGlib<ffi::GMarkupError> for MarkupError {
934    #[inline]
935    unsafe fn from_glib(value: ffi::GMarkupError) -> Self {
936        match value {
937            ffi::G_MARKUP_ERROR_BAD_UTF8 => Self::BadUtf8,
938            ffi::G_MARKUP_ERROR_EMPTY => Self::Empty,
939            ffi::G_MARKUP_ERROR_PARSE => Self::Parse,
940            ffi::G_MARKUP_ERROR_UNKNOWN_ELEMENT => Self::UnknownElement,
941            ffi::G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE => Self::UnknownAttribute,
942            ffi::G_MARKUP_ERROR_INVALID_CONTENT => Self::InvalidContent,
943            ffi::G_MARKUP_ERROR_MISSING_ATTRIBUTE => Self::MissingAttribute,
944            value => Self::__Unknown(value),
945        }
946    }
947}
948
949impl crate::error::ErrorDomain for MarkupError {
950    #[inline]
951    fn domain() -> crate::Quark {
952        unsafe { from_glib(ffi::g_markup_error_quark()) }
953    }
954
955    #[inline]
956    fn code(self) -> i32 {
957        self.into_glib()
958    }
959
960    #[inline]
961    #[allow(clippy::match_single_binding)]
962    fn from(code: i32) -> Option<Self> {
963        match unsafe { from_glib(code) } {
964            value => Some(value),
965        }
966    }
967}
968
969/// Defines how a Unicode string is transformed in a canonical
970/// form, standardizing such issues as whether a character with
971/// an accent is represented as a base character and combining
972/// accent or as a single precomposed character. Unicode strings
973/// should generally be normalized before comparing them.
974#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
975#[non_exhaustive]
976#[doc(alias = "GNormalizeMode")]
977pub enum NormalizeMode {
978    /// standardize differences that do not affect the
979    ///     text content, such as the above-mentioned accent representation
980    #[doc(alias = "G_NORMALIZE_DEFAULT")]
981    Default,
982    /// like [`Default`][Self::Default], but with
983    ///     composed forms rather than a maximally decomposed form
984    #[doc(alias = "G_NORMALIZE_DEFAULT_COMPOSE")]
985    DefaultCompose,
986    /// beyond [`Default`][Self::Default] also standardize the
987    ///     "compatibility" characters in Unicode, such as SUPERSCRIPT THREE
988    ///     to the standard forms (in this case DIGIT THREE). Formatting
989    ///     information may be lost but for most text operations such
990    ///     characters should be considered the same
991    #[doc(alias = "G_NORMALIZE_ALL")]
992    All,
993    /// like [`All`][Self::All], but with composed
994    ///     forms rather than a maximally decomposed form
995    #[doc(alias = "G_NORMALIZE_ALL_COMPOSE")]
996    AllCompose,
997    #[doc(hidden)]
998    __Unknown(i32),
999}
1000
1001#[doc(hidden)]
1002impl IntoGlib for NormalizeMode {
1003    type GlibType = ffi::GNormalizeMode;
1004
1005    #[inline]
1006    fn into_glib(self) -> ffi::GNormalizeMode {
1007        match self {
1008            Self::Default => ffi::G_NORMALIZE_DEFAULT,
1009            Self::DefaultCompose => ffi::G_NORMALIZE_DEFAULT_COMPOSE,
1010            Self::All => ffi::G_NORMALIZE_ALL,
1011            Self::AllCompose => ffi::G_NORMALIZE_ALL_COMPOSE,
1012            Self::__Unknown(value) => value,
1013        }
1014    }
1015}
1016
1017#[doc(hidden)]
1018impl FromGlib<ffi::GNormalizeMode> for NormalizeMode {
1019    #[inline]
1020    unsafe fn from_glib(value: ffi::GNormalizeMode) -> Self {
1021        match value {
1022            ffi::G_NORMALIZE_DEFAULT => Self::Default,
1023            ffi::G_NORMALIZE_DEFAULT_COMPOSE => Self::DefaultCompose,
1024            ffi::G_NORMALIZE_ALL => Self::All,
1025            ffi::G_NORMALIZE_ALL_COMPOSE => Self::AllCompose,
1026            value => Self::__Unknown(value),
1027        }
1028    }
1029}
1030
1031impl StaticType for NormalizeMode {
1032    #[inline]
1033    #[doc(alias = "g_normalize_mode_get_type")]
1034    fn static_type() -> crate::Type {
1035        unsafe { from_glib(ffi::g_normalize_mode_get_type()) }
1036    }
1037}
1038
1039impl crate::HasParamSpec for NormalizeMode {
1040    type ParamSpec = crate::ParamSpecEnum;
1041    type SetValue = Self;
1042    type BuilderFn = fn(&str, Self) -> crate::ParamSpecEnumBuilder<Self>;
1043
1044    fn param_spec_builder() -> Self::BuilderFn {
1045        Self::ParamSpec::builder_with_default
1046    }
1047}
1048
1049impl crate::value::ValueType for NormalizeMode {
1050    type Type = Self;
1051}
1052
1053unsafe impl<'a> crate::value::FromValue<'a> for NormalizeMode {
1054    type Checker = crate::value::GenericValueTypeChecker<Self>;
1055
1056    #[inline]
1057    unsafe fn from_value(value: &'a crate::Value) -> Self {
1058        from_glib(crate::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1059    }
1060}
1061
1062impl ToValue for NormalizeMode {
1063    #[inline]
1064    fn to_value(&self) -> crate::Value {
1065        let mut value = crate::Value::for_value_type::<Self>();
1066        unsafe {
1067            crate::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1068        }
1069        value
1070    }
1071
1072    #[inline]
1073    fn value_type(&self) -> crate::Type {
1074        Self::static_type()
1075    }
1076}
1077
1078impl From<NormalizeMode> for crate::Value {
1079    #[inline]
1080    fn from(v: NormalizeMode) -> Self {
1081        ToValue::to_value(&v)
1082    }
1083}
1084
1085/// The #GOptionArg enum values determine which type of extra argument the
1086/// options expect to find. If an option expects an extra argument, it can
1087/// be specified in several ways; with a short option: `-x arg`, with a long
1088/// option: `--name arg` or combined in a single argument: `--name=arg`.
1089#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1090#[non_exhaustive]
1091#[doc(alias = "GOptionArg")]
1092pub enum OptionArg {
1093    /// No extra argument. This is useful for simple flags or booleans.
1094    #[doc(alias = "G_OPTION_ARG_NONE")]
1095    None,
1096    /// The option takes a UTF-8 string argument.
1097    #[doc(alias = "G_OPTION_ARG_STRING")]
1098    String,
1099    /// The option takes an integer argument.
1100    #[doc(alias = "G_OPTION_ARG_INT")]
1101    Int,
1102    /// The option provides a callback (of type #GOptionArgFunc)
1103    ///   to parse the extra argument.
1104    #[doc(alias = "G_OPTION_ARG_CALLBACK")]
1105    Callback,
1106    /// The option takes a filename as argument, which will
1107    ///      be in the GLib filename encoding rather than UTF-8.
1108    #[doc(alias = "G_OPTION_ARG_FILENAME")]
1109    Filename,
1110    /// The option takes a string argument, multiple
1111    ///   uses of the option are collected into an array of strings.
1112    #[doc(alias = "G_OPTION_ARG_STRING_ARRAY")]
1113    StringArray,
1114    /// The option takes a filename as argument,
1115    ///   multiple uses of the option are collected into an array of strings.
1116    #[doc(alias = "G_OPTION_ARG_FILENAME_ARRAY")]
1117    FilenameArray,
1118    /// The option takes a double argument. The argument
1119    ///   can be formatted either for the user's locale or for the "C" locale.
1120    ///   Since 2.12
1121    #[doc(alias = "G_OPTION_ARG_DOUBLE")]
1122    Double,
1123    /// The option takes a 64-bit integer. Like
1124    ///   [`Int`][Self::Int] but for larger numbers. The number can be in
1125    ///   decimal base, or in hexadecimal (when prefixed with `0x`, for
1126    ///   example, `0xffffffff`). Since 2.12
1127    #[doc(alias = "G_OPTION_ARG_INT64")]
1128    Int64,
1129    #[doc(hidden)]
1130    __Unknown(i32),
1131}
1132
1133#[doc(hidden)]
1134impl IntoGlib for OptionArg {
1135    type GlibType = ffi::GOptionArg;
1136
1137    #[inline]
1138    fn into_glib(self) -> ffi::GOptionArg {
1139        match self {
1140            Self::None => ffi::G_OPTION_ARG_NONE,
1141            Self::String => ffi::G_OPTION_ARG_STRING,
1142            Self::Int => ffi::G_OPTION_ARG_INT,
1143            Self::Callback => ffi::G_OPTION_ARG_CALLBACK,
1144            Self::Filename => ffi::G_OPTION_ARG_FILENAME,
1145            Self::StringArray => ffi::G_OPTION_ARG_STRING_ARRAY,
1146            Self::FilenameArray => ffi::G_OPTION_ARG_FILENAME_ARRAY,
1147            Self::Double => ffi::G_OPTION_ARG_DOUBLE,
1148            Self::Int64 => ffi::G_OPTION_ARG_INT64,
1149            Self::__Unknown(value) => value,
1150        }
1151    }
1152}
1153
1154#[doc(hidden)]
1155impl FromGlib<ffi::GOptionArg> for OptionArg {
1156    #[inline]
1157    unsafe fn from_glib(value: ffi::GOptionArg) -> Self {
1158        match value {
1159            ffi::G_OPTION_ARG_NONE => Self::None,
1160            ffi::G_OPTION_ARG_STRING => Self::String,
1161            ffi::G_OPTION_ARG_INT => Self::Int,
1162            ffi::G_OPTION_ARG_CALLBACK => Self::Callback,
1163            ffi::G_OPTION_ARG_FILENAME => Self::Filename,
1164            ffi::G_OPTION_ARG_STRING_ARRAY => Self::StringArray,
1165            ffi::G_OPTION_ARG_FILENAME_ARRAY => Self::FilenameArray,
1166            ffi::G_OPTION_ARG_DOUBLE => Self::Double,
1167            ffi::G_OPTION_ARG_INT64 => Self::Int64,
1168            value => Self::__Unknown(value),
1169        }
1170    }
1171}
1172
1173/// An enumeration specifying the base position for a
1174/// g_io_channel_seek_position() operation.
1175#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1176#[non_exhaustive]
1177#[doc(alias = "GSeekType")]
1178pub enum SeekType {
1179    /// the current position in the file.
1180    #[doc(alias = "G_SEEK_CUR")]
1181    Cur,
1182    /// the start of the file.
1183    #[doc(alias = "G_SEEK_SET")]
1184    Set,
1185    /// the end of the file.
1186    #[doc(alias = "G_SEEK_END")]
1187    End,
1188    #[doc(hidden)]
1189    __Unknown(i32),
1190}
1191
1192#[doc(hidden)]
1193impl IntoGlib for SeekType {
1194    type GlibType = ffi::GSeekType;
1195
1196    #[inline]
1197    fn into_glib(self) -> ffi::GSeekType {
1198        match self {
1199            Self::Cur => ffi::G_SEEK_CUR,
1200            Self::Set => ffi::G_SEEK_SET,
1201            Self::End => ffi::G_SEEK_END,
1202            Self::__Unknown(value) => value,
1203        }
1204    }
1205}
1206
1207#[doc(hidden)]
1208impl FromGlib<ffi::GSeekType> for SeekType {
1209    #[inline]
1210    unsafe fn from_glib(value: ffi::GSeekType) -> Self {
1211        match value {
1212            ffi::G_SEEK_CUR => Self::Cur,
1213            ffi::G_SEEK_SET => Self::Set,
1214            ffi::G_SEEK_END => Self::End,
1215            value => Self::__Unknown(value),
1216        }
1217    }
1218}
1219
1220/// Disambiguates a given time in two ways.
1221///
1222/// First, specifies if the given time is in universal or local time.
1223///
1224/// Second, if the time is in local time, specifies if it is local
1225/// standard time or local daylight time.  This is important for the case
1226/// where the same local time occurs twice (during daylight savings time
1227/// transitions, for example).
1228#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1229#[non_exhaustive]
1230#[doc(alias = "GTimeType")]
1231pub enum TimeType {
1232    /// the time is in local standard time
1233    #[doc(alias = "G_TIME_TYPE_STANDARD")]
1234    Standard,
1235    /// the time is in local daylight time
1236    #[doc(alias = "G_TIME_TYPE_DAYLIGHT")]
1237    Daylight,
1238    /// the time is in UTC
1239    #[doc(alias = "G_TIME_TYPE_UNIVERSAL")]
1240    Universal,
1241    #[doc(hidden)]
1242    __Unknown(i32),
1243}
1244
1245#[doc(hidden)]
1246impl IntoGlib for TimeType {
1247    type GlibType = ffi::GTimeType;
1248
1249    #[inline]
1250    fn into_glib(self) -> ffi::GTimeType {
1251        match self {
1252            Self::Standard => ffi::G_TIME_TYPE_STANDARD,
1253            Self::Daylight => ffi::G_TIME_TYPE_DAYLIGHT,
1254            Self::Universal => ffi::G_TIME_TYPE_UNIVERSAL,
1255            Self::__Unknown(value) => value,
1256        }
1257    }
1258}
1259
1260#[doc(hidden)]
1261impl FromGlib<ffi::GTimeType> for TimeType {
1262    #[inline]
1263    unsafe fn from_glib(value: ffi::GTimeType) -> Self {
1264        match value {
1265            ffi::G_TIME_TYPE_STANDARD => Self::Standard,
1266            ffi::G_TIME_TYPE_DAYLIGHT => Self::Daylight,
1267            ffi::G_TIME_TYPE_UNIVERSAL => Self::Universal,
1268            value => Self::__Unknown(value),
1269        }
1270    }
1271}
1272
1273/// These are the possible line break classifications.
1274///
1275/// Since new Unicode versions may add new types here, applications should be ready
1276/// to handle unknown values. They may be regarded as [`Unknown`][Self::Unknown].
1277///
1278/// See [Unicode Line Breaking Algorithm](https://www.unicode.org/reports/tr14/).
1279#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1280#[non_exhaustive]
1281#[doc(alias = "GUnicodeBreakType")]
1282pub enum UnicodeBreakType {
1283    /// Mandatory Break (BK)
1284    #[doc(alias = "G_UNICODE_BREAK_MANDATORY")]
1285    Mandatory,
1286    /// Carriage Return (CR)
1287    #[doc(alias = "G_UNICODE_BREAK_CARRIAGE_RETURN")]
1288    CarriageReturn,
1289    /// Line Feed (LF)
1290    #[doc(alias = "G_UNICODE_BREAK_LINE_FEED")]
1291    LineFeed,
1292    /// Attached Characters and Combining Marks (CM)
1293    #[doc(alias = "G_UNICODE_BREAK_COMBINING_MARK")]
1294    CombiningMark,
1295    /// Surrogates (SG)
1296    #[doc(alias = "G_UNICODE_BREAK_SURROGATE")]
1297    Surrogate,
1298    /// Zero Width Space (ZW)
1299    #[doc(alias = "G_UNICODE_BREAK_ZERO_WIDTH_SPACE")]
1300    ZeroWidthSpace,
1301    /// Inseparable (IN)
1302    #[doc(alias = "G_UNICODE_BREAK_INSEPARABLE")]
1303    Inseparable,
1304    /// Non-breaking ("Glue") (GL)
1305    #[doc(alias = "G_UNICODE_BREAK_NON_BREAKING_GLUE")]
1306    NonBreakingGlue,
1307    /// Contingent Break Opportunity (CB)
1308    #[doc(alias = "G_UNICODE_BREAK_CONTINGENT")]
1309    Contingent,
1310    /// Space (SP)
1311    #[doc(alias = "G_UNICODE_BREAK_SPACE")]
1312    Space,
1313    /// Break Opportunity After (BA)
1314    #[doc(alias = "G_UNICODE_BREAK_AFTER")]
1315    After,
1316    /// Break Opportunity Before (BB)
1317    #[doc(alias = "G_UNICODE_BREAK_BEFORE")]
1318    Before,
1319    /// Break Opportunity Before and After (B2)
1320    #[doc(alias = "G_UNICODE_BREAK_BEFORE_AND_AFTER")]
1321    BeforeAndAfter,
1322    /// Hyphen (HY)
1323    #[doc(alias = "G_UNICODE_BREAK_HYPHEN")]
1324    Hyphen,
1325    /// Nonstarter (NS)
1326    #[doc(alias = "G_UNICODE_BREAK_NON_STARTER")]
1327    NonStarter,
1328    /// Opening Punctuation (OP)
1329    #[doc(alias = "G_UNICODE_BREAK_OPEN_PUNCTUATION")]
1330    OpenPunctuation,
1331    /// Closing Punctuation (CL)
1332    #[doc(alias = "G_UNICODE_BREAK_CLOSE_PUNCTUATION")]
1333    ClosePunctuation,
1334    /// Ambiguous Quotation (QU)
1335    #[doc(alias = "G_UNICODE_BREAK_QUOTATION")]
1336    Quotation,
1337    /// Exclamation/Interrogation (EX)
1338    #[doc(alias = "G_UNICODE_BREAK_EXCLAMATION")]
1339    Exclamation,
1340    /// Ideographic (ID)
1341    #[doc(alias = "G_UNICODE_BREAK_IDEOGRAPHIC")]
1342    Ideographic,
1343    /// Numeric (NU)
1344    #[doc(alias = "G_UNICODE_BREAK_NUMERIC")]
1345    Numeric,
1346    /// Infix Separator (Numeric) (IS)
1347    #[doc(alias = "G_UNICODE_BREAK_INFIX_SEPARATOR")]
1348    InfixSeparator,
1349    /// Symbols Allowing Break After (SY)
1350    #[doc(alias = "G_UNICODE_BREAK_SYMBOL")]
1351    Symbol,
1352    /// Ordinary Alphabetic and Symbol Characters (AL)
1353    #[doc(alias = "G_UNICODE_BREAK_ALPHABETIC")]
1354    Alphabetic,
1355    /// Prefix (Numeric) (PR)
1356    #[doc(alias = "G_UNICODE_BREAK_PREFIX")]
1357    Prefix,
1358    /// Postfix (Numeric) (PO)
1359    #[doc(alias = "G_UNICODE_BREAK_POSTFIX")]
1360    Postfix,
1361    /// Complex Content Dependent (South East Asian) (SA)
1362    #[doc(alias = "G_UNICODE_BREAK_COMPLEX_CONTEXT")]
1363    ComplexContext,
1364    /// Ambiguous (Alphabetic or Ideographic) (AI)
1365    #[doc(alias = "G_UNICODE_BREAK_AMBIGUOUS")]
1366    Ambiguous,
1367    /// Unknown (XX)
1368    #[doc(alias = "G_UNICODE_BREAK_UNKNOWN")]
1369    Unknown,
1370    /// Next Line (NL)
1371    #[doc(alias = "G_UNICODE_BREAK_NEXT_LINE")]
1372    NextLine,
1373    /// Word Joiner (WJ)
1374    #[doc(alias = "G_UNICODE_BREAK_WORD_JOINER")]
1375    WordJoiner,
1376    /// Hangul L Jamo (JL)
1377    #[doc(alias = "G_UNICODE_BREAK_HANGUL_L_JAMO")]
1378    HangulLJamo,
1379    /// Hangul V Jamo (JV)
1380    #[doc(alias = "G_UNICODE_BREAK_HANGUL_V_JAMO")]
1381    HangulVJamo,
1382    /// Hangul T Jamo (JT)
1383    #[doc(alias = "G_UNICODE_BREAK_HANGUL_T_JAMO")]
1384    HangulTJamo,
1385    /// Hangul LV Syllable (H2)
1386    #[doc(alias = "G_UNICODE_BREAK_HANGUL_LV_SYLLABLE")]
1387    HangulLvSyllable,
1388    /// Hangul LVT Syllable (H3)
1389    #[doc(alias = "G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE")]
1390    HangulLvtSyllable,
1391    /// Closing Parenthesis (CP). Since 2.70
1392    #[doc(alias = "G_UNICODE_BREAK_CLOSE_PARENTHESIS")]
1393    CloseParenthesis,
1394    /// Conditional Japanese Starter (CJ). Since: 2.32
1395    #[doc(alias = "G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER")]
1396    ConditionalJapaneseStarter,
1397    /// Hebrew Letter (HL). Since: 2.32
1398    #[doc(alias = "G_UNICODE_BREAK_HEBREW_LETTER")]
1399    HebrewLetter,
1400    /// Regional Indicator (RI). Since: 2.36
1401    #[doc(alias = "G_UNICODE_BREAK_REGIONAL_INDICATOR")]
1402    RegionalIndicator,
1403    /// Emoji Base (EB). Since: 2.50
1404    #[doc(alias = "G_UNICODE_BREAK_EMOJI_BASE")]
1405    EmojiBase,
1406    /// Emoji Modifier (EM). Since: 2.50
1407    #[doc(alias = "G_UNICODE_BREAK_EMOJI_MODIFIER")]
1408    EmojiModifier,
1409    /// Zero Width Joiner (ZWJ). Since: 2.50
1410    #[doc(alias = "G_UNICODE_BREAK_ZERO_WIDTH_JOINER")]
1411    ZeroWidthJoiner,
1412    /// Aksara (AK). Since: 2.80
1413    #[cfg(feature = "v2_80")]
1414    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
1415    #[doc(alias = "G_UNICODE_BREAK_AKSARA")]
1416    Aksara,
1417    /// Aksara Pre-Base (AP). Since: 2.80
1418    #[cfg(feature = "v2_80")]
1419    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
1420    #[doc(alias = "G_UNICODE_BREAK_AKSARA_PRE_BASE")]
1421    AksaraPreBase,
1422    /// Aksara Start (AS). Since: 2.80
1423    #[cfg(feature = "v2_80")]
1424    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
1425    #[doc(alias = "G_UNICODE_BREAK_AKSARA_START")]
1426    AksaraStart,
1427    /// Virama Final (VF). Since: 2.80
1428    #[cfg(feature = "v2_80")]
1429    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
1430    #[doc(alias = "G_UNICODE_BREAK_VIRAMA_FINAL")]
1431    ViramaFinal,
1432    /// Virama (VI). Since: 2.80
1433    #[cfg(feature = "v2_80")]
1434    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
1435    #[doc(alias = "G_UNICODE_BREAK_VIRAMA")]
1436    Virama,
1437    #[doc(hidden)]
1438    __Unknown(i32),
1439}
1440
1441#[doc(hidden)]
1442impl IntoGlib for UnicodeBreakType {
1443    type GlibType = ffi::GUnicodeBreakType;
1444
1445    fn into_glib(self) -> ffi::GUnicodeBreakType {
1446        match self {
1447            Self::Mandatory => ffi::G_UNICODE_BREAK_MANDATORY,
1448            Self::CarriageReturn => ffi::G_UNICODE_BREAK_CARRIAGE_RETURN,
1449            Self::LineFeed => ffi::G_UNICODE_BREAK_LINE_FEED,
1450            Self::CombiningMark => ffi::G_UNICODE_BREAK_COMBINING_MARK,
1451            Self::Surrogate => ffi::G_UNICODE_BREAK_SURROGATE,
1452            Self::ZeroWidthSpace => ffi::G_UNICODE_BREAK_ZERO_WIDTH_SPACE,
1453            Self::Inseparable => ffi::G_UNICODE_BREAK_INSEPARABLE,
1454            Self::NonBreakingGlue => ffi::G_UNICODE_BREAK_NON_BREAKING_GLUE,
1455            Self::Contingent => ffi::G_UNICODE_BREAK_CONTINGENT,
1456            Self::Space => ffi::G_UNICODE_BREAK_SPACE,
1457            Self::After => ffi::G_UNICODE_BREAK_AFTER,
1458            Self::Before => ffi::G_UNICODE_BREAK_BEFORE,
1459            Self::BeforeAndAfter => ffi::G_UNICODE_BREAK_BEFORE_AND_AFTER,
1460            Self::Hyphen => ffi::G_UNICODE_BREAK_HYPHEN,
1461            Self::NonStarter => ffi::G_UNICODE_BREAK_NON_STARTER,
1462            Self::OpenPunctuation => ffi::G_UNICODE_BREAK_OPEN_PUNCTUATION,
1463            Self::ClosePunctuation => ffi::G_UNICODE_BREAK_CLOSE_PUNCTUATION,
1464            Self::Quotation => ffi::G_UNICODE_BREAK_QUOTATION,
1465            Self::Exclamation => ffi::G_UNICODE_BREAK_EXCLAMATION,
1466            Self::Ideographic => ffi::G_UNICODE_BREAK_IDEOGRAPHIC,
1467            Self::Numeric => ffi::G_UNICODE_BREAK_NUMERIC,
1468            Self::InfixSeparator => ffi::G_UNICODE_BREAK_INFIX_SEPARATOR,
1469            Self::Symbol => ffi::G_UNICODE_BREAK_SYMBOL,
1470            Self::Alphabetic => ffi::G_UNICODE_BREAK_ALPHABETIC,
1471            Self::Prefix => ffi::G_UNICODE_BREAK_PREFIX,
1472            Self::Postfix => ffi::G_UNICODE_BREAK_POSTFIX,
1473            Self::ComplexContext => ffi::G_UNICODE_BREAK_COMPLEX_CONTEXT,
1474            Self::Ambiguous => ffi::G_UNICODE_BREAK_AMBIGUOUS,
1475            Self::Unknown => ffi::G_UNICODE_BREAK_UNKNOWN,
1476            Self::NextLine => ffi::G_UNICODE_BREAK_NEXT_LINE,
1477            Self::WordJoiner => ffi::G_UNICODE_BREAK_WORD_JOINER,
1478            Self::HangulLJamo => ffi::G_UNICODE_BREAK_HANGUL_L_JAMO,
1479            Self::HangulVJamo => ffi::G_UNICODE_BREAK_HANGUL_V_JAMO,
1480            Self::HangulTJamo => ffi::G_UNICODE_BREAK_HANGUL_T_JAMO,
1481            Self::HangulLvSyllable => ffi::G_UNICODE_BREAK_HANGUL_LV_SYLLABLE,
1482            Self::HangulLvtSyllable => ffi::G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE,
1483            Self::CloseParenthesis => ffi::G_UNICODE_BREAK_CLOSE_PARENTHESIS,
1484            Self::ConditionalJapaneseStarter => ffi::G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER,
1485            Self::HebrewLetter => ffi::G_UNICODE_BREAK_HEBREW_LETTER,
1486            Self::RegionalIndicator => ffi::G_UNICODE_BREAK_REGIONAL_INDICATOR,
1487            Self::EmojiBase => ffi::G_UNICODE_BREAK_EMOJI_BASE,
1488            Self::EmojiModifier => ffi::G_UNICODE_BREAK_EMOJI_MODIFIER,
1489            Self::ZeroWidthJoiner => ffi::G_UNICODE_BREAK_ZERO_WIDTH_JOINER,
1490            #[cfg(feature = "v2_80")]
1491            Self::Aksara => ffi::G_UNICODE_BREAK_AKSARA,
1492            #[cfg(feature = "v2_80")]
1493            Self::AksaraPreBase => ffi::G_UNICODE_BREAK_AKSARA_PRE_BASE,
1494            #[cfg(feature = "v2_80")]
1495            Self::AksaraStart => ffi::G_UNICODE_BREAK_AKSARA_START,
1496            #[cfg(feature = "v2_80")]
1497            Self::ViramaFinal => ffi::G_UNICODE_BREAK_VIRAMA_FINAL,
1498            #[cfg(feature = "v2_80")]
1499            Self::Virama => ffi::G_UNICODE_BREAK_VIRAMA,
1500            Self::__Unknown(value) => value,
1501        }
1502    }
1503}
1504
1505#[doc(hidden)]
1506impl FromGlib<ffi::GUnicodeBreakType> for UnicodeBreakType {
1507    unsafe fn from_glib(value: ffi::GUnicodeBreakType) -> Self {
1508        match value {
1509            ffi::G_UNICODE_BREAK_MANDATORY => Self::Mandatory,
1510            ffi::G_UNICODE_BREAK_CARRIAGE_RETURN => Self::CarriageReturn,
1511            ffi::G_UNICODE_BREAK_LINE_FEED => Self::LineFeed,
1512            ffi::G_UNICODE_BREAK_COMBINING_MARK => Self::CombiningMark,
1513            ffi::G_UNICODE_BREAK_SURROGATE => Self::Surrogate,
1514            ffi::G_UNICODE_BREAK_ZERO_WIDTH_SPACE => Self::ZeroWidthSpace,
1515            ffi::G_UNICODE_BREAK_INSEPARABLE => Self::Inseparable,
1516            ffi::G_UNICODE_BREAK_NON_BREAKING_GLUE => Self::NonBreakingGlue,
1517            ffi::G_UNICODE_BREAK_CONTINGENT => Self::Contingent,
1518            ffi::G_UNICODE_BREAK_SPACE => Self::Space,
1519            ffi::G_UNICODE_BREAK_AFTER => Self::After,
1520            ffi::G_UNICODE_BREAK_BEFORE => Self::Before,
1521            ffi::G_UNICODE_BREAK_BEFORE_AND_AFTER => Self::BeforeAndAfter,
1522            ffi::G_UNICODE_BREAK_HYPHEN => Self::Hyphen,
1523            ffi::G_UNICODE_BREAK_NON_STARTER => Self::NonStarter,
1524            ffi::G_UNICODE_BREAK_OPEN_PUNCTUATION => Self::OpenPunctuation,
1525            ffi::G_UNICODE_BREAK_CLOSE_PUNCTUATION => Self::ClosePunctuation,
1526            ffi::G_UNICODE_BREAK_QUOTATION => Self::Quotation,
1527            ffi::G_UNICODE_BREAK_EXCLAMATION => Self::Exclamation,
1528            ffi::G_UNICODE_BREAK_IDEOGRAPHIC => Self::Ideographic,
1529            ffi::G_UNICODE_BREAK_NUMERIC => Self::Numeric,
1530            ffi::G_UNICODE_BREAK_INFIX_SEPARATOR => Self::InfixSeparator,
1531            ffi::G_UNICODE_BREAK_SYMBOL => Self::Symbol,
1532            ffi::G_UNICODE_BREAK_ALPHABETIC => Self::Alphabetic,
1533            ffi::G_UNICODE_BREAK_PREFIX => Self::Prefix,
1534            ffi::G_UNICODE_BREAK_POSTFIX => Self::Postfix,
1535            ffi::G_UNICODE_BREAK_COMPLEX_CONTEXT => Self::ComplexContext,
1536            ffi::G_UNICODE_BREAK_AMBIGUOUS => Self::Ambiguous,
1537            ffi::G_UNICODE_BREAK_UNKNOWN => Self::Unknown,
1538            ffi::G_UNICODE_BREAK_NEXT_LINE => Self::NextLine,
1539            ffi::G_UNICODE_BREAK_WORD_JOINER => Self::WordJoiner,
1540            ffi::G_UNICODE_BREAK_HANGUL_L_JAMO => Self::HangulLJamo,
1541            ffi::G_UNICODE_BREAK_HANGUL_V_JAMO => Self::HangulVJamo,
1542            ffi::G_UNICODE_BREAK_HANGUL_T_JAMO => Self::HangulTJamo,
1543            ffi::G_UNICODE_BREAK_HANGUL_LV_SYLLABLE => Self::HangulLvSyllable,
1544            ffi::G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE => Self::HangulLvtSyllable,
1545            ffi::G_UNICODE_BREAK_CLOSE_PARENTHESIS => Self::CloseParenthesis,
1546            ffi::G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER => Self::ConditionalJapaneseStarter,
1547            ffi::G_UNICODE_BREAK_HEBREW_LETTER => Self::HebrewLetter,
1548            ffi::G_UNICODE_BREAK_REGIONAL_INDICATOR => Self::RegionalIndicator,
1549            ffi::G_UNICODE_BREAK_EMOJI_BASE => Self::EmojiBase,
1550            ffi::G_UNICODE_BREAK_EMOJI_MODIFIER => Self::EmojiModifier,
1551            ffi::G_UNICODE_BREAK_ZERO_WIDTH_JOINER => Self::ZeroWidthJoiner,
1552            #[cfg(feature = "v2_80")]
1553            ffi::G_UNICODE_BREAK_AKSARA => Self::Aksara,
1554            #[cfg(feature = "v2_80")]
1555            ffi::G_UNICODE_BREAK_AKSARA_PRE_BASE => Self::AksaraPreBase,
1556            #[cfg(feature = "v2_80")]
1557            ffi::G_UNICODE_BREAK_AKSARA_START => Self::AksaraStart,
1558            #[cfg(feature = "v2_80")]
1559            ffi::G_UNICODE_BREAK_VIRAMA_FINAL => Self::ViramaFinal,
1560            #[cfg(feature = "v2_80")]
1561            ffi::G_UNICODE_BREAK_VIRAMA => Self::Virama,
1562            value => Self::__Unknown(value),
1563        }
1564    }
1565}
1566
1567impl StaticType for UnicodeBreakType {
1568    #[inline]
1569    #[doc(alias = "g_unicode_break_type_get_type")]
1570    fn static_type() -> crate::Type {
1571        unsafe { from_glib(ffi::g_unicode_break_type_get_type()) }
1572    }
1573}
1574
1575impl crate::HasParamSpec for UnicodeBreakType {
1576    type ParamSpec = crate::ParamSpecEnum;
1577    type SetValue = Self;
1578    type BuilderFn = fn(&str, Self) -> crate::ParamSpecEnumBuilder<Self>;
1579
1580    fn param_spec_builder() -> Self::BuilderFn {
1581        Self::ParamSpec::builder_with_default
1582    }
1583}
1584
1585impl crate::value::ValueType for UnicodeBreakType {
1586    type Type = Self;
1587}
1588
1589unsafe impl<'a> crate::value::FromValue<'a> for UnicodeBreakType {
1590    type Checker = crate::value::GenericValueTypeChecker<Self>;
1591
1592    #[inline]
1593    unsafe fn from_value(value: &'a crate::Value) -> Self {
1594        from_glib(crate::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1595    }
1596}
1597
1598impl ToValue for UnicodeBreakType {
1599    #[inline]
1600    fn to_value(&self) -> crate::Value {
1601        let mut value = crate::Value::for_value_type::<Self>();
1602        unsafe {
1603            crate::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1604        }
1605        value
1606    }
1607
1608    #[inline]
1609    fn value_type(&self) -> crate::Type {
1610        Self::static_type()
1611    }
1612}
1613
1614impl From<UnicodeBreakType> for crate::Value {
1615    #[inline]
1616    fn from(v: UnicodeBreakType) -> Self {
1617        ToValue::to_value(&v)
1618    }
1619}
1620
1621/// The #GUnicodeScript enumeration identifies different writing
1622/// systems. The values correspond to the names as defined in the
1623/// Unicode standard. The enumeration has been added in GLib 2.14,
1624/// and is interchangeable with #PangoScript.
1625///
1626/// Note that new types may be added in the future. Applications
1627/// should be ready to handle unknown values.
1628/// See [Unicode Standard Annex #24: Script names](http://www.unicode.org/reports/tr24/).
1629#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1630#[non_exhaustive]
1631#[doc(alias = "GUnicodeScript")]
1632pub enum UnicodeScript {
1633    /// a value never returned from g_unichar_get_script()
1634    #[doc(alias = "G_UNICODE_SCRIPT_INVALID_CODE")]
1635    InvalidCode,
1636    /// a character used by multiple different scripts
1637    #[doc(alias = "G_UNICODE_SCRIPT_COMMON")]
1638    Common,
1639    /// a mark glyph that takes its script from the
1640    ///                               base glyph to which it is attached
1641    #[doc(alias = "G_UNICODE_SCRIPT_INHERITED")]
1642    Inherited,
1643    /// Arabic
1644    #[doc(alias = "G_UNICODE_SCRIPT_ARABIC")]
1645    Arabic,
1646    /// Armenian
1647    #[doc(alias = "G_UNICODE_SCRIPT_ARMENIAN")]
1648    Armenian,
1649    /// Bengali
1650    #[doc(alias = "G_UNICODE_SCRIPT_BENGALI")]
1651    Bengali,
1652    /// Bopomofo
1653    #[doc(alias = "G_UNICODE_SCRIPT_BOPOMOFO")]
1654    Bopomofo,
1655    /// Cherokee
1656    #[doc(alias = "G_UNICODE_SCRIPT_CHEROKEE")]
1657    Cherokee,
1658    /// Coptic
1659    #[doc(alias = "G_UNICODE_SCRIPT_COPTIC")]
1660    Coptic,
1661    /// Cyrillic
1662    #[doc(alias = "G_UNICODE_SCRIPT_CYRILLIC")]
1663    Cyrillic,
1664    /// Deseret
1665    #[doc(alias = "G_UNICODE_SCRIPT_DESERET")]
1666    Deseret,
1667    /// Devanagari
1668    #[doc(alias = "G_UNICODE_SCRIPT_DEVANAGARI")]
1669    Devanagari,
1670    /// Ethiopic
1671    #[doc(alias = "G_UNICODE_SCRIPT_ETHIOPIC")]
1672    Ethiopic,
1673    /// Georgian
1674    #[doc(alias = "G_UNICODE_SCRIPT_GEORGIAN")]
1675    Georgian,
1676    /// Gothic
1677    #[doc(alias = "G_UNICODE_SCRIPT_GOTHIC")]
1678    Gothic,
1679    /// Greek
1680    #[doc(alias = "G_UNICODE_SCRIPT_GREEK")]
1681    Greek,
1682    /// Gujarati
1683    #[doc(alias = "G_UNICODE_SCRIPT_GUJARATI")]
1684    Gujarati,
1685    /// Gurmukhi
1686    #[doc(alias = "G_UNICODE_SCRIPT_GURMUKHI")]
1687    Gurmukhi,
1688    /// Han
1689    #[doc(alias = "G_UNICODE_SCRIPT_HAN")]
1690    Han,
1691    /// Hangul
1692    #[doc(alias = "G_UNICODE_SCRIPT_HANGUL")]
1693    Hangul,
1694    /// Hebrew
1695    #[doc(alias = "G_UNICODE_SCRIPT_HEBREW")]
1696    Hebrew,
1697    /// Hiragana
1698    #[doc(alias = "G_UNICODE_SCRIPT_HIRAGANA")]
1699    Hiragana,
1700    /// Kannada
1701    #[doc(alias = "G_UNICODE_SCRIPT_KANNADA")]
1702    Kannada,
1703    /// Katakana
1704    #[doc(alias = "G_UNICODE_SCRIPT_KATAKANA")]
1705    Katakana,
1706    /// Khmer
1707    #[doc(alias = "G_UNICODE_SCRIPT_KHMER")]
1708    Khmer,
1709    /// Lao
1710    #[doc(alias = "G_UNICODE_SCRIPT_LAO")]
1711    Lao,
1712    /// Latin
1713    #[doc(alias = "G_UNICODE_SCRIPT_LATIN")]
1714    Latin,
1715    /// Malayalam
1716    #[doc(alias = "G_UNICODE_SCRIPT_MALAYALAM")]
1717    Malayalam,
1718    /// Mongolian
1719    #[doc(alias = "G_UNICODE_SCRIPT_MONGOLIAN")]
1720    Mongolian,
1721    /// Myanmar
1722    #[doc(alias = "G_UNICODE_SCRIPT_MYANMAR")]
1723    Myanmar,
1724    /// Ogham
1725    #[doc(alias = "G_UNICODE_SCRIPT_OGHAM")]
1726    Ogham,
1727    /// Old Italic
1728    #[doc(alias = "G_UNICODE_SCRIPT_OLD_ITALIC")]
1729    OldItalic,
1730    /// Oriya
1731    #[doc(alias = "G_UNICODE_SCRIPT_ORIYA")]
1732    Oriya,
1733    /// Runic
1734    #[doc(alias = "G_UNICODE_SCRIPT_RUNIC")]
1735    Runic,
1736    /// Sinhala
1737    #[doc(alias = "G_UNICODE_SCRIPT_SINHALA")]
1738    Sinhala,
1739    /// Syriac
1740    #[doc(alias = "G_UNICODE_SCRIPT_SYRIAC")]
1741    Syriac,
1742    /// Tamil
1743    #[doc(alias = "G_UNICODE_SCRIPT_TAMIL")]
1744    Tamil,
1745    /// Telugu
1746    #[doc(alias = "G_UNICODE_SCRIPT_TELUGU")]
1747    Telugu,
1748    /// Thaana
1749    #[doc(alias = "G_UNICODE_SCRIPT_THAANA")]
1750    Thaana,
1751    /// Thai
1752    #[doc(alias = "G_UNICODE_SCRIPT_THAI")]
1753    Thai,
1754    /// Tibetan
1755    #[doc(alias = "G_UNICODE_SCRIPT_TIBETAN")]
1756    Tibetan,
1757    /// Canadian Aboriginal
1758    #[doc(alias = "G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL")]
1759    CanadianAboriginal,
1760    /// Yi
1761    #[doc(alias = "G_UNICODE_SCRIPT_YI")]
1762    Yi,
1763    /// Tagalog
1764    #[doc(alias = "G_UNICODE_SCRIPT_TAGALOG")]
1765    Tagalog,
1766    /// Hanunoo
1767    #[doc(alias = "G_UNICODE_SCRIPT_HANUNOO")]
1768    Hanunoo,
1769    /// Buhid
1770    #[doc(alias = "G_UNICODE_SCRIPT_BUHID")]
1771    Buhid,
1772    /// Tagbanwa
1773    #[doc(alias = "G_UNICODE_SCRIPT_TAGBANWA")]
1774    Tagbanwa,
1775    /// Braille
1776    #[doc(alias = "G_UNICODE_SCRIPT_BRAILLE")]
1777    Braille,
1778    /// Cypriot
1779    #[doc(alias = "G_UNICODE_SCRIPT_CYPRIOT")]
1780    Cypriot,
1781    /// Limbu
1782    #[doc(alias = "G_UNICODE_SCRIPT_LIMBU")]
1783    Limbu,
1784    /// Osmanya
1785    #[doc(alias = "G_UNICODE_SCRIPT_OSMANYA")]
1786    Osmanya,
1787    /// Shavian
1788    #[doc(alias = "G_UNICODE_SCRIPT_SHAVIAN")]
1789    Shavian,
1790    /// Linear B
1791    #[doc(alias = "G_UNICODE_SCRIPT_LINEAR_B")]
1792    LinearB,
1793    /// Tai Le
1794    #[doc(alias = "G_UNICODE_SCRIPT_TAI_LE")]
1795    TaiLe,
1796    /// Ugaritic
1797    #[doc(alias = "G_UNICODE_SCRIPT_UGARITIC")]
1798    Ugaritic,
1799    /// New Tai Lue
1800    #[doc(alias = "G_UNICODE_SCRIPT_NEW_TAI_LUE")]
1801    NewTaiLue,
1802    /// Buginese
1803    #[doc(alias = "G_UNICODE_SCRIPT_BUGINESE")]
1804    Buginese,
1805    /// Glagolitic
1806    #[doc(alias = "G_UNICODE_SCRIPT_GLAGOLITIC")]
1807    Glagolitic,
1808    /// Tifinagh
1809    #[doc(alias = "G_UNICODE_SCRIPT_TIFINAGH")]
1810    Tifinagh,
1811    /// Syloti Nagri
1812    #[doc(alias = "G_UNICODE_SCRIPT_SYLOTI_NAGRI")]
1813    SylotiNagri,
1814    /// Old Persian
1815    #[doc(alias = "G_UNICODE_SCRIPT_OLD_PERSIAN")]
1816    OldPersian,
1817    /// Kharoshthi
1818    #[doc(alias = "G_UNICODE_SCRIPT_KHAROSHTHI")]
1819    Kharoshthi,
1820    /// an unassigned code point
1821    #[doc(alias = "G_UNICODE_SCRIPT_UNKNOWN")]
1822    Unknown,
1823    /// Balinese
1824    #[doc(alias = "G_UNICODE_SCRIPT_BALINESE")]
1825    Balinese,
1826    /// Cuneiform
1827    #[doc(alias = "G_UNICODE_SCRIPT_CUNEIFORM")]
1828    Cuneiform,
1829    /// Phoenician
1830    #[doc(alias = "G_UNICODE_SCRIPT_PHOENICIAN")]
1831    Phoenician,
1832    /// Phags-pa
1833    #[doc(alias = "G_UNICODE_SCRIPT_PHAGS_PA")]
1834    PhagsPa,
1835    /// N'Ko
1836    #[doc(alias = "G_UNICODE_SCRIPT_NKO")]
1837    Nko,
1838    /// Kayah Li. Since 2.16.3
1839    #[doc(alias = "G_UNICODE_SCRIPT_KAYAH_LI")]
1840    KayahLi,
1841    /// Lepcha. Since 2.16.3
1842    #[doc(alias = "G_UNICODE_SCRIPT_LEPCHA")]
1843    Lepcha,
1844    /// Rejang. Since 2.16.3
1845    #[doc(alias = "G_UNICODE_SCRIPT_REJANG")]
1846    Rejang,
1847    /// Sundanese. Since 2.16.3
1848    #[doc(alias = "G_UNICODE_SCRIPT_SUNDANESE")]
1849    Sundanese,
1850    /// Saurashtra. Since 2.16.3
1851    #[doc(alias = "G_UNICODE_SCRIPT_SAURASHTRA")]
1852    Saurashtra,
1853    /// Cham. Since 2.16.3
1854    #[doc(alias = "G_UNICODE_SCRIPT_CHAM")]
1855    Cham,
1856    /// Ol Chiki. Since 2.16.3
1857    #[doc(alias = "G_UNICODE_SCRIPT_OL_CHIKI")]
1858    OlChiki,
1859    /// Vai. Since 2.16.3
1860    #[doc(alias = "G_UNICODE_SCRIPT_VAI")]
1861    Vai,
1862    /// Carian. Since 2.16.3
1863    #[doc(alias = "G_UNICODE_SCRIPT_CARIAN")]
1864    Carian,
1865    /// Lycian. Since 2.16.3
1866    #[doc(alias = "G_UNICODE_SCRIPT_LYCIAN")]
1867    Lycian,
1868    /// Lydian. Since 2.16.3
1869    #[doc(alias = "G_UNICODE_SCRIPT_LYDIAN")]
1870    Lydian,
1871    /// Avestan. Since 2.26
1872    #[doc(alias = "G_UNICODE_SCRIPT_AVESTAN")]
1873    Avestan,
1874    /// Bamum. Since 2.26
1875    #[doc(alias = "G_UNICODE_SCRIPT_BAMUM")]
1876    Bamum,
1877    /// Egyptian Hieroglpyhs. Since 2.26
1878    #[doc(alias = "G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS")]
1879    EgyptianHieroglyphs,
1880    /// Imperial Aramaic. Since 2.26
1881    #[doc(alias = "G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC")]
1882    ImperialAramaic,
1883    /// Inscriptional Pahlavi. Since 2.26
1884    #[doc(alias = "G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI")]
1885    InscriptionalPahlavi,
1886    /// Inscriptional Parthian. Since 2.26
1887    #[doc(alias = "G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN")]
1888    InscriptionalParthian,
1889    /// Javanese. Since 2.26
1890    #[doc(alias = "G_UNICODE_SCRIPT_JAVANESE")]
1891    Javanese,
1892    /// Kaithi. Since 2.26
1893    #[doc(alias = "G_UNICODE_SCRIPT_KAITHI")]
1894    Kaithi,
1895    /// Lisu. Since 2.26
1896    #[doc(alias = "G_UNICODE_SCRIPT_LISU")]
1897    Lisu,
1898    /// Meetei Mayek. Since 2.26
1899    #[doc(alias = "G_UNICODE_SCRIPT_MEETEI_MAYEK")]
1900    MeeteiMayek,
1901    /// Old South Arabian. Since 2.26
1902    #[doc(alias = "G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN")]
1903    OldSouthArabian,
1904    /// Old Turkic. Since 2.28
1905    #[doc(alias = "G_UNICODE_SCRIPT_OLD_TURKIC")]
1906    OldTurkic,
1907    /// Samaritan. Since 2.26
1908    #[doc(alias = "G_UNICODE_SCRIPT_SAMARITAN")]
1909    Samaritan,
1910    /// Tai Tham. Since 2.26
1911    #[doc(alias = "G_UNICODE_SCRIPT_TAI_THAM")]
1912    TaiTham,
1913    /// Tai Viet. Since 2.26
1914    #[doc(alias = "G_UNICODE_SCRIPT_TAI_VIET")]
1915    TaiViet,
1916    /// Batak. Since 2.28
1917    #[doc(alias = "G_UNICODE_SCRIPT_BATAK")]
1918    Batak,
1919    /// Brahmi. Since 2.28
1920    #[doc(alias = "G_UNICODE_SCRIPT_BRAHMI")]
1921    Brahmi,
1922    /// Mandaic. Since 2.28
1923    #[doc(alias = "G_UNICODE_SCRIPT_MANDAIC")]
1924    Mandaic,
1925    /// Chakma. Since: 2.32
1926    #[doc(alias = "G_UNICODE_SCRIPT_CHAKMA")]
1927    Chakma,
1928    /// Meroitic Cursive. Since: 2.32
1929    #[doc(alias = "G_UNICODE_SCRIPT_MEROITIC_CURSIVE")]
1930    MeroiticCursive,
1931    /// Meroitic Hieroglyphs. Since: 2.32
1932    #[doc(alias = "G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS")]
1933    MeroiticHieroglyphs,
1934    /// Miao. Since: 2.32
1935    #[doc(alias = "G_UNICODE_SCRIPT_MIAO")]
1936    Miao,
1937    /// Sharada. Since: 2.32
1938    #[doc(alias = "G_UNICODE_SCRIPT_SHARADA")]
1939    Sharada,
1940    /// Sora Sompeng. Since: 2.32
1941    #[doc(alias = "G_UNICODE_SCRIPT_SORA_SOMPENG")]
1942    SoraSompeng,
1943    /// Takri. Since: 2.32
1944    #[doc(alias = "G_UNICODE_SCRIPT_TAKRI")]
1945    Takri,
1946    /// Bassa. Since: 2.42
1947    #[doc(alias = "G_UNICODE_SCRIPT_BASSA_VAH")]
1948    BassaVah,
1949    /// Caucasian Albanian. Since: 2.42
1950    #[doc(alias = "G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN")]
1951    CaucasianAlbanian,
1952    /// Duployan. Since: 2.42
1953    #[doc(alias = "G_UNICODE_SCRIPT_DUPLOYAN")]
1954    Duployan,
1955    /// Elbasan. Since: 2.42
1956    #[doc(alias = "G_UNICODE_SCRIPT_ELBASAN")]
1957    Elbasan,
1958    /// Grantha. Since: 2.42
1959    #[doc(alias = "G_UNICODE_SCRIPT_GRANTHA")]
1960    Grantha,
1961    /// Kjohki. Since: 2.42
1962    #[doc(alias = "G_UNICODE_SCRIPT_KHOJKI")]
1963    Khojki,
1964    /// Khudawadi, Sindhi. Since: 2.42
1965    #[doc(alias = "G_UNICODE_SCRIPT_KHUDAWADI")]
1966    Khudawadi,
1967    /// Linear A. Since: 2.42
1968    #[doc(alias = "G_UNICODE_SCRIPT_LINEAR_A")]
1969    LinearA,
1970    /// Mahajani. Since: 2.42
1971    #[doc(alias = "G_UNICODE_SCRIPT_MAHAJANI")]
1972    Mahajani,
1973    /// Manichaean. Since: 2.42
1974    #[doc(alias = "G_UNICODE_SCRIPT_MANICHAEAN")]
1975    Manichaean,
1976    /// Mende Kikakui. Since: 2.42
1977    #[doc(alias = "G_UNICODE_SCRIPT_MENDE_KIKAKUI")]
1978    MendeKikakui,
1979    /// Modi. Since: 2.42
1980    #[doc(alias = "G_UNICODE_SCRIPT_MODI")]
1981    Modi,
1982    /// Mro. Since: 2.42
1983    #[doc(alias = "G_UNICODE_SCRIPT_MRO")]
1984    Mro,
1985    /// Nabataean. Since: 2.42
1986    #[doc(alias = "G_UNICODE_SCRIPT_NABATAEAN")]
1987    Nabataean,
1988    /// Old North Arabian. Since: 2.42
1989    #[doc(alias = "G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN")]
1990    OldNorthArabian,
1991    /// Old Permic. Since: 2.42
1992    #[doc(alias = "G_UNICODE_SCRIPT_OLD_PERMIC")]
1993    OldPermic,
1994    /// Pahawh Hmong. Since: 2.42
1995    #[doc(alias = "G_UNICODE_SCRIPT_PAHAWH_HMONG")]
1996    PahawhHmong,
1997    /// Palmyrene. Since: 2.42
1998    #[doc(alias = "G_UNICODE_SCRIPT_PALMYRENE")]
1999    Palmyrene,
2000    /// Pau Cin Hau. Since: 2.42
2001    #[doc(alias = "G_UNICODE_SCRIPT_PAU_CIN_HAU")]
2002    PauCinHau,
2003    /// Psalter Pahlavi. Since: 2.42
2004    #[doc(alias = "G_UNICODE_SCRIPT_PSALTER_PAHLAVI")]
2005    PsalterPahlavi,
2006    /// Siddham. Since: 2.42
2007    #[doc(alias = "G_UNICODE_SCRIPT_SIDDHAM")]
2008    Siddham,
2009    /// Tirhuta. Since: 2.42
2010    #[doc(alias = "G_UNICODE_SCRIPT_TIRHUTA")]
2011    Tirhuta,
2012    /// Warang Citi. Since: 2.42
2013    #[doc(alias = "G_UNICODE_SCRIPT_WARANG_CITI")]
2014    WarangCiti,
2015    /// Ahom. Since: 2.48
2016    #[doc(alias = "G_UNICODE_SCRIPT_AHOM")]
2017    Ahom,
2018    /// Anatolian Hieroglyphs. Since: 2.48
2019    #[doc(alias = "G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS")]
2020    AnatolianHieroglyphs,
2021    /// Hatran. Since: 2.48
2022    #[doc(alias = "G_UNICODE_SCRIPT_HATRAN")]
2023    Hatran,
2024    /// Multani. Since: 2.48
2025    #[doc(alias = "G_UNICODE_SCRIPT_MULTANI")]
2026    Multani,
2027    /// Old Hungarian. Since: 2.48
2028    #[doc(alias = "G_UNICODE_SCRIPT_OLD_HUNGARIAN")]
2029    OldHungarian,
2030    /// Signwriting. Since: 2.48
2031    #[doc(alias = "G_UNICODE_SCRIPT_SIGNWRITING")]
2032    Signwriting,
2033    /// Adlam. Since: 2.50
2034    #[doc(alias = "G_UNICODE_SCRIPT_ADLAM")]
2035    Adlam,
2036    /// Bhaiksuki. Since: 2.50
2037    #[doc(alias = "G_UNICODE_SCRIPT_BHAIKSUKI")]
2038    Bhaiksuki,
2039    /// Marchen. Since: 2.50
2040    #[doc(alias = "G_UNICODE_SCRIPT_MARCHEN")]
2041    Marchen,
2042    /// Newa. Since: 2.50
2043    #[doc(alias = "G_UNICODE_SCRIPT_NEWA")]
2044    Newa,
2045    /// Osage. Since: 2.50
2046    #[doc(alias = "G_UNICODE_SCRIPT_OSAGE")]
2047    Osage,
2048    /// Tangut. Since: 2.50
2049    #[doc(alias = "G_UNICODE_SCRIPT_TANGUT")]
2050    Tangut,
2051    /// Masaram Gondi. Since: 2.54
2052    #[doc(alias = "G_UNICODE_SCRIPT_MASARAM_GONDI")]
2053    MasaramGondi,
2054    /// Nushu. Since: 2.54
2055    #[doc(alias = "G_UNICODE_SCRIPT_NUSHU")]
2056    Nushu,
2057    /// Soyombo. Since: 2.54
2058    #[doc(alias = "G_UNICODE_SCRIPT_SOYOMBO")]
2059    Soyombo,
2060    /// Zanabazar Square. Since: 2.54
2061    #[doc(alias = "G_UNICODE_SCRIPT_ZANABAZAR_SQUARE")]
2062    ZanabazarSquare,
2063    /// Dogra. Since: 2.58
2064    #[doc(alias = "G_UNICODE_SCRIPT_DOGRA")]
2065    Dogra,
2066    /// Gunjala Gondi. Since: 2.58
2067    #[doc(alias = "G_UNICODE_SCRIPT_GUNJALA_GONDI")]
2068    GunjalaGondi,
2069    /// Hanifi Rohingya. Since: 2.58
2070    #[doc(alias = "G_UNICODE_SCRIPT_HANIFI_ROHINGYA")]
2071    HanifiRohingya,
2072    /// Makasar. Since: 2.58
2073    #[doc(alias = "G_UNICODE_SCRIPT_MAKASAR")]
2074    Makasar,
2075    /// Medefaidrin. Since: 2.58
2076    #[doc(alias = "G_UNICODE_SCRIPT_MEDEFAIDRIN")]
2077    Medefaidrin,
2078    /// Old Sogdian. Since: 2.58
2079    #[doc(alias = "G_UNICODE_SCRIPT_OLD_SOGDIAN")]
2080    OldSogdian,
2081    /// Sogdian. Since: 2.58
2082    #[doc(alias = "G_UNICODE_SCRIPT_SOGDIAN")]
2083    Sogdian,
2084    /// Elym. Since: 2.62
2085    #[doc(alias = "G_UNICODE_SCRIPT_ELYMAIC")]
2086    Elymaic,
2087    /// Nand. Since: 2.62
2088    #[doc(alias = "G_UNICODE_SCRIPT_NANDINAGARI")]
2089    Nandinagari,
2090    /// Rohg. Since: 2.62
2091    #[doc(alias = "G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG")]
2092    NyiakengPuachueHmong,
2093    /// Wcho. Since: 2.62
2094    #[doc(alias = "G_UNICODE_SCRIPT_WANCHO")]
2095    Wancho,
2096    /// Chorasmian. Since: 2.66
2097    #[doc(alias = "G_UNICODE_SCRIPT_CHORASMIAN")]
2098    Chorasmian,
2099    /// Dives Akuru. Since: 2.66
2100    #[doc(alias = "G_UNICODE_SCRIPT_DIVES_AKURU")]
2101    DivesAkuru,
2102    /// Khitan small script. Since: 2.66
2103    #[doc(alias = "G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT")]
2104    KhitanSmallScript,
2105    /// Yezidi. Since: 2.66
2106    #[doc(alias = "G_UNICODE_SCRIPT_YEZIDI")]
2107    Yezidi,
2108    /// Cypro-Minoan. Since: 2.72
2109    #[cfg(feature = "v2_72")]
2110    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
2111    #[doc(alias = "G_UNICODE_SCRIPT_CYPRO_MINOAN")]
2112    CyproMinoan,
2113    /// Old Uyghur. Since: 2.72
2114    #[cfg(feature = "v2_72")]
2115    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
2116    #[doc(alias = "G_UNICODE_SCRIPT_OLD_UYGHUR")]
2117    OldUyghur,
2118    /// Tangsa. Since: 2.72
2119    #[cfg(feature = "v2_72")]
2120    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
2121    #[doc(alias = "G_UNICODE_SCRIPT_TANGSA")]
2122    Tangsa,
2123    /// Toto. Since: 2.72
2124    #[cfg(feature = "v2_72")]
2125    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
2126    #[doc(alias = "G_UNICODE_SCRIPT_TOTO")]
2127    Toto,
2128    /// Vithkuqi. Since: 2.72
2129    #[cfg(feature = "v2_72")]
2130    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
2131    #[doc(alias = "G_UNICODE_SCRIPT_VITHKUQI")]
2132    Vithkuqi,
2133    /// Mathematical notation. Since: 2.72
2134    #[cfg(feature = "v2_72")]
2135    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
2136    #[doc(alias = "G_UNICODE_SCRIPT_MATH")]
2137    Math,
2138    /// Kawi. Since 2.74
2139    #[cfg(feature = "v2_74")]
2140    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
2141    #[doc(alias = "G_UNICODE_SCRIPT_KAWI")]
2142    Kawi,
2143    /// Nag Mundari. Since 2.74
2144    #[cfg(feature = "v2_74")]
2145    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
2146    #[doc(alias = "G_UNICODE_SCRIPT_NAG_MUNDARI")]
2147    NagMundari,
2148    /// Todhri. Since: 2.84
2149    #[cfg(feature = "v2_84")]
2150    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
2151    #[doc(alias = "G_UNICODE_SCRIPT_TODHRI")]
2152    Todhri,
2153    /// Garay. Since: 2.84
2154    #[cfg(feature = "v2_84")]
2155    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
2156    #[doc(alias = "G_UNICODE_SCRIPT_GARAY")]
2157    Garay,
2158    /// Tulu-Tigalari. Since: 2.84
2159    #[cfg(feature = "v2_84")]
2160    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
2161    #[doc(alias = "G_UNICODE_SCRIPT_TULU_TIGALARI")]
2162    TuluTigalari,
2163    /// Sunuwar. Since: 2.84
2164    #[cfg(feature = "v2_84")]
2165    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
2166    #[doc(alias = "G_UNICODE_SCRIPT_SUNUWAR")]
2167    Sunuwar,
2168    /// Gurung Khema. Since: 2.84
2169    #[cfg(feature = "v2_84")]
2170    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
2171    #[doc(alias = "G_UNICODE_SCRIPT_GURUNG_KHEMA")]
2172    GurungKhema,
2173    /// Kirat Rai. Since: 2.84
2174    #[cfg(feature = "v2_84")]
2175    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
2176    #[doc(alias = "G_UNICODE_SCRIPT_KIRAT_RAI")]
2177    KiratRai,
2178    /// Ol Onal. Since: 2.84
2179    #[cfg(feature = "v2_84")]
2180    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
2181    #[doc(alias = "G_UNICODE_SCRIPT_OL_ONAL")]
2182    OlOnal,
2183    #[doc(hidden)]
2184    __Unknown(i32),
2185}
2186
2187impl UnicodeScript {
2188    #[doc(alias = "g_unicode_script_from_iso15924")]
2189    pub fn from_iso15924(iso15924: u32) -> UnicodeScript {
2190        unsafe { from_glib(ffi::g_unicode_script_from_iso15924(iso15924)) }
2191    }
2192
2193    #[doc(alias = "g_unicode_script_to_iso15924")]
2194    pub fn to_iso15924(self) -> u32 {
2195        unsafe { ffi::g_unicode_script_to_iso15924(self.into_glib()) }
2196    }
2197}
2198
2199#[doc(hidden)]
2200impl IntoGlib for UnicodeScript {
2201    type GlibType = ffi::GUnicodeScript;
2202
2203    fn into_glib(self) -> ffi::GUnicodeScript {
2204        match self {
2205            Self::InvalidCode => ffi::G_UNICODE_SCRIPT_INVALID_CODE,
2206            Self::Common => ffi::G_UNICODE_SCRIPT_COMMON,
2207            Self::Inherited => ffi::G_UNICODE_SCRIPT_INHERITED,
2208            Self::Arabic => ffi::G_UNICODE_SCRIPT_ARABIC,
2209            Self::Armenian => ffi::G_UNICODE_SCRIPT_ARMENIAN,
2210            Self::Bengali => ffi::G_UNICODE_SCRIPT_BENGALI,
2211            Self::Bopomofo => ffi::G_UNICODE_SCRIPT_BOPOMOFO,
2212            Self::Cherokee => ffi::G_UNICODE_SCRIPT_CHEROKEE,
2213            Self::Coptic => ffi::G_UNICODE_SCRIPT_COPTIC,
2214            Self::Cyrillic => ffi::G_UNICODE_SCRIPT_CYRILLIC,
2215            Self::Deseret => ffi::G_UNICODE_SCRIPT_DESERET,
2216            Self::Devanagari => ffi::G_UNICODE_SCRIPT_DEVANAGARI,
2217            Self::Ethiopic => ffi::G_UNICODE_SCRIPT_ETHIOPIC,
2218            Self::Georgian => ffi::G_UNICODE_SCRIPT_GEORGIAN,
2219            Self::Gothic => ffi::G_UNICODE_SCRIPT_GOTHIC,
2220            Self::Greek => ffi::G_UNICODE_SCRIPT_GREEK,
2221            Self::Gujarati => ffi::G_UNICODE_SCRIPT_GUJARATI,
2222            Self::Gurmukhi => ffi::G_UNICODE_SCRIPT_GURMUKHI,
2223            Self::Han => ffi::G_UNICODE_SCRIPT_HAN,
2224            Self::Hangul => ffi::G_UNICODE_SCRIPT_HANGUL,
2225            Self::Hebrew => ffi::G_UNICODE_SCRIPT_HEBREW,
2226            Self::Hiragana => ffi::G_UNICODE_SCRIPT_HIRAGANA,
2227            Self::Kannada => ffi::G_UNICODE_SCRIPT_KANNADA,
2228            Self::Katakana => ffi::G_UNICODE_SCRIPT_KATAKANA,
2229            Self::Khmer => ffi::G_UNICODE_SCRIPT_KHMER,
2230            Self::Lao => ffi::G_UNICODE_SCRIPT_LAO,
2231            Self::Latin => ffi::G_UNICODE_SCRIPT_LATIN,
2232            Self::Malayalam => ffi::G_UNICODE_SCRIPT_MALAYALAM,
2233            Self::Mongolian => ffi::G_UNICODE_SCRIPT_MONGOLIAN,
2234            Self::Myanmar => ffi::G_UNICODE_SCRIPT_MYANMAR,
2235            Self::Ogham => ffi::G_UNICODE_SCRIPT_OGHAM,
2236            Self::OldItalic => ffi::G_UNICODE_SCRIPT_OLD_ITALIC,
2237            Self::Oriya => ffi::G_UNICODE_SCRIPT_ORIYA,
2238            Self::Runic => ffi::G_UNICODE_SCRIPT_RUNIC,
2239            Self::Sinhala => ffi::G_UNICODE_SCRIPT_SINHALA,
2240            Self::Syriac => ffi::G_UNICODE_SCRIPT_SYRIAC,
2241            Self::Tamil => ffi::G_UNICODE_SCRIPT_TAMIL,
2242            Self::Telugu => ffi::G_UNICODE_SCRIPT_TELUGU,
2243            Self::Thaana => ffi::G_UNICODE_SCRIPT_THAANA,
2244            Self::Thai => ffi::G_UNICODE_SCRIPT_THAI,
2245            Self::Tibetan => ffi::G_UNICODE_SCRIPT_TIBETAN,
2246            Self::CanadianAboriginal => ffi::G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL,
2247            Self::Yi => ffi::G_UNICODE_SCRIPT_YI,
2248            Self::Tagalog => ffi::G_UNICODE_SCRIPT_TAGALOG,
2249            Self::Hanunoo => ffi::G_UNICODE_SCRIPT_HANUNOO,
2250            Self::Buhid => ffi::G_UNICODE_SCRIPT_BUHID,
2251            Self::Tagbanwa => ffi::G_UNICODE_SCRIPT_TAGBANWA,
2252            Self::Braille => ffi::G_UNICODE_SCRIPT_BRAILLE,
2253            Self::Cypriot => ffi::G_UNICODE_SCRIPT_CYPRIOT,
2254            Self::Limbu => ffi::G_UNICODE_SCRIPT_LIMBU,
2255            Self::Osmanya => ffi::G_UNICODE_SCRIPT_OSMANYA,
2256            Self::Shavian => ffi::G_UNICODE_SCRIPT_SHAVIAN,
2257            Self::LinearB => ffi::G_UNICODE_SCRIPT_LINEAR_B,
2258            Self::TaiLe => ffi::G_UNICODE_SCRIPT_TAI_LE,
2259            Self::Ugaritic => ffi::G_UNICODE_SCRIPT_UGARITIC,
2260            Self::NewTaiLue => ffi::G_UNICODE_SCRIPT_NEW_TAI_LUE,
2261            Self::Buginese => ffi::G_UNICODE_SCRIPT_BUGINESE,
2262            Self::Glagolitic => ffi::G_UNICODE_SCRIPT_GLAGOLITIC,
2263            Self::Tifinagh => ffi::G_UNICODE_SCRIPT_TIFINAGH,
2264            Self::SylotiNagri => ffi::G_UNICODE_SCRIPT_SYLOTI_NAGRI,
2265            Self::OldPersian => ffi::G_UNICODE_SCRIPT_OLD_PERSIAN,
2266            Self::Kharoshthi => ffi::G_UNICODE_SCRIPT_KHAROSHTHI,
2267            Self::Unknown => ffi::G_UNICODE_SCRIPT_UNKNOWN,
2268            Self::Balinese => ffi::G_UNICODE_SCRIPT_BALINESE,
2269            Self::Cuneiform => ffi::G_UNICODE_SCRIPT_CUNEIFORM,
2270            Self::Phoenician => ffi::G_UNICODE_SCRIPT_PHOENICIAN,
2271            Self::PhagsPa => ffi::G_UNICODE_SCRIPT_PHAGS_PA,
2272            Self::Nko => ffi::G_UNICODE_SCRIPT_NKO,
2273            Self::KayahLi => ffi::G_UNICODE_SCRIPT_KAYAH_LI,
2274            Self::Lepcha => ffi::G_UNICODE_SCRIPT_LEPCHA,
2275            Self::Rejang => ffi::G_UNICODE_SCRIPT_REJANG,
2276            Self::Sundanese => ffi::G_UNICODE_SCRIPT_SUNDANESE,
2277            Self::Saurashtra => ffi::G_UNICODE_SCRIPT_SAURASHTRA,
2278            Self::Cham => ffi::G_UNICODE_SCRIPT_CHAM,
2279            Self::OlChiki => ffi::G_UNICODE_SCRIPT_OL_CHIKI,
2280            Self::Vai => ffi::G_UNICODE_SCRIPT_VAI,
2281            Self::Carian => ffi::G_UNICODE_SCRIPT_CARIAN,
2282            Self::Lycian => ffi::G_UNICODE_SCRIPT_LYCIAN,
2283            Self::Lydian => ffi::G_UNICODE_SCRIPT_LYDIAN,
2284            Self::Avestan => ffi::G_UNICODE_SCRIPT_AVESTAN,
2285            Self::Bamum => ffi::G_UNICODE_SCRIPT_BAMUM,
2286            Self::EgyptianHieroglyphs => ffi::G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS,
2287            Self::ImperialAramaic => ffi::G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC,
2288            Self::InscriptionalPahlavi => ffi::G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI,
2289            Self::InscriptionalParthian => ffi::G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN,
2290            Self::Javanese => ffi::G_UNICODE_SCRIPT_JAVANESE,
2291            Self::Kaithi => ffi::G_UNICODE_SCRIPT_KAITHI,
2292            Self::Lisu => ffi::G_UNICODE_SCRIPT_LISU,
2293            Self::MeeteiMayek => ffi::G_UNICODE_SCRIPT_MEETEI_MAYEK,
2294            Self::OldSouthArabian => ffi::G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN,
2295            Self::OldTurkic => ffi::G_UNICODE_SCRIPT_OLD_TURKIC,
2296            Self::Samaritan => ffi::G_UNICODE_SCRIPT_SAMARITAN,
2297            Self::TaiTham => ffi::G_UNICODE_SCRIPT_TAI_THAM,
2298            Self::TaiViet => ffi::G_UNICODE_SCRIPT_TAI_VIET,
2299            Self::Batak => ffi::G_UNICODE_SCRIPT_BATAK,
2300            Self::Brahmi => ffi::G_UNICODE_SCRIPT_BRAHMI,
2301            Self::Mandaic => ffi::G_UNICODE_SCRIPT_MANDAIC,
2302            Self::Chakma => ffi::G_UNICODE_SCRIPT_CHAKMA,
2303            Self::MeroiticCursive => ffi::G_UNICODE_SCRIPT_MEROITIC_CURSIVE,
2304            Self::MeroiticHieroglyphs => ffi::G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS,
2305            Self::Miao => ffi::G_UNICODE_SCRIPT_MIAO,
2306            Self::Sharada => ffi::G_UNICODE_SCRIPT_SHARADA,
2307            Self::SoraSompeng => ffi::G_UNICODE_SCRIPT_SORA_SOMPENG,
2308            Self::Takri => ffi::G_UNICODE_SCRIPT_TAKRI,
2309            Self::BassaVah => ffi::G_UNICODE_SCRIPT_BASSA_VAH,
2310            Self::CaucasianAlbanian => ffi::G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN,
2311            Self::Duployan => ffi::G_UNICODE_SCRIPT_DUPLOYAN,
2312            Self::Elbasan => ffi::G_UNICODE_SCRIPT_ELBASAN,
2313            Self::Grantha => ffi::G_UNICODE_SCRIPT_GRANTHA,
2314            Self::Khojki => ffi::G_UNICODE_SCRIPT_KHOJKI,
2315            Self::Khudawadi => ffi::G_UNICODE_SCRIPT_KHUDAWADI,
2316            Self::LinearA => ffi::G_UNICODE_SCRIPT_LINEAR_A,
2317            Self::Mahajani => ffi::G_UNICODE_SCRIPT_MAHAJANI,
2318            Self::Manichaean => ffi::G_UNICODE_SCRIPT_MANICHAEAN,
2319            Self::MendeKikakui => ffi::G_UNICODE_SCRIPT_MENDE_KIKAKUI,
2320            Self::Modi => ffi::G_UNICODE_SCRIPT_MODI,
2321            Self::Mro => ffi::G_UNICODE_SCRIPT_MRO,
2322            Self::Nabataean => ffi::G_UNICODE_SCRIPT_NABATAEAN,
2323            Self::OldNorthArabian => ffi::G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN,
2324            Self::OldPermic => ffi::G_UNICODE_SCRIPT_OLD_PERMIC,
2325            Self::PahawhHmong => ffi::G_UNICODE_SCRIPT_PAHAWH_HMONG,
2326            Self::Palmyrene => ffi::G_UNICODE_SCRIPT_PALMYRENE,
2327            Self::PauCinHau => ffi::G_UNICODE_SCRIPT_PAU_CIN_HAU,
2328            Self::PsalterPahlavi => ffi::G_UNICODE_SCRIPT_PSALTER_PAHLAVI,
2329            Self::Siddham => ffi::G_UNICODE_SCRIPT_SIDDHAM,
2330            Self::Tirhuta => ffi::G_UNICODE_SCRIPT_TIRHUTA,
2331            Self::WarangCiti => ffi::G_UNICODE_SCRIPT_WARANG_CITI,
2332            Self::Ahom => ffi::G_UNICODE_SCRIPT_AHOM,
2333            Self::AnatolianHieroglyphs => ffi::G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS,
2334            Self::Hatran => ffi::G_UNICODE_SCRIPT_HATRAN,
2335            Self::Multani => ffi::G_UNICODE_SCRIPT_MULTANI,
2336            Self::OldHungarian => ffi::G_UNICODE_SCRIPT_OLD_HUNGARIAN,
2337            Self::Signwriting => ffi::G_UNICODE_SCRIPT_SIGNWRITING,
2338            Self::Adlam => ffi::G_UNICODE_SCRIPT_ADLAM,
2339            Self::Bhaiksuki => ffi::G_UNICODE_SCRIPT_BHAIKSUKI,
2340            Self::Marchen => ffi::G_UNICODE_SCRIPT_MARCHEN,
2341            Self::Newa => ffi::G_UNICODE_SCRIPT_NEWA,
2342            Self::Osage => ffi::G_UNICODE_SCRIPT_OSAGE,
2343            Self::Tangut => ffi::G_UNICODE_SCRIPT_TANGUT,
2344            Self::MasaramGondi => ffi::G_UNICODE_SCRIPT_MASARAM_GONDI,
2345            Self::Nushu => ffi::G_UNICODE_SCRIPT_NUSHU,
2346            Self::Soyombo => ffi::G_UNICODE_SCRIPT_SOYOMBO,
2347            Self::ZanabazarSquare => ffi::G_UNICODE_SCRIPT_ZANABAZAR_SQUARE,
2348            Self::Dogra => ffi::G_UNICODE_SCRIPT_DOGRA,
2349            Self::GunjalaGondi => ffi::G_UNICODE_SCRIPT_GUNJALA_GONDI,
2350            Self::HanifiRohingya => ffi::G_UNICODE_SCRIPT_HANIFI_ROHINGYA,
2351            Self::Makasar => ffi::G_UNICODE_SCRIPT_MAKASAR,
2352            Self::Medefaidrin => ffi::G_UNICODE_SCRIPT_MEDEFAIDRIN,
2353            Self::OldSogdian => ffi::G_UNICODE_SCRIPT_OLD_SOGDIAN,
2354            Self::Sogdian => ffi::G_UNICODE_SCRIPT_SOGDIAN,
2355            Self::Elymaic => ffi::G_UNICODE_SCRIPT_ELYMAIC,
2356            Self::Nandinagari => ffi::G_UNICODE_SCRIPT_NANDINAGARI,
2357            Self::NyiakengPuachueHmong => ffi::G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG,
2358            Self::Wancho => ffi::G_UNICODE_SCRIPT_WANCHO,
2359            Self::Chorasmian => ffi::G_UNICODE_SCRIPT_CHORASMIAN,
2360            Self::DivesAkuru => ffi::G_UNICODE_SCRIPT_DIVES_AKURU,
2361            Self::KhitanSmallScript => ffi::G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT,
2362            Self::Yezidi => ffi::G_UNICODE_SCRIPT_YEZIDI,
2363            #[cfg(feature = "v2_72")]
2364            Self::CyproMinoan => ffi::G_UNICODE_SCRIPT_CYPRO_MINOAN,
2365            #[cfg(feature = "v2_72")]
2366            Self::OldUyghur => ffi::G_UNICODE_SCRIPT_OLD_UYGHUR,
2367            #[cfg(feature = "v2_72")]
2368            Self::Tangsa => ffi::G_UNICODE_SCRIPT_TANGSA,
2369            #[cfg(feature = "v2_72")]
2370            Self::Toto => ffi::G_UNICODE_SCRIPT_TOTO,
2371            #[cfg(feature = "v2_72")]
2372            Self::Vithkuqi => ffi::G_UNICODE_SCRIPT_VITHKUQI,
2373            #[cfg(feature = "v2_72")]
2374            Self::Math => ffi::G_UNICODE_SCRIPT_MATH,
2375            #[cfg(feature = "v2_74")]
2376            Self::Kawi => ffi::G_UNICODE_SCRIPT_KAWI,
2377            #[cfg(feature = "v2_74")]
2378            Self::NagMundari => ffi::G_UNICODE_SCRIPT_NAG_MUNDARI,
2379            #[cfg(feature = "v2_84")]
2380            Self::Todhri => ffi::G_UNICODE_SCRIPT_TODHRI,
2381            #[cfg(feature = "v2_84")]
2382            Self::Garay => ffi::G_UNICODE_SCRIPT_GARAY,
2383            #[cfg(feature = "v2_84")]
2384            Self::TuluTigalari => ffi::G_UNICODE_SCRIPT_TULU_TIGALARI,
2385            #[cfg(feature = "v2_84")]
2386            Self::Sunuwar => ffi::G_UNICODE_SCRIPT_SUNUWAR,
2387            #[cfg(feature = "v2_84")]
2388            Self::GurungKhema => ffi::G_UNICODE_SCRIPT_GURUNG_KHEMA,
2389            #[cfg(feature = "v2_84")]
2390            Self::KiratRai => ffi::G_UNICODE_SCRIPT_KIRAT_RAI,
2391            #[cfg(feature = "v2_84")]
2392            Self::OlOnal => ffi::G_UNICODE_SCRIPT_OL_ONAL,
2393            Self::__Unknown(value) => value,
2394        }
2395    }
2396}
2397
2398#[doc(hidden)]
2399impl FromGlib<ffi::GUnicodeScript> for UnicodeScript {
2400    unsafe fn from_glib(value: ffi::GUnicodeScript) -> Self {
2401        match value {
2402            ffi::G_UNICODE_SCRIPT_INVALID_CODE => Self::InvalidCode,
2403            ffi::G_UNICODE_SCRIPT_COMMON => Self::Common,
2404            ffi::G_UNICODE_SCRIPT_INHERITED => Self::Inherited,
2405            ffi::G_UNICODE_SCRIPT_ARABIC => Self::Arabic,
2406            ffi::G_UNICODE_SCRIPT_ARMENIAN => Self::Armenian,
2407            ffi::G_UNICODE_SCRIPT_BENGALI => Self::Bengali,
2408            ffi::G_UNICODE_SCRIPT_BOPOMOFO => Self::Bopomofo,
2409            ffi::G_UNICODE_SCRIPT_CHEROKEE => Self::Cherokee,
2410            ffi::G_UNICODE_SCRIPT_COPTIC => Self::Coptic,
2411            ffi::G_UNICODE_SCRIPT_CYRILLIC => Self::Cyrillic,
2412            ffi::G_UNICODE_SCRIPT_DESERET => Self::Deseret,
2413            ffi::G_UNICODE_SCRIPT_DEVANAGARI => Self::Devanagari,
2414            ffi::G_UNICODE_SCRIPT_ETHIOPIC => Self::Ethiopic,
2415            ffi::G_UNICODE_SCRIPT_GEORGIAN => Self::Georgian,
2416            ffi::G_UNICODE_SCRIPT_GOTHIC => Self::Gothic,
2417            ffi::G_UNICODE_SCRIPT_GREEK => Self::Greek,
2418            ffi::G_UNICODE_SCRIPT_GUJARATI => Self::Gujarati,
2419            ffi::G_UNICODE_SCRIPT_GURMUKHI => Self::Gurmukhi,
2420            ffi::G_UNICODE_SCRIPT_HAN => Self::Han,
2421            ffi::G_UNICODE_SCRIPT_HANGUL => Self::Hangul,
2422            ffi::G_UNICODE_SCRIPT_HEBREW => Self::Hebrew,
2423            ffi::G_UNICODE_SCRIPT_HIRAGANA => Self::Hiragana,
2424            ffi::G_UNICODE_SCRIPT_KANNADA => Self::Kannada,
2425            ffi::G_UNICODE_SCRIPT_KATAKANA => Self::Katakana,
2426            ffi::G_UNICODE_SCRIPT_KHMER => Self::Khmer,
2427            ffi::G_UNICODE_SCRIPT_LAO => Self::Lao,
2428            ffi::G_UNICODE_SCRIPT_LATIN => Self::Latin,
2429            ffi::G_UNICODE_SCRIPT_MALAYALAM => Self::Malayalam,
2430            ffi::G_UNICODE_SCRIPT_MONGOLIAN => Self::Mongolian,
2431            ffi::G_UNICODE_SCRIPT_MYANMAR => Self::Myanmar,
2432            ffi::G_UNICODE_SCRIPT_OGHAM => Self::Ogham,
2433            ffi::G_UNICODE_SCRIPT_OLD_ITALIC => Self::OldItalic,
2434            ffi::G_UNICODE_SCRIPT_ORIYA => Self::Oriya,
2435            ffi::G_UNICODE_SCRIPT_RUNIC => Self::Runic,
2436            ffi::G_UNICODE_SCRIPT_SINHALA => Self::Sinhala,
2437            ffi::G_UNICODE_SCRIPT_SYRIAC => Self::Syriac,
2438            ffi::G_UNICODE_SCRIPT_TAMIL => Self::Tamil,
2439            ffi::G_UNICODE_SCRIPT_TELUGU => Self::Telugu,
2440            ffi::G_UNICODE_SCRIPT_THAANA => Self::Thaana,
2441            ffi::G_UNICODE_SCRIPT_THAI => Self::Thai,
2442            ffi::G_UNICODE_SCRIPT_TIBETAN => Self::Tibetan,
2443            ffi::G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL => Self::CanadianAboriginal,
2444            ffi::G_UNICODE_SCRIPT_YI => Self::Yi,
2445            ffi::G_UNICODE_SCRIPT_TAGALOG => Self::Tagalog,
2446            ffi::G_UNICODE_SCRIPT_HANUNOO => Self::Hanunoo,
2447            ffi::G_UNICODE_SCRIPT_BUHID => Self::Buhid,
2448            ffi::G_UNICODE_SCRIPT_TAGBANWA => Self::Tagbanwa,
2449            ffi::G_UNICODE_SCRIPT_BRAILLE => Self::Braille,
2450            ffi::G_UNICODE_SCRIPT_CYPRIOT => Self::Cypriot,
2451            ffi::G_UNICODE_SCRIPT_LIMBU => Self::Limbu,
2452            ffi::G_UNICODE_SCRIPT_OSMANYA => Self::Osmanya,
2453            ffi::G_UNICODE_SCRIPT_SHAVIAN => Self::Shavian,
2454            ffi::G_UNICODE_SCRIPT_LINEAR_B => Self::LinearB,
2455            ffi::G_UNICODE_SCRIPT_TAI_LE => Self::TaiLe,
2456            ffi::G_UNICODE_SCRIPT_UGARITIC => Self::Ugaritic,
2457            ffi::G_UNICODE_SCRIPT_NEW_TAI_LUE => Self::NewTaiLue,
2458            ffi::G_UNICODE_SCRIPT_BUGINESE => Self::Buginese,
2459            ffi::G_UNICODE_SCRIPT_GLAGOLITIC => Self::Glagolitic,
2460            ffi::G_UNICODE_SCRIPT_TIFINAGH => Self::Tifinagh,
2461            ffi::G_UNICODE_SCRIPT_SYLOTI_NAGRI => Self::SylotiNagri,
2462            ffi::G_UNICODE_SCRIPT_OLD_PERSIAN => Self::OldPersian,
2463            ffi::G_UNICODE_SCRIPT_KHAROSHTHI => Self::Kharoshthi,
2464            ffi::G_UNICODE_SCRIPT_UNKNOWN => Self::Unknown,
2465            ffi::G_UNICODE_SCRIPT_BALINESE => Self::Balinese,
2466            ffi::G_UNICODE_SCRIPT_CUNEIFORM => Self::Cuneiform,
2467            ffi::G_UNICODE_SCRIPT_PHOENICIAN => Self::Phoenician,
2468            ffi::G_UNICODE_SCRIPT_PHAGS_PA => Self::PhagsPa,
2469            ffi::G_UNICODE_SCRIPT_NKO => Self::Nko,
2470            ffi::G_UNICODE_SCRIPT_KAYAH_LI => Self::KayahLi,
2471            ffi::G_UNICODE_SCRIPT_LEPCHA => Self::Lepcha,
2472            ffi::G_UNICODE_SCRIPT_REJANG => Self::Rejang,
2473            ffi::G_UNICODE_SCRIPT_SUNDANESE => Self::Sundanese,
2474            ffi::G_UNICODE_SCRIPT_SAURASHTRA => Self::Saurashtra,
2475            ffi::G_UNICODE_SCRIPT_CHAM => Self::Cham,
2476            ffi::G_UNICODE_SCRIPT_OL_CHIKI => Self::OlChiki,
2477            ffi::G_UNICODE_SCRIPT_VAI => Self::Vai,
2478            ffi::G_UNICODE_SCRIPT_CARIAN => Self::Carian,
2479            ffi::G_UNICODE_SCRIPT_LYCIAN => Self::Lycian,
2480            ffi::G_UNICODE_SCRIPT_LYDIAN => Self::Lydian,
2481            ffi::G_UNICODE_SCRIPT_AVESTAN => Self::Avestan,
2482            ffi::G_UNICODE_SCRIPT_BAMUM => Self::Bamum,
2483            ffi::G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS => Self::EgyptianHieroglyphs,
2484            ffi::G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC => Self::ImperialAramaic,
2485            ffi::G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI => Self::InscriptionalPahlavi,
2486            ffi::G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN => Self::InscriptionalParthian,
2487            ffi::G_UNICODE_SCRIPT_JAVANESE => Self::Javanese,
2488            ffi::G_UNICODE_SCRIPT_KAITHI => Self::Kaithi,
2489            ffi::G_UNICODE_SCRIPT_LISU => Self::Lisu,
2490            ffi::G_UNICODE_SCRIPT_MEETEI_MAYEK => Self::MeeteiMayek,
2491            ffi::G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN => Self::OldSouthArabian,
2492            ffi::G_UNICODE_SCRIPT_OLD_TURKIC => Self::OldTurkic,
2493            ffi::G_UNICODE_SCRIPT_SAMARITAN => Self::Samaritan,
2494            ffi::G_UNICODE_SCRIPT_TAI_THAM => Self::TaiTham,
2495            ffi::G_UNICODE_SCRIPT_TAI_VIET => Self::TaiViet,
2496            ffi::G_UNICODE_SCRIPT_BATAK => Self::Batak,
2497            ffi::G_UNICODE_SCRIPT_BRAHMI => Self::Brahmi,
2498            ffi::G_UNICODE_SCRIPT_MANDAIC => Self::Mandaic,
2499            ffi::G_UNICODE_SCRIPT_CHAKMA => Self::Chakma,
2500            ffi::G_UNICODE_SCRIPT_MEROITIC_CURSIVE => Self::MeroiticCursive,
2501            ffi::G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS => Self::MeroiticHieroglyphs,
2502            ffi::G_UNICODE_SCRIPT_MIAO => Self::Miao,
2503            ffi::G_UNICODE_SCRIPT_SHARADA => Self::Sharada,
2504            ffi::G_UNICODE_SCRIPT_SORA_SOMPENG => Self::SoraSompeng,
2505            ffi::G_UNICODE_SCRIPT_TAKRI => Self::Takri,
2506            ffi::G_UNICODE_SCRIPT_BASSA_VAH => Self::BassaVah,
2507            ffi::G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN => Self::CaucasianAlbanian,
2508            ffi::G_UNICODE_SCRIPT_DUPLOYAN => Self::Duployan,
2509            ffi::G_UNICODE_SCRIPT_ELBASAN => Self::Elbasan,
2510            ffi::G_UNICODE_SCRIPT_GRANTHA => Self::Grantha,
2511            ffi::G_UNICODE_SCRIPT_KHOJKI => Self::Khojki,
2512            ffi::G_UNICODE_SCRIPT_KHUDAWADI => Self::Khudawadi,
2513            ffi::G_UNICODE_SCRIPT_LINEAR_A => Self::LinearA,
2514            ffi::G_UNICODE_SCRIPT_MAHAJANI => Self::Mahajani,
2515            ffi::G_UNICODE_SCRIPT_MANICHAEAN => Self::Manichaean,
2516            ffi::G_UNICODE_SCRIPT_MENDE_KIKAKUI => Self::MendeKikakui,
2517            ffi::G_UNICODE_SCRIPT_MODI => Self::Modi,
2518            ffi::G_UNICODE_SCRIPT_MRO => Self::Mro,
2519            ffi::G_UNICODE_SCRIPT_NABATAEAN => Self::Nabataean,
2520            ffi::G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN => Self::OldNorthArabian,
2521            ffi::G_UNICODE_SCRIPT_OLD_PERMIC => Self::OldPermic,
2522            ffi::G_UNICODE_SCRIPT_PAHAWH_HMONG => Self::PahawhHmong,
2523            ffi::G_UNICODE_SCRIPT_PALMYRENE => Self::Palmyrene,
2524            ffi::G_UNICODE_SCRIPT_PAU_CIN_HAU => Self::PauCinHau,
2525            ffi::G_UNICODE_SCRIPT_PSALTER_PAHLAVI => Self::PsalterPahlavi,
2526            ffi::G_UNICODE_SCRIPT_SIDDHAM => Self::Siddham,
2527            ffi::G_UNICODE_SCRIPT_TIRHUTA => Self::Tirhuta,
2528            ffi::G_UNICODE_SCRIPT_WARANG_CITI => Self::WarangCiti,
2529            ffi::G_UNICODE_SCRIPT_AHOM => Self::Ahom,
2530            ffi::G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS => Self::AnatolianHieroglyphs,
2531            ffi::G_UNICODE_SCRIPT_HATRAN => Self::Hatran,
2532            ffi::G_UNICODE_SCRIPT_MULTANI => Self::Multani,
2533            ffi::G_UNICODE_SCRIPT_OLD_HUNGARIAN => Self::OldHungarian,
2534            ffi::G_UNICODE_SCRIPT_SIGNWRITING => Self::Signwriting,
2535            ffi::G_UNICODE_SCRIPT_ADLAM => Self::Adlam,
2536            ffi::G_UNICODE_SCRIPT_BHAIKSUKI => Self::Bhaiksuki,
2537            ffi::G_UNICODE_SCRIPT_MARCHEN => Self::Marchen,
2538            ffi::G_UNICODE_SCRIPT_NEWA => Self::Newa,
2539            ffi::G_UNICODE_SCRIPT_OSAGE => Self::Osage,
2540            ffi::G_UNICODE_SCRIPT_TANGUT => Self::Tangut,
2541            ffi::G_UNICODE_SCRIPT_MASARAM_GONDI => Self::MasaramGondi,
2542            ffi::G_UNICODE_SCRIPT_NUSHU => Self::Nushu,
2543            ffi::G_UNICODE_SCRIPT_SOYOMBO => Self::Soyombo,
2544            ffi::G_UNICODE_SCRIPT_ZANABAZAR_SQUARE => Self::ZanabazarSquare,
2545            ffi::G_UNICODE_SCRIPT_DOGRA => Self::Dogra,
2546            ffi::G_UNICODE_SCRIPT_GUNJALA_GONDI => Self::GunjalaGondi,
2547            ffi::G_UNICODE_SCRIPT_HANIFI_ROHINGYA => Self::HanifiRohingya,
2548            ffi::G_UNICODE_SCRIPT_MAKASAR => Self::Makasar,
2549            ffi::G_UNICODE_SCRIPT_MEDEFAIDRIN => Self::Medefaidrin,
2550            ffi::G_UNICODE_SCRIPT_OLD_SOGDIAN => Self::OldSogdian,
2551            ffi::G_UNICODE_SCRIPT_SOGDIAN => Self::Sogdian,
2552            ffi::G_UNICODE_SCRIPT_ELYMAIC => Self::Elymaic,
2553            ffi::G_UNICODE_SCRIPT_NANDINAGARI => Self::Nandinagari,
2554            ffi::G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG => Self::NyiakengPuachueHmong,
2555            ffi::G_UNICODE_SCRIPT_WANCHO => Self::Wancho,
2556            ffi::G_UNICODE_SCRIPT_CHORASMIAN => Self::Chorasmian,
2557            ffi::G_UNICODE_SCRIPT_DIVES_AKURU => Self::DivesAkuru,
2558            ffi::G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT => Self::KhitanSmallScript,
2559            ffi::G_UNICODE_SCRIPT_YEZIDI => Self::Yezidi,
2560            #[cfg(feature = "v2_72")]
2561            ffi::G_UNICODE_SCRIPT_CYPRO_MINOAN => Self::CyproMinoan,
2562            #[cfg(feature = "v2_72")]
2563            ffi::G_UNICODE_SCRIPT_OLD_UYGHUR => Self::OldUyghur,
2564            #[cfg(feature = "v2_72")]
2565            ffi::G_UNICODE_SCRIPT_TANGSA => Self::Tangsa,
2566            #[cfg(feature = "v2_72")]
2567            ffi::G_UNICODE_SCRIPT_TOTO => Self::Toto,
2568            #[cfg(feature = "v2_72")]
2569            ffi::G_UNICODE_SCRIPT_VITHKUQI => Self::Vithkuqi,
2570            #[cfg(feature = "v2_72")]
2571            ffi::G_UNICODE_SCRIPT_MATH => Self::Math,
2572            #[cfg(feature = "v2_74")]
2573            ffi::G_UNICODE_SCRIPT_KAWI => Self::Kawi,
2574            #[cfg(feature = "v2_74")]
2575            ffi::G_UNICODE_SCRIPT_NAG_MUNDARI => Self::NagMundari,
2576            #[cfg(feature = "v2_84")]
2577            ffi::G_UNICODE_SCRIPT_TODHRI => Self::Todhri,
2578            #[cfg(feature = "v2_84")]
2579            ffi::G_UNICODE_SCRIPT_GARAY => Self::Garay,
2580            #[cfg(feature = "v2_84")]
2581            ffi::G_UNICODE_SCRIPT_TULU_TIGALARI => Self::TuluTigalari,
2582            #[cfg(feature = "v2_84")]
2583            ffi::G_UNICODE_SCRIPT_SUNUWAR => Self::Sunuwar,
2584            #[cfg(feature = "v2_84")]
2585            ffi::G_UNICODE_SCRIPT_GURUNG_KHEMA => Self::GurungKhema,
2586            #[cfg(feature = "v2_84")]
2587            ffi::G_UNICODE_SCRIPT_KIRAT_RAI => Self::KiratRai,
2588            #[cfg(feature = "v2_84")]
2589            ffi::G_UNICODE_SCRIPT_OL_ONAL => Self::OlOnal,
2590            value => Self::__Unknown(value),
2591        }
2592    }
2593}
2594
2595impl StaticType for UnicodeScript {
2596    #[inline]
2597    #[doc(alias = "g_unicode_script_get_type")]
2598    fn static_type() -> crate::Type {
2599        unsafe { from_glib(ffi::g_unicode_script_get_type()) }
2600    }
2601}
2602
2603impl crate::HasParamSpec for UnicodeScript {
2604    type ParamSpec = crate::ParamSpecEnum;
2605    type SetValue = Self;
2606    type BuilderFn = fn(&str, Self) -> crate::ParamSpecEnumBuilder<Self>;
2607
2608    fn param_spec_builder() -> Self::BuilderFn {
2609        Self::ParamSpec::builder_with_default
2610    }
2611}
2612
2613impl crate::value::ValueType for UnicodeScript {
2614    type Type = Self;
2615}
2616
2617unsafe impl<'a> crate::value::FromValue<'a> for UnicodeScript {
2618    type Checker = crate::value::GenericValueTypeChecker<Self>;
2619
2620    #[inline]
2621    unsafe fn from_value(value: &'a crate::Value) -> Self {
2622        from_glib(crate::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2623    }
2624}
2625
2626impl ToValue for UnicodeScript {
2627    #[inline]
2628    fn to_value(&self) -> crate::Value {
2629        let mut value = crate::Value::for_value_type::<Self>();
2630        unsafe {
2631            crate::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2632        }
2633        value
2634    }
2635
2636    #[inline]
2637    fn value_type(&self) -> crate::Type {
2638        Self::static_type()
2639    }
2640}
2641
2642impl From<UnicodeScript> for crate::Value {
2643    #[inline]
2644    fn from(v: UnicodeScript) -> Self {
2645        ToValue::to_value(&v)
2646    }
2647}
2648
2649/// These are the possible character classifications from the
2650/// Unicode specification.
2651/// See [Unicode Character Database](http://www.unicode.org/reports/tr44/#General_Category_Values).
2652#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2653#[non_exhaustive]
2654#[doc(alias = "GUnicodeType")]
2655pub enum UnicodeType {
2656    /// General category "Other, Control" (Cc)
2657    #[doc(alias = "G_UNICODE_CONTROL")]
2658    Control,
2659    /// General category "Other, Format" (Cf)
2660    #[doc(alias = "G_UNICODE_FORMAT")]
2661    Format,
2662    /// General category "Other, Not Assigned" (Cn)
2663    #[doc(alias = "G_UNICODE_UNASSIGNED")]
2664    Unassigned,
2665    /// General category "Other, Private Use" (Co)
2666    #[doc(alias = "G_UNICODE_PRIVATE_USE")]
2667    PrivateUse,
2668    /// General category "Other, Surrogate" (Cs)
2669    #[doc(alias = "G_UNICODE_SURROGATE")]
2670    Surrogate,
2671    /// General category "Letter, Lowercase" (Ll)
2672    #[doc(alias = "G_UNICODE_LOWERCASE_LETTER")]
2673    LowercaseLetter,
2674    /// General category "Letter, Modifier" (Lm)
2675    #[doc(alias = "G_UNICODE_MODIFIER_LETTER")]
2676    ModifierLetter,
2677    /// General category "Letter, Other" (Lo)
2678    #[doc(alias = "G_UNICODE_OTHER_LETTER")]
2679    OtherLetter,
2680    /// General category "Letter, Titlecase" (Lt)
2681    #[doc(alias = "G_UNICODE_TITLECASE_LETTER")]
2682    TitlecaseLetter,
2683    /// General category "Letter, Uppercase" (Lu)
2684    #[doc(alias = "G_UNICODE_UPPERCASE_LETTER")]
2685    UppercaseLetter,
2686    /// General category "Mark, Spacing" (Mc)
2687    #[doc(alias = "G_UNICODE_SPACING_MARK")]
2688    SpacingMark,
2689    /// General category "Mark, Enclosing" (Me)
2690    #[doc(alias = "G_UNICODE_ENCLOSING_MARK")]
2691    EnclosingMark,
2692    /// General category "Mark, Nonspacing" (Mn)
2693    #[doc(alias = "G_UNICODE_NON_SPACING_MARK")]
2694    NonSpacingMark,
2695    /// General category "Number, Decimal Digit" (Nd)
2696    #[doc(alias = "G_UNICODE_DECIMAL_NUMBER")]
2697    DecimalNumber,
2698    /// General category "Number, Letter" (Nl)
2699    #[doc(alias = "G_UNICODE_LETTER_NUMBER")]
2700    LetterNumber,
2701    /// General category "Number, Other" (No)
2702    #[doc(alias = "G_UNICODE_OTHER_NUMBER")]
2703    OtherNumber,
2704    /// General category "Punctuation, Connector" (Pc)
2705    #[doc(alias = "G_UNICODE_CONNECT_PUNCTUATION")]
2706    ConnectPunctuation,
2707    /// General category "Punctuation, Dash" (Pd)
2708    #[doc(alias = "G_UNICODE_DASH_PUNCTUATION")]
2709    DashPunctuation,
2710    /// General category "Punctuation, Close" (Pe)
2711    #[doc(alias = "G_UNICODE_CLOSE_PUNCTUATION")]
2712    ClosePunctuation,
2713    /// General category "Punctuation, Final quote" (Pf)
2714    #[doc(alias = "G_UNICODE_FINAL_PUNCTUATION")]
2715    FinalPunctuation,
2716    /// General category "Punctuation, Initial quote" (Pi)
2717    #[doc(alias = "G_UNICODE_INITIAL_PUNCTUATION")]
2718    InitialPunctuation,
2719    /// General category "Punctuation, Other" (Po)
2720    #[doc(alias = "G_UNICODE_OTHER_PUNCTUATION")]
2721    OtherPunctuation,
2722    /// General category "Punctuation, Open" (Ps)
2723    #[doc(alias = "G_UNICODE_OPEN_PUNCTUATION")]
2724    OpenPunctuation,
2725    /// General category "Symbol, Currency" (Sc)
2726    #[doc(alias = "G_UNICODE_CURRENCY_SYMBOL")]
2727    CurrencySymbol,
2728    /// General category "Symbol, Modifier" (Sk)
2729    #[doc(alias = "G_UNICODE_MODIFIER_SYMBOL")]
2730    ModifierSymbol,
2731    /// General category "Symbol, Math" (Sm)
2732    #[doc(alias = "G_UNICODE_MATH_SYMBOL")]
2733    MathSymbol,
2734    /// General category "Symbol, Other" (So)
2735    #[doc(alias = "G_UNICODE_OTHER_SYMBOL")]
2736    OtherSymbol,
2737    /// General category "Separator, Line" (Zl)
2738    #[doc(alias = "G_UNICODE_LINE_SEPARATOR")]
2739    LineSeparator,
2740    /// General category "Separator, Paragraph" (Zp)
2741    #[doc(alias = "G_UNICODE_PARAGRAPH_SEPARATOR")]
2742    ParagraphSeparator,
2743    /// General category "Separator, Space" (Zs)
2744    #[doc(alias = "G_UNICODE_SPACE_SEPARATOR")]
2745    SpaceSeparator,
2746    #[doc(hidden)]
2747    __Unknown(i32),
2748}
2749
2750#[doc(hidden)]
2751impl IntoGlib for UnicodeType {
2752    type GlibType = ffi::GUnicodeType;
2753
2754    fn into_glib(self) -> ffi::GUnicodeType {
2755        match self {
2756            Self::Control => ffi::G_UNICODE_CONTROL,
2757            Self::Format => ffi::G_UNICODE_FORMAT,
2758            Self::Unassigned => ffi::G_UNICODE_UNASSIGNED,
2759            Self::PrivateUse => ffi::G_UNICODE_PRIVATE_USE,
2760            Self::Surrogate => ffi::G_UNICODE_SURROGATE,
2761            Self::LowercaseLetter => ffi::G_UNICODE_LOWERCASE_LETTER,
2762            Self::ModifierLetter => ffi::G_UNICODE_MODIFIER_LETTER,
2763            Self::OtherLetter => ffi::G_UNICODE_OTHER_LETTER,
2764            Self::TitlecaseLetter => ffi::G_UNICODE_TITLECASE_LETTER,
2765            Self::UppercaseLetter => ffi::G_UNICODE_UPPERCASE_LETTER,
2766            Self::SpacingMark => ffi::G_UNICODE_SPACING_MARK,
2767            Self::EnclosingMark => ffi::G_UNICODE_ENCLOSING_MARK,
2768            Self::NonSpacingMark => ffi::G_UNICODE_NON_SPACING_MARK,
2769            Self::DecimalNumber => ffi::G_UNICODE_DECIMAL_NUMBER,
2770            Self::LetterNumber => ffi::G_UNICODE_LETTER_NUMBER,
2771            Self::OtherNumber => ffi::G_UNICODE_OTHER_NUMBER,
2772            Self::ConnectPunctuation => ffi::G_UNICODE_CONNECT_PUNCTUATION,
2773            Self::DashPunctuation => ffi::G_UNICODE_DASH_PUNCTUATION,
2774            Self::ClosePunctuation => ffi::G_UNICODE_CLOSE_PUNCTUATION,
2775            Self::FinalPunctuation => ffi::G_UNICODE_FINAL_PUNCTUATION,
2776            Self::InitialPunctuation => ffi::G_UNICODE_INITIAL_PUNCTUATION,
2777            Self::OtherPunctuation => ffi::G_UNICODE_OTHER_PUNCTUATION,
2778            Self::OpenPunctuation => ffi::G_UNICODE_OPEN_PUNCTUATION,
2779            Self::CurrencySymbol => ffi::G_UNICODE_CURRENCY_SYMBOL,
2780            Self::ModifierSymbol => ffi::G_UNICODE_MODIFIER_SYMBOL,
2781            Self::MathSymbol => ffi::G_UNICODE_MATH_SYMBOL,
2782            Self::OtherSymbol => ffi::G_UNICODE_OTHER_SYMBOL,
2783            Self::LineSeparator => ffi::G_UNICODE_LINE_SEPARATOR,
2784            Self::ParagraphSeparator => ffi::G_UNICODE_PARAGRAPH_SEPARATOR,
2785            Self::SpaceSeparator => ffi::G_UNICODE_SPACE_SEPARATOR,
2786            Self::__Unknown(value) => value,
2787        }
2788    }
2789}
2790
2791#[doc(hidden)]
2792impl FromGlib<ffi::GUnicodeType> for UnicodeType {
2793    unsafe fn from_glib(value: ffi::GUnicodeType) -> Self {
2794        match value {
2795            ffi::G_UNICODE_CONTROL => Self::Control,
2796            ffi::G_UNICODE_FORMAT => Self::Format,
2797            ffi::G_UNICODE_UNASSIGNED => Self::Unassigned,
2798            ffi::G_UNICODE_PRIVATE_USE => Self::PrivateUse,
2799            ffi::G_UNICODE_SURROGATE => Self::Surrogate,
2800            ffi::G_UNICODE_LOWERCASE_LETTER => Self::LowercaseLetter,
2801            ffi::G_UNICODE_MODIFIER_LETTER => Self::ModifierLetter,
2802            ffi::G_UNICODE_OTHER_LETTER => Self::OtherLetter,
2803            ffi::G_UNICODE_TITLECASE_LETTER => Self::TitlecaseLetter,
2804            ffi::G_UNICODE_UPPERCASE_LETTER => Self::UppercaseLetter,
2805            ffi::G_UNICODE_SPACING_MARK => Self::SpacingMark,
2806            ffi::G_UNICODE_ENCLOSING_MARK => Self::EnclosingMark,
2807            ffi::G_UNICODE_NON_SPACING_MARK => Self::NonSpacingMark,
2808            ffi::G_UNICODE_DECIMAL_NUMBER => Self::DecimalNumber,
2809            ffi::G_UNICODE_LETTER_NUMBER => Self::LetterNumber,
2810            ffi::G_UNICODE_OTHER_NUMBER => Self::OtherNumber,
2811            ffi::G_UNICODE_CONNECT_PUNCTUATION => Self::ConnectPunctuation,
2812            ffi::G_UNICODE_DASH_PUNCTUATION => Self::DashPunctuation,
2813            ffi::G_UNICODE_CLOSE_PUNCTUATION => Self::ClosePunctuation,
2814            ffi::G_UNICODE_FINAL_PUNCTUATION => Self::FinalPunctuation,
2815            ffi::G_UNICODE_INITIAL_PUNCTUATION => Self::InitialPunctuation,
2816            ffi::G_UNICODE_OTHER_PUNCTUATION => Self::OtherPunctuation,
2817            ffi::G_UNICODE_OPEN_PUNCTUATION => Self::OpenPunctuation,
2818            ffi::G_UNICODE_CURRENCY_SYMBOL => Self::CurrencySymbol,
2819            ffi::G_UNICODE_MODIFIER_SYMBOL => Self::ModifierSymbol,
2820            ffi::G_UNICODE_MATH_SYMBOL => Self::MathSymbol,
2821            ffi::G_UNICODE_OTHER_SYMBOL => Self::OtherSymbol,
2822            ffi::G_UNICODE_LINE_SEPARATOR => Self::LineSeparator,
2823            ffi::G_UNICODE_PARAGRAPH_SEPARATOR => Self::ParagraphSeparator,
2824            ffi::G_UNICODE_SPACE_SEPARATOR => Self::SpaceSeparator,
2825            value => Self::__Unknown(value),
2826        }
2827    }
2828}
2829
2830impl StaticType for UnicodeType {
2831    #[inline]
2832    #[doc(alias = "g_unicode_type_get_type")]
2833    fn static_type() -> crate::Type {
2834        unsafe { from_glib(ffi::g_unicode_type_get_type()) }
2835    }
2836}
2837
2838impl crate::HasParamSpec for UnicodeType {
2839    type ParamSpec = crate::ParamSpecEnum;
2840    type SetValue = Self;
2841    type BuilderFn = fn(&str, Self) -> crate::ParamSpecEnumBuilder<Self>;
2842
2843    fn param_spec_builder() -> Self::BuilderFn {
2844        Self::ParamSpec::builder_with_default
2845    }
2846}
2847
2848impl crate::value::ValueType for UnicodeType {
2849    type Type = Self;
2850}
2851
2852unsafe impl<'a> crate::value::FromValue<'a> for UnicodeType {
2853    type Checker = crate::value::GenericValueTypeChecker<Self>;
2854
2855    #[inline]
2856    unsafe fn from_value(value: &'a crate::Value) -> Self {
2857        from_glib(crate::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2858    }
2859}
2860
2861impl ToValue for UnicodeType {
2862    #[inline]
2863    fn to_value(&self) -> crate::Value {
2864        let mut value = crate::Value::for_value_type::<Self>();
2865        unsafe {
2866            crate::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2867        }
2868        value
2869    }
2870
2871    #[inline]
2872    fn value_type(&self) -> crate::Type {
2873        Self::static_type()
2874    }
2875}
2876
2877impl From<UnicodeType> for crate::Value {
2878    #[inline]
2879    fn from(v: UnicodeType) -> Self {
2880        ToValue::to_value(&v)
2881    }
2882}
2883
2884/// Error codes returned by #GUri methods.
2885#[cfg(feature = "v2_66")]
2886#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
2887#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2888#[non_exhaustive]
2889#[doc(alias = "GUriError")]
2890pub enum UriError {
2891    /// Generic error if no more specific error is available.
2892    ///     See the error message for details.
2893    #[doc(alias = "G_URI_ERROR_FAILED")]
2894    Failed,
2895    /// The scheme of a URI could not be parsed.
2896    #[doc(alias = "G_URI_ERROR_BAD_SCHEME")]
2897    BadScheme,
2898    /// The user/userinfo of a URI could not be parsed.
2899    #[doc(alias = "G_URI_ERROR_BAD_USER")]
2900    BadUser,
2901    /// The password of a URI could not be parsed.
2902    #[doc(alias = "G_URI_ERROR_BAD_PASSWORD")]
2903    BadPassword,
2904    /// The authentication parameters of a URI could not be parsed.
2905    #[doc(alias = "G_URI_ERROR_BAD_AUTH_PARAMS")]
2906    BadAuthParams,
2907    /// The host of a URI could not be parsed.
2908    #[doc(alias = "G_URI_ERROR_BAD_HOST")]
2909    BadHost,
2910    /// The port of a URI could not be parsed.
2911    #[doc(alias = "G_URI_ERROR_BAD_PORT")]
2912    BadPort,
2913    /// The path of a URI could not be parsed.
2914    #[doc(alias = "G_URI_ERROR_BAD_PATH")]
2915    BadPath,
2916    /// The query of a URI could not be parsed.
2917    #[doc(alias = "G_URI_ERROR_BAD_QUERY")]
2918    BadQuery,
2919    /// The fragment of a URI could not be parsed.
2920    #[doc(alias = "G_URI_ERROR_BAD_FRAGMENT")]
2921    BadFragment,
2922    #[doc(hidden)]
2923    __Unknown(i32),
2924}
2925
2926#[cfg(feature = "v2_66")]
2927#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
2928#[doc(hidden)]
2929impl IntoGlib for UriError {
2930    type GlibType = ffi::GUriError;
2931
2932    #[inline]
2933    fn into_glib(self) -> ffi::GUriError {
2934        match self {
2935            Self::Failed => ffi::G_URI_ERROR_FAILED,
2936            Self::BadScheme => ffi::G_URI_ERROR_BAD_SCHEME,
2937            Self::BadUser => ffi::G_URI_ERROR_BAD_USER,
2938            Self::BadPassword => ffi::G_URI_ERROR_BAD_PASSWORD,
2939            Self::BadAuthParams => ffi::G_URI_ERROR_BAD_AUTH_PARAMS,
2940            Self::BadHost => ffi::G_URI_ERROR_BAD_HOST,
2941            Self::BadPort => ffi::G_URI_ERROR_BAD_PORT,
2942            Self::BadPath => ffi::G_URI_ERROR_BAD_PATH,
2943            Self::BadQuery => ffi::G_URI_ERROR_BAD_QUERY,
2944            Self::BadFragment => ffi::G_URI_ERROR_BAD_FRAGMENT,
2945            Self::__Unknown(value) => value,
2946        }
2947    }
2948}
2949
2950#[cfg(feature = "v2_66")]
2951#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
2952#[doc(hidden)]
2953impl FromGlib<ffi::GUriError> for UriError {
2954    #[inline]
2955    unsafe fn from_glib(value: ffi::GUriError) -> Self {
2956        match value {
2957            ffi::G_URI_ERROR_FAILED => Self::Failed,
2958            ffi::G_URI_ERROR_BAD_SCHEME => Self::BadScheme,
2959            ffi::G_URI_ERROR_BAD_USER => Self::BadUser,
2960            ffi::G_URI_ERROR_BAD_PASSWORD => Self::BadPassword,
2961            ffi::G_URI_ERROR_BAD_AUTH_PARAMS => Self::BadAuthParams,
2962            ffi::G_URI_ERROR_BAD_HOST => Self::BadHost,
2963            ffi::G_URI_ERROR_BAD_PORT => Self::BadPort,
2964            ffi::G_URI_ERROR_BAD_PATH => Self::BadPath,
2965            ffi::G_URI_ERROR_BAD_QUERY => Self::BadQuery,
2966            ffi::G_URI_ERROR_BAD_FRAGMENT => Self::BadFragment,
2967            value => Self::__Unknown(value),
2968        }
2969    }
2970}
2971
2972#[cfg(feature = "v2_66")]
2973#[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
2974impl crate::error::ErrorDomain for UriError {
2975    #[inline]
2976    fn domain() -> crate::Quark {
2977        unsafe { from_glib(ffi::g_uri_error_quark()) }
2978    }
2979
2980    #[inline]
2981    fn code(self) -> i32 {
2982        self.into_glib()
2983    }
2984
2985    #[inline]
2986    #[allow(clippy::match_single_binding)]
2987    fn from(code: i32) -> Option<Self> {
2988        match unsafe { from_glib(code) } {
2989            Self::__Unknown(_) => Some(Self::Failed),
2990            value => Some(value),
2991        }
2992    }
2993}
2994
2995/// The range of possible top-level types of #GVariant instances.
2996#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2997#[non_exhaustive]
2998#[doc(alias = "GVariantClass")]
2999pub enum VariantClass {
3000    /// The #GVariant is a boolean.
3001    #[doc(alias = "G_VARIANT_CLASS_BOOLEAN")]
3002    Boolean,
3003    /// The #GVariant is a byte.
3004    #[doc(alias = "G_VARIANT_CLASS_BYTE")]
3005    Byte,
3006    /// The #GVariant is a signed 16 bit integer.
3007    #[doc(alias = "G_VARIANT_CLASS_INT16")]
3008    Int16,
3009    /// The #GVariant is an unsigned 16 bit integer.
3010    #[doc(alias = "G_VARIANT_CLASS_UINT16")]
3011    Uint16,
3012    /// The #GVariant is a signed 32 bit integer.
3013    #[doc(alias = "G_VARIANT_CLASS_INT32")]
3014    Int32,
3015    /// The #GVariant is an unsigned 32 bit integer.
3016    #[doc(alias = "G_VARIANT_CLASS_UINT32")]
3017    Uint32,
3018    /// The #GVariant is a signed 64 bit integer.
3019    #[doc(alias = "G_VARIANT_CLASS_INT64")]
3020    Int64,
3021    /// The #GVariant is an unsigned 64 bit integer.
3022    #[doc(alias = "G_VARIANT_CLASS_UINT64")]
3023    Uint64,
3024    /// The #GVariant is a file handle index.
3025    #[doc(alias = "G_VARIANT_CLASS_HANDLE")]
3026    Handle,
3027    /// The #GVariant is a double precision floating
3028    ///                          point value.
3029    #[doc(alias = "G_VARIANT_CLASS_DOUBLE")]
3030    Double,
3031    /// The #GVariant is a normal string.
3032    #[doc(alias = "G_VARIANT_CLASS_STRING")]
3033    String,
3034    /// The #GVariant is a D-Bus object path
3035    ///                               string.
3036    #[doc(alias = "G_VARIANT_CLASS_OBJECT_PATH")]
3037    ObjectPath,
3038    /// The #GVariant is a D-Bus signature string.
3039    #[doc(alias = "G_VARIANT_CLASS_SIGNATURE")]
3040    Signature,
3041    /// The #GVariant is a variant.
3042    #[doc(alias = "G_VARIANT_CLASS_VARIANT")]
3043    Variant,
3044    /// The #GVariant is a maybe-typed value.
3045    #[doc(alias = "G_VARIANT_CLASS_MAYBE")]
3046    Maybe,
3047    /// The #GVariant is an array.
3048    #[doc(alias = "G_VARIANT_CLASS_ARRAY")]
3049    Array,
3050    /// The #GVariant is a tuple.
3051    #[doc(alias = "G_VARIANT_CLASS_TUPLE")]
3052    Tuple,
3053    /// The #GVariant is a dictionary entry.
3054    #[doc(alias = "G_VARIANT_CLASS_DICT_ENTRY")]
3055    DictEntry,
3056    #[doc(hidden)]
3057    __Unknown(i32),
3058}
3059
3060#[doc(hidden)]
3061impl IntoGlib for VariantClass {
3062    type GlibType = ffi::GVariantClass;
3063
3064    fn into_glib(self) -> ffi::GVariantClass {
3065        match self {
3066            Self::Boolean => ffi::G_VARIANT_CLASS_BOOLEAN,
3067            Self::Byte => ffi::G_VARIANT_CLASS_BYTE,
3068            Self::Int16 => ffi::G_VARIANT_CLASS_INT16,
3069            Self::Uint16 => ffi::G_VARIANT_CLASS_UINT16,
3070            Self::Int32 => ffi::G_VARIANT_CLASS_INT32,
3071            Self::Uint32 => ffi::G_VARIANT_CLASS_UINT32,
3072            Self::Int64 => ffi::G_VARIANT_CLASS_INT64,
3073            Self::Uint64 => ffi::G_VARIANT_CLASS_UINT64,
3074            Self::Handle => ffi::G_VARIANT_CLASS_HANDLE,
3075            Self::Double => ffi::G_VARIANT_CLASS_DOUBLE,
3076            Self::String => ffi::G_VARIANT_CLASS_STRING,
3077            Self::ObjectPath => ffi::G_VARIANT_CLASS_OBJECT_PATH,
3078            Self::Signature => ffi::G_VARIANT_CLASS_SIGNATURE,
3079            Self::Variant => ffi::G_VARIANT_CLASS_VARIANT,
3080            Self::Maybe => ffi::G_VARIANT_CLASS_MAYBE,
3081            Self::Array => ffi::G_VARIANT_CLASS_ARRAY,
3082            Self::Tuple => ffi::G_VARIANT_CLASS_TUPLE,
3083            Self::DictEntry => ffi::G_VARIANT_CLASS_DICT_ENTRY,
3084            Self::__Unknown(value) => value,
3085        }
3086    }
3087}
3088
3089#[doc(hidden)]
3090impl FromGlib<ffi::GVariantClass> for VariantClass {
3091    unsafe fn from_glib(value: ffi::GVariantClass) -> Self {
3092        match value {
3093            ffi::G_VARIANT_CLASS_BOOLEAN => Self::Boolean,
3094            ffi::G_VARIANT_CLASS_BYTE => Self::Byte,
3095            ffi::G_VARIANT_CLASS_INT16 => Self::Int16,
3096            ffi::G_VARIANT_CLASS_UINT16 => Self::Uint16,
3097            ffi::G_VARIANT_CLASS_INT32 => Self::Int32,
3098            ffi::G_VARIANT_CLASS_UINT32 => Self::Uint32,
3099            ffi::G_VARIANT_CLASS_INT64 => Self::Int64,
3100            ffi::G_VARIANT_CLASS_UINT64 => Self::Uint64,
3101            ffi::G_VARIANT_CLASS_HANDLE => Self::Handle,
3102            ffi::G_VARIANT_CLASS_DOUBLE => Self::Double,
3103            ffi::G_VARIANT_CLASS_STRING => Self::String,
3104            ffi::G_VARIANT_CLASS_OBJECT_PATH => Self::ObjectPath,
3105            ffi::G_VARIANT_CLASS_SIGNATURE => Self::Signature,
3106            ffi::G_VARIANT_CLASS_VARIANT => Self::Variant,
3107            ffi::G_VARIANT_CLASS_MAYBE => Self::Maybe,
3108            ffi::G_VARIANT_CLASS_ARRAY => Self::Array,
3109            ffi::G_VARIANT_CLASS_TUPLE => Self::Tuple,
3110            ffi::G_VARIANT_CLASS_DICT_ENTRY => Self::DictEntry,
3111            value => Self::__Unknown(value),
3112        }
3113    }
3114}