| 1 | use super::*; |
| 2 | |
| 3 | impl std::fmt::Debug for Constant { |
| 4 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
| 5 | f.debug_tuple(name:"Constant" ).field(&self.value()).finish() |
| 6 | } |
| 7 | } |
| 8 | |
| 9 | impl Constant { |
| 10 | pub fn ty(&self) -> Type { |
| 11 | Type::from_element_type(self.usize(column:0)).unwrap() |
| 12 | } |
| 13 | |
| 14 | pub fn value(&self) -> Value { |
| 15 | let mut blob: Blob = self.blob(column:2); |
| 16 | |
| 17 | match self.ty() { |
| 18 | Type::I8 => Value::I8(blob.read_i8()), |
| 19 | Type::U8 => Value::U8(blob.read_u8()), |
| 20 | Type::I16 => Value::I16(blob.read_i16()), |
| 21 | Type::U16 => Value::U16(blob.read_u16()), |
| 22 | Type::I32 => Value::I32(blob.read_i32()), |
| 23 | Type::U32 => Value::U32(blob.read_u32()), |
| 24 | Type::I64 => Value::I64(blob.read_i64()), |
| 25 | Type::U64 => Value::U64(blob.read_u64()), |
| 26 | Type::F32 => Value::F32(blob.read_f32()), |
| 27 | Type::F64 => Value::F64(blob.read_f64()), |
| 28 | Type::String => Value::String(blob.read_utf16()), |
| 29 | rest: Type => panic!(" {rest:?}" ), |
| 30 | } |
| 31 | } |
| 32 | } |
| 33 | |