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}