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}