author | Michael Krelin <hacker@klever.net> | 2007-11-28 18:01:36 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2007-11-28 18:01:36 (UTC) |
commit | 73d98f3652b498b9a74b183bef395714c7d73fda (patch) (unidiff) | |
tree | 0d206adb4e28d321c5050b7c04274cf6a8a97e51 /include/opkele/expat.h | |
parent | 7ddb513bec854479fc9efb2a79044a978055d800 (diff) | |
download | libopkele-73d98f3652b498b9a74b183bef395714c7d73fda.zip libopkele-73d98f3652b498b9a74b183bef395714c7d73fda.tar.gz libopkele-73d98f3652b498b9a74b183bef395714c7d73fda.tar.bz2 |
added a trivial expat wrapper
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | include/opkele/expat.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/include/opkele/expat.h b/include/opkele/expat.h new file mode 100644 index 0000000..60c41ac --- a/dev/null +++ b/include/opkele/expat.h | |||
@@ -0,0 +1,91 @@ | |||
1 | #ifndef __OPKELE_EXPAT_H | ||
2 | #define __OPKELE_EXPAT_H | ||
3 | |||
4 | #include <cassert> | ||
5 | #include <expat.h> | ||
6 | |||
7 | namespace opkele { | ||
8 | |||
9 | namespace util { | ||
10 | |||
11 | class expat_t { | ||
12 | public: | ||
13 | XML_Parser _x; | ||
14 | |||
15 | expat_t() : _x(0) { } | ||
16 | expat_t(XML_Parser x) : _x(x) { } | ||
17 | virtual ~expat_t() throw(); | ||
18 | |||
19 | expat_t& operator=(XML_Parser x); | ||
20 | |||
21 | operator const XML_Parser(void) const { return _x; } | ||
22 | operator XML_Parser(void) { return _x; } | ||
23 | |||
24 | inline bool parse(const char *s,int len,bool final=false) { | ||
25 | assert(_x); | ||
26 | return XML_Parse(_x,s,len,final); | ||
27 | } | ||
28 | |||
29 | virtual void start_element(const XML_Char *n,const XML_Char **a) { } | ||
30 | virtual void end_element(const XML_Char *n) { } | ||
31 | void set_element_handler(); | ||
32 | |||
33 | virtual void character_data(const XML_Char *s,int l) { } | ||
34 | void set_character_data_handler(); | ||
35 | |||
36 | virtual void processing_instruction(const XML_Char *t,const XML_Char *d) { } | ||
37 | void set_processing_instruction_handler(); | ||
38 | |||
39 | virtual void comment(const XML_Char *d) { } | ||
40 | void set_comment_handler(); | ||
41 | |||
42 | virtual void start_cdata_section() { } | ||
43 | virtual void end_cdata_section() { } | ||
44 | void set_cdata_section_handler(); | ||
45 | |||
46 | virtual void default_handler(const XML_Char *s,int l) { } | ||
47 | void set_default_handler(); | ||
48 | void set_default_handler_expand(); | ||
49 | |||
50 | virtual void start_namespace_decl(const XML_Char *p,const XML_Char *u) { } | ||
51 | virtual void end_namespace_decl(const XML_Char *p) { } | ||
52 | void set_namespace_decl_handler(); | ||
53 | |||
54 | inline enum XML_Error get_error_code() { | ||
55 | assert(_x); return XML_GetErrorCode(_x); } | ||
56 | static inline const XML_LChar *error_string(XML_Error c) { | ||
57 | return XML_ErrorString(c); } | ||
58 | |||
59 | inline long get_current_byte_index() { | ||
60 | assert(_x); return XML_GetCurrentByteIndex(_x); } | ||
61 | inline int get_current_line_number() { | ||
62 | assert(_x); return XML_GetCurrentLineNumber(_x); } | ||
63 | inline int get_current_column_number() { | ||
64 | assert(_x); return XML_GetCurrentColumnNumber(_x); } | ||
65 | |||
66 | inline void set_user_data() { | ||
67 | assert(_x); XML_SetUserData(_x,this); } | ||
68 | |||
69 | inline bool set_base(const XML_Char *b) { | ||
70 | assert(_x); return XML_SetBase(_x,b); } | ||
71 | inline const XML_Char *get_base() { | ||
72 | assert(_x); return XML_GetBase(_x); } | ||
73 | |||
74 | inline int get_specified_attribute_count() { | ||
75 | assert(_x); return XML_GetSpecifiedAttributeCount(_x); } | ||
76 | |||
77 | inline bool set_param_entity_parsing(enum XML_ParamEntityParsing c) { | ||
78 | assert(_x); return XML_SetParamEntityParsing(_x,c); } | ||
79 | |||
80 | inline static XML_Parser parser_create(const XML_Char *e=0) { | ||
81 | return XML_ParserCreate(e); } | ||
82 | inline static XML_Parser parser_create_ns(const XML_Char *e=0,XML_Char s='\t') { | ||
83 | return XML_ParserCreateNS(e,s); } | ||
84 | |||
85 | }; | ||
86 | |||
87 | } | ||
88 | |||
89 | } | ||
90 | |||
91 | #endif /* __OPKELE_EXPAT_H */ | ||