+#ifndef STLPLUS_PERSISTENT_EXCEPTIONS\r
+#define STLPLUS_PERSISTENT_EXCEPTIONS\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+// Author: Andy Rushton\r
+// Copyright: (c) Southampton University 1999-2004\r
+// (c) Andy Rushton 2004-2009\r
+// License: BSD License, see ../docs/license.html\r
+\r
+// Exceptions thrown by persistence routines\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+#include "persistence_fixes.hpp"\r
+#include <stdexcept>\r
+#include <string>\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+namespace stlplus\r
+{\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+\r
+ // exception thrown if you try to dump or restore an illegal polymorphic type\r
+ class persistent_illegal_type : public std::logic_error\r
+ {\r
+ public:\r
+ persistent_illegal_type(const std::string& type) throw();\r
+ persistent_illegal_type(unsigned key) throw();\r
+ ~persistent_illegal_type(void) throw();\r
+ };\r
+\r
+ // exception thrown if a dump fails for any reason - but typically because the output stream couldn't take the data\r
+ class persistent_dump_failed : public std::runtime_error\r
+ {\r
+ public:\r
+ persistent_dump_failed(const std::string& message) throw();\r
+ ~persistent_dump_failed(void) throw();\r
+ };\r
+\r
+ // exception thrown if you try to restore from an out of date or unrecognised byte stream\r
+ class persistent_restore_failed : public std::runtime_error\r
+ {\r
+ public:\r
+ persistent_restore_failed(const std::string& message) throw();\r
+ ~persistent_restore_failed(void) throw();\r
+ };\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+\r
+} // end namespace stlplus\r
+\r
+#endif\r