1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT

use glib::translate::*;
use std::fmt;

glib::wrapper! {
    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
    pub struct Encoding(Boxed<ffi::GtkSourceEncoding>);

    match fn {
        copy => |ptr| ffi::gtk_source_encoding_copy(ptr),
        free => |ptr| ffi::gtk_source_encoding_free(ptr),
        type_ => || ffi::gtk_source_encoding_get_type(),
    }
}

impl Encoding {
    /// Gets the character set of the [`Encoding`][crate::Encoding], such as "UTF-8" or
    /// "ISO-8859-1".
    ///
    /// # Returns
    ///
    /// the character set of the [`Encoding`][crate::Encoding].
    #[doc(alias = "gtk_source_encoding_get_charset")]
    #[doc(alias = "get_charset")]
    pub fn charset(&self) -> Option<glib::GString> {
        unsafe { from_glib_none(ffi::gtk_source_encoding_get_charset(self.to_glib_none().0)) }
    }

    /// Gets the name of the [`Encoding`][crate::Encoding] such as "Unicode" or "Western".
    ///
    /// # Returns
    ///
    /// the name of the [`Encoding`][crate::Encoding].
    #[doc(alias = "gtk_source_encoding_get_name")]
    #[doc(alias = "get_name")]
    pub fn name(&self) -> Option<glib::GString> {
        unsafe { from_glib_none(ffi::gtk_source_encoding_get_name(self.to_glib_none().0)) }
    }

    ///
    /// # Returns
    ///
    /// a string representation. Free with `g_free()` when no longer needed.
    #[doc(alias = "gtk_source_encoding_to_string")]
    #[doc(alias = "to_string")]
    pub fn to_str(&self) -> glib::GString {
        unsafe { from_glib_full(ffi::gtk_source_encoding_to_string(self.to_glib_none().0)) }
    }

    /// Gets all encodings.
    ///
    /// # Returns
    ///
    /// a list of
    /// all [`Encoding`][crate::Encoding]'s. Free with `g_slist_free()`.
    #[doc(alias = "gtk_source_encoding_get_all")]
    #[doc(alias = "get_all")]
    pub fn all() -> Vec<Encoding> {
        assert_initialized_main_thread!();
        unsafe { FromGlibPtrContainer::from_glib_container(ffi::gtk_source_encoding_get_all()) }
    }

    /// Gets the [`Encoding`][crate::Encoding] for the current locale. See also `g_get_charset()`.
    ///
    /// # Returns
    ///
    /// the current locale encoding.
    #[doc(alias = "gtk_source_encoding_get_current")]
    #[doc(alias = "get_current")]
    pub fn current() -> Option<Encoding> {
        assert_initialized_main_thread!();
        unsafe { from_glib_none(ffi::gtk_source_encoding_get_current()) }
    }

    /// Gets the list of default candidate encodings to try when loading a file. See
    /// `gtk_source_file_loader_set_candidate_encodings()`.
    ///
    /// This function returns a different list depending on the current locale (i.e.
    /// language, country and default encoding). The UTF-8 encoding and the current
    /// locale encoding are guaranteed to be present in the returned list.
    ///
    /// # Returns
    ///
    /// the list of
    /// default candidate encodings. Free with `g_slist_free()`.
    #[doc(alias = "gtk_source_encoding_get_default_candidates")]
    #[doc(alias = "get_default_candidates")]
    pub fn default_candidates() -> Vec<Encoding> {
        assert_initialized_main_thread!();
        unsafe {
            FromGlibPtrContainer::from_glib_container(
                ffi::gtk_source_encoding_get_default_candidates(),
            )
        }
    }

    /// Gets a [`Encoding`][crate::Encoding] from a character set such as "UTF-8" or
    /// "ISO-8859-1".
    /// ## `charset`
    /// a character set.
    ///
    /// # Returns
    ///
    /// the corresponding [`Encoding`][crate::Encoding], or [`None`]
    /// if not found.
    #[doc(alias = "gtk_source_encoding_get_from_charset")]
    #[doc(alias = "get_from_charset")]
    pub fn from_charset(charset: &str) -> Option<Encoding> {
        assert_initialized_main_thread!();
        unsafe {
            from_glib_none(ffi::gtk_source_encoding_get_from_charset(
                charset.to_glib_none().0,
            ))
        }
    }

    ///
    /// # Returns
    ///
    /// the UTF-8 encoding.
    #[doc(alias = "gtk_source_encoding_get_utf8")]
    #[doc(alias = "get_utf8")]
    pub fn utf8() -> Option<Encoding> {
        assert_initialized_main_thread!();
        unsafe { from_glib_none(ffi::gtk_source_encoding_get_utf8()) }
    }
}

impl fmt::Display for Encoding {
    #[inline]
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        f.write_str(&self.to_str())
    }
}