summaryrefslogtreecommitdiffabout
path: root/include
authorMichael Krelin <hacker@klever.net>2007-11-28 18:01:36 (UTC)
committer Michael Krelin <hacker@klever.net>2007-11-28 18:01:36 (UTC)
commit73d98f3652b498b9a74b183bef395714c7d73fda (patch) (unidiff)
tree0d206adb4e28d321c5050b7c04274cf6a8a97e51 /include
parent7ddb513bec854479fc9efb2a79044a978055d800 (diff)
downloadlibopkele-73d98f3652b498b9a74b183bef395714c7d73fda.zip
libopkele-73d98f3652b498b9a74b183bef395714c7d73fda.tar.gz
libopkele-73d98f3652b498b9a74b183bef395714c7d73fda.tar.bz2
added a trivial expat wrapper
Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (limited to 'include') (more/less context) (ignore whitespace changes)
-rw-r--r--include/Makefile.am2
-rw-r--r--include/opkele/expat.h91
2 files changed, 92 insertions, 1 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index b31786d..0385cfb 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -14,4 +14,4 @@ nobase_include_HEADERS = \
14EXTRA_DIST = \ 14EXTRA_DIST = \
15 opkele/data.h \ 15 opkele/data.h \
16 opkele/util.h \ 16 opkele/util.h \
17 opkele/curl.h 17 opkele/curl.h opkele/expat.h
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
7namespace 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 */