1use crate::{Error, Result};
2
3#[derive(Clone, Copy, PartialEq, Debug)]
4#[repr(u8)]
5pub enum JceType {
6 I8 = 0,
7 I16 = 1,
8 I32 = 2,
9 I64 = 3,
10 F32 = 4,
11 F64 = 5,
12 String1 = 6,
13 String4 = 7,
14 Map = 8,
15 List = 9,
16 StructBegin = 10,
17 StructEnd = 11,
18 Zero = 12,
19 Bytes = 13,
20}
21
22impl TryFrom<u8> for JceType {
23 type Error = Error;
24
25 fn try_from(value: u8) -> Result<Self> {
26 match value {
27 0 => Ok(JceType::I8),
28 1 => Ok(JceType::I16),
29 2 => Ok(JceType::I32),
30 3 => Ok(JceType::I64),
31 4 => Ok(JceType::F32),
32 5 => Ok(JceType::F64),
33 6 => Ok(JceType::String1),
34 7 => Ok(JceType::String4),
35 8 => Ok(JceType::Map),
36 9 => Ok(JceType::List),
37 10 => Ok(JceType::StructBegin),
38 11 => Ok(JceType::StructEnd),
39 12 => Ok(JceType::Zero),
40 13 => Ok(JceType::Bytes),
41 _ => Err(Error::UnknownJceType),
42 }
43 }
44}