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