diff options
author | Brad King <brad.king@kitware.com> | 2009-02-24 20:43:37 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-02-24 20:43:37 (GMT) |
commit | d033f0d2d15ddc84b446da0012b809f6cba1597f (patch) | |
tree | 49d378d10f26d20109c1cf76d45933e9e7503a12 | |
parent | 506e745c3744acdc9cb53f0cd71f6be306ce70a1 (diff) | |
download | CMake-d033f0d2d15ddc84b446da0012b809f6cba1597f.zip CMake-d033f0d2d15ddc84b446da0012b809f6cba1597f.tar.gz CMake-d033f0d2d15ddc84b446da0012b809f6cba1597f.tar.bz2 |
ENH: Allow cmXMLParser subclasses to report errors
This tells cmXMLParser to report error messages through virtual method
cmXMLParser::ReportError so that subclasses can override the default
report.
-rw-r--r-- | Source/cmXMLParser.cxx | 15 | ||||
-rw-r--r-- | Source/cmXMLParser.h | 3 |
2 files changed, 13 insertions, 5 deletions
diff --git a/Source/cmXMLParser.cxx b/Source/cmXMLParser.cxx index 7ef6d44..09cc384 100644 --- a/Source/cmXMLParser.cxx +++ b/Source/cmXMLParser.cxx @@ -211,10 +211,15 @@ void cmXMLParserCharacterDataHandler(void* parser, const char* data, //---------------------------------------------------------------------------- void cmXMLParser::ReportXmlParseError() { - std::cerr << "Error parsing XML in stream at line " - << XML_GetCurrentLineNumber(static_cast<XML_Parser>(this->Parser)) - << ": " - << XML_ErrorString(XML_GetErrorCode( - static_cast<XML_Parser>(this->Parser))) << std::endl; + XML_Parser* parser = static_cast<XML_Parser*>(this->Parser); + this->ReportError(XML_GetCurrentLineNumber(parser), + XML_GetCurrentColumnNumber(parser), + XML_ErrorString(XML_GetErrorCode(parser))); } +//---------------------------------------------------------------------------- +void cmXMLParser::ReportError(int line, int, const char* msg) +{ + std::cerr << "Error parsing XML in stream at line " + << line << ": " << msg << std::endl; +} diff --git a/Source/cmXMLParser.h b/Source/cmXMLParser.h index 3580e8c..68def9e 100644 --- a/Source/cmXMLParser.h +++ b/Source/cmXMLParser.h @@ -91,6 +91,9 @@ protected: //! Called by Parse to report an XML syntax error. virtual void ReportXmlParseError(); + /** Called by ReportXmlParseError with basic error info. */ + virtual void ReportError(int line, int column, const char* msg); + //! Utility for convenience of subclasses. Wraps isspace C library // routine. static int IsSpace(char c); |