root/win32/xsd-3.1.0-i686/libxsd/xsd/cxx/parser/exceptions.ixx @ 111

Revision 111, 2.9 kB (checked in by mido, 16 years ago)

pridana knihovna XSD (a jeji chlebodarkyne XERCES), v ramci Win32 zprovoznen priklad tests/test_xsd_hello.cxx

Line 
1// file      : xsd/cxx/parser/exceptions.ixx
2// author    : Boris Kolpackov <boris@codesynthesis.com>
3// copyright : Copyright (c) 2005-2008 Code Synthesis Tools CC
4// license   : GNU GPL v2 + exceptions; see accompanying LICENSE file
5
6#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
7
8#ifndef XSD_CXX_PARSER_EXCEPTIONS_IXX_CHAR
9#define XSD_CXX_PARSER_EXCEPTIONS_IXX_CHAR
10
11namespace xsd
12{
13  namespace cxx
14  {
15    namespace parser
16    {
17      // error
18      //
19      inline
20      std::basic_ostream<char>&
21      operator<< (std::basic_ostream<char>& os, const error<char>& e)
22      {
23        return os << e.id () << ':' << e.line () << ':' << e.column ()
24                  << (e.severity () == severity::error
25                      ? " error: "
26                      : " warning: ") << e.message ();
27      }
28
29
30      // diagnostics
31      //
32      inline
33      std::basic_ostream<char>&
34      operator<< (std::basic_ostream<char>& os, const diagnostics<char>& d)
35      {
36        for (diagnostics<char>::const_iterator b (d.begin ()), i (b);
37             i != d.end ();
38             ++i)
39        {
40          if (i != b)
41            os << "\n";
42
43          os << *i;
44        }
45
46        return os;
47      }
48
49      // parsing
50      //
51      template<>
52      inline
53      void parsing<char>::
54      print (std::basic_ostream<char>& os) const
55      {
56        if (diagnostics_.empty ())
57          os << "instance document parsing failed";
58        else
59          os << diagnostics_;
60      }
61    }
62  }
63}
64
65#endif // XSD_CXX_PARSER_EXCEPTIONS_IXX_CHAR
66#endif // XSD_CXX_PARSER_USE_CHAR
67
68
69#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
70
71#ifndef XSD_CXX_PARSER_EXCEPTIONS_IXX_WCHAR
72#define XSD_CXX_PARSER_EXCEPTIONS_IXX_WCHAR
73
74namespace xsd
75{
76  namespace cxx
77  {
78    namespace parser
79    {
80      // error
81      //
82      inline
83      std::basic_ostream<wchar_t>&
84      operator<< (std::basic_ostream<wchar_t>& os, const error<wchar_t>& e)
85      {
86        return os << e.id () << L':' << e.line () << L':' << e.column ()
87                  << (e.severity () == severity::error
88                      ? L" error: "
89                      : L" warning: ") << e.message ();
90      }
91
92      // diagnostics
93      //
94      inline
95      std::basic_ostream<wchar_t>&
96      operator<< (std::basic_ostream<wchar_t>& os,
97                  const diagnostics<wchar_t>& d)
98      {
99        for (diagnostics<wchar_t>::const_iterator b (d.begin ()), i (b);
100             i != d.end ();
101             ++i)
102        {
103          if (i != b)
104            os << L"\n";
105
106          os << *i;
107        }
108
109        return os;
110      }
111
112      // parsing
113      //
114      template<>
115      inline
116      void parsing<wchar_t>::
117      print (std::basic_ostream<wchar_t>& os) const
118      {
119        if (diagnostics_.empty ())
120          os << L"instance document parsing failed";
121        else
122          os << diagnostics_;
123      }
124    }
125  }
126}
127
128#endif // XSD_CXX_PARSER_EXCEPTIONS_IXX_WCHAR
129#endif // XSD_CXX_PARSER_USE_WCHAR
Note: See TracBrowser for help on using the browser.