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 /lib/expat.cc | |
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-- | lib/expat.cc | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/lib/expat.cc b/lib/expat.cc new file mode 100644 index 0000000..fa6fdde --- a/dev/null +++ b/lib/expat.cc | |||
@@ -0,0 +1,96 @@ | |||
1 | #include <opkele/expat.h> | ||
2 | |||
3 | namespace opkele { | ||
4 | |||
5 | namespace util { | ||
6 | |||
7 | expat_t::~expat_t() throw() { | ||
8 | if(_x) | ||
9 | XML_ParserFree(_x); | ||
10 | } | ||
11 | |||
12 | expat_t& expat_t::operator=(XML_Parser x) { | ||
13 | if(_x) | ||
14 | XML_ParserFree(_x); | ||
15 | _x = x; | ||
16 | } | ||
17 | |||
18 | static void _start_element(void* ud,const XML_Char *n,const XML_Char **a) { | ||
19 | ((expat_t*)ud)->start_element(n,a); | ||
20 | } | ||
21 | static void _end_element(void *ud,const XML_Char *n) { | ||
22 | ((expat_t*)ud)->end_element(n); | ||
23 | } | ||
24 | |||
25 | void expat_t::set_element_handler() { | ||
26 | assert(_x); | ||
27 | XML_SetElementHandler(_x,_start_element,_end_element); | ||
28 | } | ||
29 | |||
30 | static void _character_data(void *ud,const XML_Char *s,int l) { | ||
31 | ((expat_t*)ud)->character_data(s,l); | ||
32 | } | ||
33 | |||
34 | void expat_t::set_character_data_handler() { | ||
35 | assert(_x); | ||
36 | XML_SetCharacterDataHandler(_x,_character_data); | ||
37 | } | ||
38 | |||
39 | static void _processing_instruction(void *ud,const XML_Char *t,const XML_Char *d) { | ||
40 | ((expat_t*)ud)->processing_instruction(t,d); | ||
41 | } | ||
42 | |||
43 | void expat_t::set_processing_instruction_handler() { | ||
44 | assert(_x); | ||
45 | XML_SetProcessingInstructionHandler(_x,_processing_instruction); | ||
46 | } | ||
47 | |||
48 | static void _comment(void *ud,const XML_Char *d) { | ||
49 | ((expat_t*)ud)->comment(d); | ||
50 | } | ||
51 | |||
52 | void expat_t::set_comment_handler() { | ||
53 | assert(_x); | ||
54 | XML_SetCommentHandler(_x,_comment); | ||
55 | } | ||
56 | |||
57 | static void _start_cdata_section(void *ud) { | ||
58 | ((expat_t*)ud)->start_cdata_section(); | ||
59 | } | ||
60 | static void _end_cdata_section(void *ud) { | ||
61 | ((expat_t*)ud)->end_cdata_section(); | ||
62 | } | ||
63 | |||
64 | void expat_t::set_cdata_section_handler() { | ||
65 | assert(_x); | ||
66 | XML_SetCdataSectionHandler(_x,_start_cdata_section,_end_cdata_section); | ||
67 | } | ||
68 | |||
69 | static void _default_handler(void *ud,const XML_Char *s,int l) { | ||
70 | ((expat_t*)ud)->default_handler(s,l); | ||
71 | } | ||
72 | |||
73 | void expat_t::set_default_handler() { | ||
74 | assert(_x); | ||
75 | XML_SetDefaultHandler(_x,_default_handler); | ||
76 | } | ||
77 | void expat_t::set_default_handler_expand() { | ||
78 | assert(_x); | ||
79 | XML_SetDefaultHandlerExpand(_x,_default_handler); | ||
80 | } | ||
81 | |||
82 | static void _start_namespace_decl(void *ud,const XML_Char *p,const XML_Char *u) { | ||
83 | ((expat_t*)ud)->start_namespace_decl(p,u); | ||
84 | } | ||
85 | static void _end_namespace_decl(void *ud,const XML_Char *p) { | ||
86 | ((expat_t*)ud)->end_namespace_decl(p); | ||
87 | } | ||
88 | |||
89 | void expat_t::set_namespace_decl_handler() { | ||
90 | assert(_x); | ||
91 | XML_SetNamespaceDeclHandler(_x,_start_namespace_decl,_end_namespace_decl); | ||
92 | } | ||
93 | |||
94 | } | ||
95 | |||
96 | } | ||