// file : xsd/cxx/tree/exceptions.txx // author : Boris Kolpackov // copyright : Copyright (c) 2005-2011 Code Synthesis Tools CC // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #include namespace xsd { namespace cxx { namespace tree { // error // template error:: error (tree::severity s, const std::basic_string& id, unsigned long line, unsigned long column, const std::basic_string& message) : severity_ (s), id_ (id), line_ (line), column_ (column), message_ (message) { } template error:: error () : severity_ (tree::severity::error), line_ (0), column_ (0) { } template std::basic_ostream& operator<< (std::basic_ostream& os, const error& e) { return os << e.id () << C (':') << e.line () << C (':') << e.column () << (e.severity () == severity::error ? bits::ex_error_error () : bits::ex_error_warning ()) << e.message (); } // diagnostics // template std::basic_ostream& operator<< (std::basic_ostream& os, const diagnostics& d) { for (typename diagnostics::const_iterator b (d.begin ()), i (b); i != d.end (); ++i) { if (i != b) os << C ('\n'); os << *i; } return os; } // parsing // template parsing:: ~parsing () throw () { } template parsing:: parsing () { } template parsing:: parsing (const tree::diagnostics& diagnostics) : diagnostics_ (diagnostics) { } template const char* parsing:: what () const throw () { return "instance document parsing failed"; } template void parsing:: print (std::basic_ostream& os) const { if (diagnostics_.empty ()) os << bits::ex_parsing_msg (); else os << diagnostics_; } // expected_element // template expected_element:: ~expected_element () throw () { } template expected_element:: expected_element (const std::basic_string& name, const std::basic_string& namespace_) : name_ (name), namespace__ (namespace_) { } template const char* expected_element:: what () const throw () { return "expected element not encountered"; } template void expected_element:: print (std::basic_ostream& os) const { os << bits::ex_eel_expected (); if (!namespace_ ().empty ()) os << namespace_ () << C ('#'); os << name () << C ('\''); } // unexpected_element // template unexpected_element:: ~unexpected_element () throw () { } template unexpected_element:: unexpected_element (const std::basic_string& encountered_name, const std::basic_string& encountered_namespace, const std::basic_string& expected_name, const std::basic_string& expected_namespace) : encountered_name_ (encountered_name), encountered_namespace_ (encountered_namespace), expected_name_ (expected_name), expected_namespace_ (expected_namespace) { } template const char* unexpected_element:: what () const throw () { return "unexpected element encountered"; } template void unexpected_element:: print (std::basic_ostream& os) const { if (!expected_name ().empty ()) { os << bits::ex_uel_expected (); if (!expected_namespace ().empty ()) os << expected_namespace () << C ('#'); os << expected_name () << bits::ex_uel_instead (); if (!encountered_namespace ().empty ()) os << encountered_namespace () << C ('#'); os << encountered_name () << C ('\''); } else { os << bits::ex_uel_unexpected (); if (!encountered_namespace ().empty ()) os << encountered_namespace () << C ('#'); os << encountered_name () << C ('\''); } } // expected_attribute // template expected_attribute:: ~expected_attribute () throw () { } template expected_attribute:: expected_attribute (const std::basic_string& name, const std::basic_string& namespace_) : name_ (name), namespace__ (namespace_) { } template const char* expected_attribute:: what () const throw () { return "expected attribute not encountered"; } template void expected_attribute:: print (std::basic_ostream& os) const { os << bits::ex_eat_expected (); if (!namespace_ ().empty ()) os << namespace_ () << C ('#'); os << name () << C ('\''); } // unexpected_enumerator // template unexpected_enumerator:: ~unexpected_enumerator () throw () { } template unexpected_enumerator:: unexpected_enumerator (const std::basic_string& enumerator) : enumerator_ (enumerator) { } template const char* unexpected_enumerator:: what () const throw () { return "unexpected enumerator encountered"; } template void unexpected_enumerator:: print (std::basic_ostream& os) const { os << bits::ex_uen_unexpected () << enumerator () << C ('\''); } // expected_text_content // template const char* expected_text_content:: what () const throw () { return "expected text content"; } template void expected_text_content:: print (std::basic_ostream& os) const { os << bits::ex_etc_msg (); } // no_type_info // template no_type_info:: ~no_type_info () throw () { } template no_type_info:: no_type_info (const std::basic_string& type_name, const std::basic_string& type_namespace) : type_name_ (type_name), type_namespace_ (type_namespace) { } template const char* no_type_info:: what () const throw () { return "no type information available for a type"; } template void no_type_info:: print (std::basic_ostream& os) const { os << bits::ex_nti_no_type_info (); if (!type_namespace ().empty ()) os << type_namespace () << C ('#'); os << type_name () << C ('\''); } // no_element_info // template no_element_info:: ~no_element_info () throw () { } template no_element_info:: no_element_info (const std::basic_string& element_name, const std::basic_string& element_namespace) : element_name_ (element_name), element_namespace_ (element_namespace) { } template const char* no_element_info:: what () const throw () { return "no parsing or serialization information available for " "an element"; } template void no_element_info:: print (std::basic_ostream& os) const { os << bits::ex_nei_no_element_info (); if (!element_namespace ().empty ()) os << element_namespace () << C ('#'); os << element_name () << C ('\''); } // not_derived // template not_derived:: ~not_derived () throw () { } template not_derived:: not_derived (const std::basic_string& base_type_name, const std::basic_string& base_type_namespace, const std::basic_string& derived_type_name, const std::basic_string& derived_type_namespace) : base_type_name_ (base_type_name), base_type_namespace_ (base_type_namespace), derived_type_name_ (derived_type_name), derived_type_namespace_ (derived_type_namespace) { } template const char* not_derived:: what () const throw () { return "type is not derived"; } template void not_derived:: print (std::basic_ostream& os) const { os << bits::ex_nd_type (); if (!derived_type_namespace ().empty ()) os << derived_type_namespace () << C ('#'); os << derived_type_name () << bits::ex_nd_not_derived (); if (!base_type_namespace ().empty ()) os << base_type_namespace () << C ('#'); os << base_type_name () << C ('\''); } // duplicate_id // template duplicate_id:: ~duplicate_id () throw () { } template duplicate_id:: duplicate_id (const std::basic_string& id) : id_ (id) { } template const char* duplicate_id:: what () const throw () { return "ID already exist"; } template void duplicate_id:: print (std::basic_ostream& os) const { os << bits::ex_di_id () << id () << bits::ex_di_already_exist (); } // serialization // template serialization:: ~serialization () throw () { } template serialization:: serialization () { } template serialization:: serialization (const tree::diagnostics& diagnostics) : diagnostics_ (diagnostics) { } template const char* serialization:: what () const throw () { return "serialization failed"; } template void serialization:: print (std::basic_ostream& os) const { if (diagnostics_.empty ()) os << bits::ex_serialization_msg (); else os << diagnostics_; } // no_prefix_mapping // template no_prefix_mapping:: ~no_prefix_mapping () throw () { } template no_prefix_mapping:: no_prefix_mapping (const std::basic_string& prefix) : prefix_ (prefix) { } template const char* no_prefix_mapping:: what () const throw () { return "no mapping provided for a namespace prefix"; } template void no_prefix_mapping:: print (std::basic_ostream& os) const { os << bits::ex_npm_no_mapping () << prefix () << C ('\''); } // bounds // template const char* bounds:: what () const throw () { return "buffer boundary rules have been violated"; } template void bounds:: print (std::basic_ostream& os) const { os << bits::ex_bounds_msg (); } } } }