///|
/// glTF/GLB 解析错误类型
pub(all) suberror ParseError {
/// 非法 JSON 格式
InvalidJson(msg~ : String)
/// 缺少必需字段
MissingField(field~ : String)
/// 字段类型错误
InvalidFieldType(field~ : String, expected~ : String)
/// 枚举值无法识别
UnknownEnum(field~ : String, value~ : String)
/// GLB 文件魔数不匹配
InvalidGlbMagic
/// GLB 版本不支持
UnsupportedGlbVersion(version~ : Int)
/// 数据超出缓冲区范围
OutOfRange(msg~ : String)
} derive(Debug, Eq)
///|
pub impl Show for ParseError with fn output(self, logger) {
match self {
InvalidJson(msg~) =>
logger.write_string("ParseError: invalid JSON - \{msg}")
MissingField(field~) =>
logger.write_string("ParseError: missing required field '\{field}'")
InvalidFieldType(field~, expected~) =>
logger.write_string(
"ParseError: field '\{field}' has wrong type, expected \{expected}",
)
UnknownEnum(field~, value~) =>
logger.write_string(
"ParseError: unknown enum value '\{value}' for field '\{field}'",
)
InvalidGlbMagic =>
logger.write_string("ParseError: invalid GLB magic bytes")
UnsupportedGlbVersion(version~) =>
logger.write_string(
"ParseError: unsupported GLB version \{version}, expected 2",
)
OutOfRange(msg~) => logger.write_string("ParseError: out of range - \{msg}")
}
}