#ifndef LXWEATHER_LIBXMLPARSER_H_ #define LXWEATHER_LIBXMLPARSER_H_ #include "parser.h" #include namespace LXWeather { /* forward declarations */ class Location; class Forecast; class LibXMLParser : public Parser { public: LibXMLParser(pthread_mutex_t *mutex); virtual ~LibXMLParser(); virtual std::vector parseLocationList(const std::string &data); virtual void parseForecast(const std::string &data, Forecast *forecast); protected: class XPATHWrapper { public: XPATHWrapper() : pContext_(NULL) { xmlXPathInit(); } ~NanoHTTPWrapper() { xmlNanoHTTPClose(pContext_); } std::string get(const std::string &URI, int *retcode); private: void *pContext_; }; private: pthread_mutex_t *mutex_; }; } /* end namespace LXWeather */ #endif /* LXWEATHER_LIBXMLPARSER_H_ */