summaryrefslogtreecommitdiff
path: root/libxsd/xsd/cxx/tree/error-handler.txx
blob: c19d3546fc3b7013b7e233df669662c99e8f3246 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// file      : xsd/cxx/tree/error-handler.txx
// author    : Boris Kolpackov <boris@codesynthesis.com>
// copyright : Copyright (c) 2005-2010 Code Synthesis Tools CC
// license   : GNU GPL v2 + exceptions; see accompanying LICENSE file

namespace xsd
{
  namespace cxx
  {
    namespace tree
    {
      template <typename C>
      bool error_handler<C>::
      handle (const std::basic_string<C>& id,
              unsigned long line,
              unsigned long column,
              severity s,
              const std::basic_string<C>& message)
      {
        diagnostics_.push_back (
          error<C> (s == severity::warning
                    ? tree::severity::warning
                    : tree::severity::error, id, line, column, message));

        if (!failed_ && s != severity::warning)
          failed_ = true;

        return true;
      }
    }
  }
}