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
use crate::{ModelFlag, ObjectType, Space};

define_object!(Model);

impl Model {
    #[doc(alias = "babl_model_with_space")]
    pub fn from_name_with_space(name: &str, space: &Space) -> Self {
        unsafe {
            Self::from_raw_full(ffi::babl_model_with_space(
                name.as_ptr() as *const std::ffi::c_char,
                space.inner(),
            ))
        }
    }

    #[doc(alias = "babl_model")]
    pub fn from_name(name: &str) -> Self {
        unsafe { Self::from_raw_full(ffi::babl_model(name.as_ptr() as *const std::ffi::c_char)) }
    }

    #[doc(alias = "get_flags")]
    #[doc(alias = "babl_get_model_flags")]
    pub fn flags(&self) -> ModelFlag {
        unsafe { std::mem::transmute(ffi::babl_get_model_flags(self.0)) }
    }

    /// Returns whether it's the model name or not
    #[doc(alias = "babl_model_is")]
    pub fn model_is(&self, name: &str) -> bool {
        unsafe { ffi::babl_model_is(self.0, name.as_ptr() as *const std::ffi::c_char) == 1 }
    }
}