From 707cc94fe52463870a9c6c8e2e66eaaa389e601d Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 24 Feb 2009 15:16:26 +0200 Subject: Start tracking XSD/e with git after version 3.0.0 --- libxsde/xsde/cxx/serializer/error.hxx | 121 ++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 libxsde/xsde/cxx/serializer/error.hxx (limited to 'libxsde/xsde/cxx/serializer/error.hxx') diff --git a/libxsde/xsde/cxx/serializer/error.hxx b/libxsde/xsde/cxx/serializer/error.hxx new file mode 100644 index 0000000..62776e9 --- /dev/null +++ b/libxsde/xsde/cxx/serializer/error.hxx @@ -0,0 +1,121 @@ +// file : xsde/cxx/serializer/error.hxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#ifndef XSDE_CXX_SERIALIZER_ERROR_HXX +#define XSDE_CXX_SERIALIZER_ERROR_HXX + +#include +#include + +#include + +#ifdef XSDE_SERIALIZER_VALIDATION +# include +#endif + +namespace xsde +{ + namespace cxx + { + namespace serializer + { + using genx::xml_error; + + // This type is only used when C++ exceptions are not used. + // + struct error + { + enum error_type + { + none, + sys, + xml, + schema, + app + }; + + public: + error_type + type () const; + + // Returns true if there is an error so that you can write + // if (s.error ()) or if (error e = s.error ()). + // + typedef void (error::*bool_convertible) (); + operator bool_convertible () const; + + + // sys + // + public: + error (sys_error::value); + + sys_error + sys_code () const; + + const char* + sys_text () const; + + // xml + // + public: + error (xml_error); + + xml_error + xml_code () const; + + const char* + xml_text () const; + + + // schema + // +#ifdef XSDE_SERIALIZER_VALIDATION + public: + error (schema_error::value); + + schema_error + schema_code () const; + + const char* + schema_text () const; +#endif + + // app + // + public: + error (int app_code); + + int + app_code () const; + + + public: + error (); + + private: + void + true_ (); + + private: + error_type type_; + + union + { + sys_error::value sys; + xml_error xml; +#ifdef XSDE_SERIALIZER_VALIDATION + schema_error::value schema; +#endif + int app; + } code_; + }; + } + } +} + +#include + +#endif // XSDE_CXX_SERIALIZER_ERROR_HXX -- cgit v1.1