1 // file : xsd/cxx/xml/dom/bits/error-handler-proxy.txx 2 // copyright : Copyright (c) 2005-2017 Code Synthesis Tools CC 3 // license : GNU GPL v2 + exceptions; see accompanying LICENSE file 4 5 #include <xsd/cxx/xml/string.hxx> 6 7 namespace xsd 8 { 9 namespace cxx 10 { 11 namespace xml 12 { 13 namespace dom 14 { 15 namespace bits 16 { 17 template <typename C> 18 bool error_handler_proxy<C>:: handleError(const xercesc::DOMError & e)19 handleError (const xercesc::DOMError& e) 20 { 21 using xercesc::DOMError; 22 23 if (e.getSeverity() != DOMError::DOM_SEVERITY_WARNING) 24 failed_ = true; 25 26 if (native_eh_) 27 return native_eh_->handleError (e); 28 else 29 { 30 typedef typename error_handler<C>::severity severity; 31 32 severity s (severity::error); 33 34 switch (e.getSeverity()) 35 { 36 case DOMError::DOM_SEVERITY_WARNING: 37 { 38 s = severity::warning; 39 break; 40 } 41 case DOMError::DOM_SEVERITY_ERROR: 42 { 43 s = severity::error; 44 break; 45 } 46 case DOMError::DOM_SEVERITY_FATAL_ERROR: 47 { 48 s = severity::fatal; 49 break; 50 } 51 } 52 53 xercesc::DOMLocator* loc (e.getLocation ()); 54 55 return eh_->handle ( 56 transcode<C> (loc->getURI ()), 57 static_cast<unsigned long> (loc->getLineNumber ()), 58 static_cast<unsigned long> (loc->getColumnNumber ()), 59 s, 60 transcode<C> (e.getMessage ())); 61 } 62 } 63 } 64 } 65 } 66 } 67 } 68