Rev 5499 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5598 | pavelyakov | 1 | #ifndef INCLUDE_LIBXML_H |
2 | #define INCLUDE_LIBXML_H |
||
3 | |||
4 | #ifndef INCLUDE_KOLIBRI_H |
||
5 | #include "../lib/kolibri.h" |
||
6 | #endif |
||
7 | |||
8 | #ifndef INCLUDE_DLL_H |
||
9 | #include "../lib/dll.h" |
||
10 | #endif |
||
5473 | punk_joker | 11 | dword XML = #aXML_lib; |
12 | char aXML_lib[] = "/sys/lib/xml.obj"; |
||
13 | |||
14 | dword XML_lib_init = #aXMLlib_init; |
||
15 | |||
16 | dword initializeParser = #aInitializeParser; |
||
17 | dword releaseParser = #aReleaseParser; |
||
18 | dword parse = #aParse; |
||
19 | dword initializeClassParser = #aInitializeClassParser; |
||
20 | dword releaseCkassParser = #aReleaseClassParser; |
||
21 | dword classFromElement = #aClassFromElement; |
||
22 | dword classFromString = #aClassFromString; |
||
23 | |||
24 | $DD 2 dup 0 |
||
25 | |||
26 | char aXMLlib_init [] = "lib_init"; |
||
27 | char aInitializeParser[] = "ax_initializeParser"; |
||
28 | char aReleaseParser[] = "ax_releaseParser"; |
||
29 | char aParse[] = "ax_parse"; |
||
30 | char aInitializeClassParser[] = "ax_initializeClassParser"; |
||
31 | char aReleaseClassParser[] = "ax_releaseClassParser"; |
||
32 | char aClassFromElement[] = "ax_classFromElement"; |
||
33 | char aClassFromString[] = "ax_classFromString"; |
||
34 | |||
35 | //----------------------------------------------------------------------------- |
||
36 | // Error Codes |
||
37 | //----------------------------------------------------------------------------- |
||
38 | #define RC_OK 0 // everything is ok |
||
39 | #define RC_MEMORY 1 // out of memory |
||
40 | |||
41 | #define RC_EMPTY_NAME 10 // name empty or not defined |
||
42 | #define RC_ATTR_DEFINED 11 // attribute already defined |
||
43 | #define RC_ELEM_DEFINED 12 // element already defined |
||
44 | #define RC_SCHEMA_EMPTY 13 // schema does not contains a document |
||
45 | #define RC_DOCUMENT_DEFINED 14 // schema contains more than one document |
||
46 | #define RC_UNDEFINED_CLASS 15 // can't find collection in reference |
||
47 | #define RC_UNDEFINED_GROUP 16 // can't find a group in include |
||
48 | #define RC_INVALID_ID 17 // id is not a valid number |
||
49 | #define RC_INVALID_IGNORE 18 // ignore is not 'yes' or 'no' |
||
50 | |||
51 | #define RC_INVALID_ENTITY_REFERENCE 20 // must be amp, quot, lt, gt, or apos |
||
52 | #define RC_UNEXPECTED_END 21 // found last char too early |
||
53 | #define RC_INVALID_CHAR 22 // wrong char |
||
54 | #define RC_OVERFLOW 23 // number to big in char reference |
||
55 | #define RC_NO_START_TAG 24 // xml does not start with a tag |
||
56 | #define RC_TAG_MISMATCH 25 // invalid close tag |
||
57 | #define RC_INVALID_TAG 26 // invalid root element |
||
58 | #define RC_INVALID_ATTRIBUTE 27 // unknown attribute |
||
59 | #define RC_INVALID_PI 28 // invalid processing instruction ( |
||
60 | #define RC_INVALID_DOCTYPE 29 // duplicate doctype or after main element |
||
61 | #define RC_VERSION_EXPECTED 30 // version is missing in xml declaration |
||
62 | |||
63 | //----------------------------------------------------------------------------- |
||
64 | // Structures |
||
65 | //----------------------------------------------------------------------------- |
||
66 | |||
67 | struct AXElementClass |
||
68 | { |
||
69 | dword offset; // (int) Offset of the element in attribute list |
||
70 | dword name; // (char*) Name of the element (not zero terminated) |
||
71 | dword nameLimit; // (char*) End of the name of the element |
||
72 | dword size; // (unsigned int) size in bytes of an element of this class |
||
73 | dword id; // (unsigned int) container, text or mixed |
||
74 | dword type; // (unsigned int) container, text or mixed |
||
75 | dword propertyCount; // (unsigned int) number of attributes and text elements |
||
76 | dword childCount; // (unsigned int) number of child classes |
||
77 | dword attributes; // (int*) (internal) attribute map |
||
78 | dword elements; // (int*) (internal) element map |
||
79 | dword children; // (AXElementClass*) The list of child classes. |
||
80 | // The order is the one defined in the class |
||
81 | // definition file. |
||
82 | dword reserved; // (int) |
||
83 | dword reserved2; // (void*) |
||
84 | }; |
||
85 | |||
86 | struct AXClassContext |
||
87 | { |
||
88 | dword base; // (void*) |
||
89 | dword limit; // (void*) |
||
90 | dword chunks; // (void*) |
||
91 | dword chunkSize; // (int) |
||
92 | dword errorCode; // (int) |
||
93 | dword line; // (int) |
||
94 | dword column; // (int) |
||
95 | dword classes; // (AXElementClass**) all global classes |
||
96 | dword rootClass; // (AXElementClass*) the root class |
||
97 | dword rootElement; // (AXElement*) |
||
98 | }; |
||
99 | |||
100 | struct AXAttribute |
||
101 | { |
||
102 | dword begin; // (const char*) the value (not zero terminated) |
||
103 | // This slot can also contain an element if |
||
104 | // a |
||
105 | // use ax_getElement() to retrieve it. |
||
106 | dword limit; // (const char*) the end of the value |
||
107 | }; |
||
108 | |||
109 | struct AXElement |
||
110 | { |
||
111 | dword id; // (int) the class of the element |
||
112 | dword nextSibling; // (AXElement*) the next sibling element |
||
113 | dword firstChild; // (AXElement*) the first child element |
||
114 | dword lastChild; // (AXElement*) the last child element |
||
115 | AXAttribute reserved; // (AXAttribute) do not use |
||
116 | AXAttribute attributes; // (AXAttribute[]) the array of attributes |
||
117 | }; |
||
118 | |||
119 | struct AXParseContext |
||
120 | { |
||
121 | dword base; // (void*) |
||
122 | dword limit; // (void*) |
||
123 | dword chunks; // (void*) |
||
124 | dword chunkSize; // (int) |
||
125 | dword errorCode; // (int) |
||
126 | dword source; // (const char*) |
||
127 | dword current; // (const char*) |
||
128 | dword line; // (int) |
||
129 | dword column; // (int) |
||
130 | dword root; // (AXElement*) |
||
131 | AXAttribute version; // (AXAttribute) |
||
132 | AXAttribute encoding; // (AXAttribute) |
||
133 | dword strict; // (int) |
||
134 | dword reserved1; // (int) |
||
135 | AXElement reserved2; // (AXElement) |
||
5598 | pavelyakov | 136 | }; |
137 | |||
138 | #endif?xml) |