epoc32/include/stdapis/boost/archive/archive_exception.hpp
branchSymbian2
changeset 2 2fe1408b6811
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/stdapis/boost/archive/archive_exception.hpp	Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,115 @@
+#ifndef BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP
+#define BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP
+
+// MS compatible compilers support #pragma once
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// archive/archive_exception.hpp:
+
+// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+//  See http://www.boost.org for updates, documentation, and revision history.
+
+#include <exception>
+#include <cassert>
+
+namespace boost {
+namespace archive {
+
+//////////////////////////////////////////////////////////////////////
+// exceptions thrown by archives
+//
+class archive_exception : 
+    public virtual std::exception
+{
+public:
+    typedef enum {
+        no_exception,       // initialized without code
+        other_exception,    // any excepton not listed below
+        unregistered_class, // attempt to serialize a pointer of an
+                            // an unregistered class
+        invalid_signature,  // first line of archive does not contain
+                            // expected string
+        unsupported_version,// archive created with library version
+                            // subsequent to this one
+        pointer_conflict,   // an attempt has been made to directly
+                            // serialization::detail an object
+                            // after having already serialzed the same
+                            // object through a pointer.  Were this permited,
+                            // it the archive load would result in the
+                            // creation of an extra copy of the obect.
+        incompatible_native_format, // attempt to read native binary format
+                            // on incompatible platform
+        array_size_too_short,// array being loaded doesn't fit in array allocated
+        stream_error,       // i/o error on stream
+        invalid_class_name, // class name greater than the maximum permitted.
+                            // most likely a corrupted archive or an attempt
+                            // to insert virus via buffer overrun method.
+        unregistered_cast   // base - derived relationship not registered with 
+                            // void_cast_register
+    } exception_code;
+    exception_code code;
+    archive_exception(exception_code c) : 
+        code(c)
+    {}
+    virtual const char *what( ) const throw( )
+    {
+        const char *msg = "programming error";
+        switch(code){
+        case no_exception:
+            msg = "uninitialized exception";
+            break;
+        case unregistered_class:
+            msg = "unregistered class";
+            break;
+        case invalid_signature:
+            msg = "invalid signature";
+            break;
+        case unsupported_version:
+            msg = "unsupported version";
+            break;
+        case pointer_conflict:
+            msg = "pointer conflict";
+            break;
+        case incompatible_native_format:
+            msg = "incompatible native format";
+            break;
+        case array_size_too_short:
+            msg = "array size too short";
+            break;
+        case stream_error:
+            msg = "stream error";
+            break;
+        case invalid_class_name:
+            msg = "class name too long";
+            break;
+        case unregistered_cast:
+            msg = "unregistered void cast";
+            break;
+        case other_exception:
+            // if get here - it indicates a derived exception 
+            // was sliced by passing by value in catch
+            msg = "unknown derived exception";
+            break;
+        default:
+            assert(false);
+            break;
+        }
+        return msg;
+    }
+protected:
+    archive_exception() : 
+         code(no_exception)
+    {}
+};
+
+}// namespace archive
+}// namespace boost
+
+#endif //BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP