Skip to main content

windows_metadata/
value.rs

1use super::*;
2
3#[derive(Debug, PartialEq, Clone)]
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    USize(u64),
15    ISize(i64),
16    F32(f32),
17    F64(f64),
18    Utf8(String),
19    Utf16(String),
20    TypeName(TypeName),
21    EnumValue(TypeName, Box<Self>),
22}
23
24impl Value {
25    pub fn ty(&self) -> Type {
26        match self {
27            Self::Bool(..) => Type::Bool,
28            Self::U8(..) => Type::U8,
29            Self::I8(..) => Type::I8,
30            Self::U16(..) => Type::U16,
31            Self::I16(..) => Type::I16,
32            Self::U32(..) => Type::U32,
33            Self::I32(..) => Type::I32,
34            Self::U64(..) => Type::U64,
35            Self::I64(..) => Type::I64,
36            Self::USize(..) => Type::USize,
37            Self::ISize(..) => Type::ISize,
38            Self::F32(..) => Type::F32,
39            Self::F64(..) => Type::F64,
40            Self::Utf8(..) | Self::Utf16(..) => Type::String,
41            Self::TypeName(..) => Type::ClassName(TypeName::named("System", "Type")),
42            Self::EnumValue(tn, _) => Type::ValueName(tn.clone()),
43        }
44    }
45}