1use derive_more::From;
2use orion_error::ErrorCode;
3use orion_error::StructError;
4use orion_error::UvsDataFrom;
5use orion_error::UvsReason;
6use orion_error::UvsResFrom;
7use serde::Serialize;
8use thiserror::Error;
9
10#[derive(Error, Debug, Clone, PartialEq, Serialize, From)]
42pub enum OMLCodeReason {
43 #[error("{0}")]
44 Syntax(String),
45 #[from(skip)]
46 #[error("{0}")]
47 NotFound(String),
48 #[error("{0}")]
49 Uvs(UvsReason),
50}
51impl ErrorCode for OMLCodeReason {
52 fn error_code(&self) -> i32 {
53 crate::codes::SysErrorCode::sys_code(self) as i32
54 }
55}
56
57pub type OMLCodeError = StructError<OMLCodeReason>;
58
59pub type OMLCodeResult<T> = Result<T, OMLCodeError>;
60
61#[derive(Error, Debug, PartialEq)]
62pub enum DataErrKind {
63 #[error("format error : {0}\n{1:?} ")]
64 FormatError(String, Option<String>),
65 #[error("not complete")]
66 NotComplete,
67 #[error("no parse data: {0}")]
68 UnParse(String),
69
70 #[error("less data")]
71 LessData,
72 #[error("empty data")]
73 EmptyData,
74 #[error("struct less : {0}")]
75 LessStc(String),
76 #[error("define less : {0}")]
77 LessDef(String),
78}
79impl From<DataErrKind> for OMLCodeReason {
80 fn from(value: DataErrKind) -> Self {
81 OMLCodeReason::from(UvsReason::from_data(format!("{}", value), None))
82 }
83}
84pub type OmlCodeResult<T> = Result<T, OMLCodeError>;
85
86impl From<OMLCodeReason> for UvsReason {
89 fn from(value: OMLCodeReason) -> Self {
90 UvsReason::from_res(value.to_string())
91 }
92}