libgir/codegen/
trampoline_to_glib.rs

1use crate::{analysis::conversion_type::ConversionType, env, library};
2
3pub trait TrampolineToGlib {
4    fn trampoline_to_glib(&self, env: &env::Env) -> String;
5}
6
7impl TrampolineToGlib for library::Parameter {
8    fn trampoline_to_glib(&self, env: &env::Env) -> String {
9        use crate::analysis::conversion_type::ConversionType::*;
10        match ConversionType::of(env, self.typ) {
11            Direct => String::new(),
12            Scalar | Option | Result { .. } => ".into_glib()".to_owned(),
13            Pointer => to_glib_xxx(self.transfer).to_owned(),
14            Borrow => "/*Not applicable conversion Borrow*/".to_owned(),
15            Unknown => "/*Unknown conversion*/".to_owned(),
16        }
17    }
18}
19
20fn to_glib_xxx(transfer: library::Transfer) -> &'static str {
21    use crate::library::Transfer::*;
22    match transfer {
23        None => "/*Not checked*/.to_glib_none().0",
24        Full => ".to_glib_full()",
25        Container => "/*Not checked*/.to_glib_container().0",
26    }
27}