rusty_xml_parser/
error.rs1use std::fmt;
4
5pub const XML_ERR_OK: i32 = 0;
6pub const XML_ERR_INTERNAL_ERROR: i32 = 1;
7pub const XML_ERR_NO_MEMORY: i32 = 2;
8pub const XML_ERR_DOCUMENT_START: i32 = 3;
9pub const XML_ERR_DOCUMENT_EMPTY: i32 = 4;
10pub const XML_ERR_DOCUMENT_END: i32 = 5;
11pub const XML_ERR_INVALID_HEX_CHARREF: i32 = 6;
12pub const XML_ERR_INVALID_DEC_CHARREF: i32 = 7;
13pub const XML_ERR_INVALID_CHARREF: i32 = 8;
14pub const XML_ERR_INVALID_CHAR: i32 = 9;
15pub const XML_ERR_ENTITYREF_NO_NAME: i32 = 22;
16pub const XML_ERR_ENTITYREF_SEMICOL_MISSING: i32 = 23;
17pub const XML_ERR_UNDECLARED_ENTITY: i32 = 26;
18pub const XML_ERR_UNSUPPORTED_ENCODING: i32 = 32;
19pub const XML_ERR_LT_IN_ATTRIBUTE: i32 = 38;
20pub const XML_ERR_ATTRIBUTE_NOT_STARTED: i32 = 39;
21pub const XML_ERR_ATTRIBUTE_WITHOUT_VALUE: i32 = 41;
22pub const XML_ERR_ATTRIBUTE_REDEFINED: i32 = 42;
23pub const XML_ERR_LITERAL_NOT_FINISHED: i32 = 44;
24pub const XML_ERR_COMMENT_NOT_FINISHED: i32 = 45;
25pub const XML_ERR_PI_NOT_FINISHED: i32 = 47;
26pub const XML_ERR_XMLDECL_NOT_FINISHED: i32 = 57;
27pub const XML_ERR_MISPLACED_CDATA_END: i32 = 62;
28pub const XML_ERR_CDATA_NOT_FINISHED: i32 = 63;
29pub const XML_ERR_RESERVED_XML_NAME: i32 = 64;
30pub const XML_ERR_SPACE_REQUIRED: i32 = 65;
31pub const XML_ERR_NAME_REQUIRED: i32 = 68;
32pub const XML_ERR_GT_REQUIRED: i32 = 73;
33pub const XML_ERR_LT_REQUIRED: i32 = 72;
34pub const XML_ERR_EQUAL_REQUIRED: i32 = 75;
35pub const XML_ERR_TAG_NAME_MISMATCH: i32 = 76;
36pub const XML_ERR_TAG_NOT_FINISHED: i32 = 77;
37pub const XML_ERR_ENCODING_NAME: i32 = 79;
38pub const XML_ERR_HYPHEN_IN_COMMENT: i32 = 80;
39pub const XML_ERR_EXTRA_CONTENT: i32 = 86;
40pub const XML_WAR_NS_URI_RELATIVE: i32 = 100;
41pub const XML_NS_ERR_XML_NAMESPACE: i32 = 200;
42pub const XML_NS_ERR_UNDEFINED_NAMESPACE: i32 = 201;
43pub const XML_NS_ERR_QNAME: i32 = 202;
44pub const XML_NS_ERR_ATTRIBUTE_REDEFINED: i32 = 203;
45
46#[derive(Clone, Debug, PartialEq, Eq)]
48pub struct XmlError {
49 pub code: i32,
50 pub message: String,
51 pub line: u32,
52 pub col: u32,
53}
54
55impl fmt::Display for XmlError {
56 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
57 write!(
58 f,
59 "{}:{}: error code {}: {}",
60 self.line, self.col, self.code, self.message
61 )
62 }
63}
64
65impl std::error::Error for XmlError {}
66
67impl XmlError {
68 pub fn new(code: i32, message: impl Into<String>, line: u32, col: u32) -> Self {
69 Self {
70 code,
71 message: message.into(),
72 line,
73 col,
74 }
75 }
76}