windows_bindgen/
value.rs

1use super::*;
2
3#[derive(Debug)]
4pub enum Value {
5    Bool(bool),
6    U8(u8),
7    I8(i8),
8    U16(u16),
9    I16(i16),
10    U32(u32),
11    I32(i32),
12    U64(u64),
13    I64(i64),
14    F32(f32),
15    F64(f64),
16    Str(&'static str),
17    String(String),
18    TypeName(TypeName),
19}
20
21impl Value {
22    pub fn write(&self) -> TokenStream {
23        match self {
24            Self::Bool(value) => quote! { #value },
25            Self::U8(value) => quote! { #value },
26            Self::I8(value) => quote! { #value },
27            Self::U16(value) => quote! { #value },
28            Self::I16(value) => quote! { #value },
29            Self::U32(value) => quote! { #value },
30            Self::I32(value) => quote! { #value },
31            Self::U64(value) => quote! { #value },
32            Self::I64(value) => quote! { #value },
33            Self::F32(value) => quote! { #value },
34            Self::F64(value) => quote! { #value },
35            Self::String(value) => {
36                let mut tokens = "\"".to_string();
37
38                for u in value.chars() {
39                    write!(tokens, "{}", u.escape_default()).unwrap();
40                }
41
42                tokens.push('\"');
43                tokens.into()
44            }
45            rest => panic!("{rest:?}"),
46        }
47    }
48}