--- /dev/null
+#ifndef STLPLUS_PERSISTENT_POINTER\r
+#define STLPLUS_PERSISTENT_POINTER\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
+// Persistence for pointers to persistent objects\r
+\r
+// Warning! The pointer must be a dynamically-allocated type, since the\r
+// implementation uses new/delete\r
+\r
+// Multiple pointers to the same object *will* be restored as multiple pointers\r
+// to the same object. The object is dumped only the first time it is\r
+// encountered along with a "magic key". Subsequent pointers to the same object\r
+// cause only the magic key to be dumped. On restore, the object is only\r
+// restored once and the magic keys are matched up so that the other pointers\r
+// now point to the restored object.\r
+\r
+// Supports null pointers too! If the data field to restore is null and the\r
+// file format non-null, allocates a new T(). If the data field is non-null and\r
+// the file format is null, deletes it and sets it null\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+#include "persistence_fixes.hpp"\r
+#include "persistent_contexts.hpp"\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+namespace stlplus\r
+{\r
+\r
+ template<typename T, typename D>\r
+ void dump_pointer(dump_context&, const T* const data, D dump_fn)\r
+ throw(persistent_dump_failed);\r
+\r
+ template<typename T, typename R>\r
+ void restore_pointer(restore_context&, T*& data, R restore_fn)\r
+ throw(persistent_restore_failed);\r
+\r
+} // end namespace stlplus\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+#include "persistent_pointer.tpp"\r
+#endif\r