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.
This commit is contained in:
Brad King 2009-02-24 15:43:37 -05:00
parent 506e745c37
commit d033f0d2d1
2 changed files with 13 additions and 5 deletions

View File

@ -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;
}

View File

@ -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);