// // $Id: ReaderErrorReporter.h 14717 2009-09-17 20:24:36Z lukas $ // #ifndef _utl_ReaderErrorReporter_h_ #define _utl_ReaderErrorReporter_h_ #include #include #include #include #include namespace utl { /*! \class ReaderErrorReporter \author T. Paul \version $Id: ReaderErrorReporter.h 14717 2009-09-17 20:24:36Z lukas $ \ingroup parsers \brief Reports errors encountered during XML parsing */ class ReaderErrorReporter : public xercesc::ErrorHandler { public: ReaderErrorReporter() : fSawErrors(false) { } void warning(const xercesc::SAXParseException& toCatch); void error(const xercesc::SAXParseException& toCatch); void fatalError(const xercesc::SAXParseException& toCatch); void resetErrors(); bool getSawErrors() const { return fSawErrors; } const std::ostringstream& getMessages() const {return fMessages;} bool fSawErrors; std::ostringstream fMessages; }; class StrX { public: StrX(const XMLCh* const toTranscode) : fLocalForm(0) { // Call the private transcoding method fLocalForm = xercesc::XMLString::transcode(toTranscode); } ~StrX() { if (fLocalForm) xercesc::XMLString::release(&fLocalForm); } const char* localForm() const { return fLocalForm; } private: // since we have pointer data-members we should be careful about copying: StrX(const StrX&); StrX& operator=(const StrX&); char* fLocalForm; }; inline std::ostream& operator<<(std::ostream& target, const StrX& toDump) { return target << toDump.localForm(); } } #endif