Skip to main content

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