#ifndef XML_HPP_INCLUDED #define XML_HPP_INCLUDED // Standard C++ #include #include #include class XML { public: void parse(std::istream& in); protected: virtual void handle_start(const std::string& name, const std::vector>& attr) = 0; virtual void handle_end(const std::string& name) = 0; virtual void handle_cdata_start() {} virtual void handle_cdata_end() {} virtual void handle_data(const std::vector&) {} private: static void tag_start(void* me, const char* name, const char* attr[]); static void tag_end(void* me, const char* name); static void cdata_start(void* me); static void cdata_end(void* me); static void data(void* me, const char* dat, int len); }; #endif