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