// file : xsd/cxx/parser/exceptions.ixx // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR) #ifndef XSD_CXX_PARSER_EXCEPTIONS_IXX_CHAR #define XSD_CXX_PARSER_EXCEPTIONS_IXX_CHAR namespace xsd { namespace cxx { namespace parser { // error // inline std::basic_ostream& operator<< (std::basic_ostream& os, const error& e) { return os << e.id () << ':' << e.line () << ':' << e.column () << (e.severity () == severity::error ? " error: " : " warning: ") << e.message (); } // diagnostics // inline std::basic_ostream& operator<< (std::basic_ostream& os, const diagnostics& d) { for (diagnostics::const_iterator b (d.begin ()), i (b); i != d.end (); ++i) { if (i != b) os << "\n"; os << *i; } return os; } // parsing // template<> inline void parsing:: print (std::basic_ostream& os) const { if (diagnostics_.empty ()) os << "instance document parsing failed"; else os << diagnostics_; } } } } #endif // XSD_CXX_PARSER_EXCEPTIONS_IXX_CHAR #endif // XSD_CXX_PARSER_USE_CHAR #if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR) #ifndef XSD_CXX_PARSER_EXCEPTIONS_IXX_WCHAR #define XSD_CXX_PARSER_EXCEPTIONS_IXX_WCHAR namespace xsd { namespace cxx { namespace parser { // error // inline std::basic_ostream& operator<< (std::basic_ostream& os, const error& e) { return os << e.id () << L':' << e.line () << L':' << e.column () << (e.severity () == severity::error ? L" error: " : L" warning: ") << e.message (); } // diagnostics // inline std::basic_ostream& operator<< (std::basic_ostream& os, const diagnostics& d) { for (diagnostics::const_iterator b (d.begin ()), i (b); i != d.end (); ++i) { if (i != b) os << L"\n"; os << *i; } return os; } // parsing // template<> inline void parsing:: print (std::basic_ostream& os) const { if (diagnostics_.empty ()) os << L"instance document parsing failed"; else os << diagnostics_; } } } } #endif // XSD_CXX_PARSER_EXCEPTIONS_IXX_WCHAR #endif // XSD_CXX_PARSER_USE_WCHAR