From f0510d2f90467de8e8f260b47d79a9baaf9bef17 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 17 Sep 2009 07:15:29 +0200 Subject: Start tracking XSD with git --- libxsd/xsd/cxx/parser/error-handler.txx | 41 +++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 libxsd/xsd/cxx/parser/error-handler.txx (limited to 'libxsd/xsd/cxx/parser/error-handler.txx') diff --git a/libxsd/xsd/cxx/parser/error-handler.txx b/libxsd/xsd/cxx/parser/error-handler.txx new file mode 100644 index 0000000..9b5feb7 --- /dev/null +++ b/libxsd/xsd/cxx/parser/error-handler.txx @@ -0,0 +1,41 @@ +// file : xsd/cxx/parser/error-handler.txx +// author : Boris Kolpackov +// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +namespace xsd +{ + namespace cxx + { + namespace parser + { + template + bool error_handler:: + handle (const std::basic_string& id, + unsigned long line, + unsigned long column, + severity s, + const std::basic_string& message) + { + diagnostics_.push_back ( + error (s == severity::warning + ? cxx::parser::severity::warning + : cxx::parser::severity::error, + id, line, column, message)); + + if (!failed_ && s != severity::warning) + failed_ = true; + + return true; + } + + template + void error_handler:: + throw_if_failed () const + { + if (failed_) + throw parsing (diagnostics_); + } + } + } +} -- cgit v1.1