pango/
language.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use std::str::FromStr;
4
5use glib::translate::*;
6
7use crate::{ffi, Language, Script};
8
9unsafe impl Send for Language {}
10unsafe impl Sync for Language {}
11
12impl Language {
13    #[doc(alias = "get_scripts")]
14    #[doc(alias = "pango_language_get_scripts")]
15    pub fn scripts(&self) -> Vec<Script> {
16        let mut num_scripts = 0;
17        let mut ret = Vec::new();
18
19        unsafe {
20            let scripts: *const ffi::PangoScript = ffi::pango_language_get_scripts(
21                mut_override(self.to_glib_none().0),
22                &mut num_scripts,
23            );
24            if num_scripts > 0 {
25                for x in 0..num_scripts {
26                    ret.push(from_glib(
27                        *(scripts.offset(x as isize) as *const ffi::PangoScript),
28                    ));
29                }
30            }
31            ret
32        }
33    }
34}
35
36impl FromStr for Language {
37    type Err = std::convert::Infallible;
38
39    fn from_str(language: &str) -> Result<Self, Self::Err> {
40        Ok(Self::from_string(language))
41    }
42}