--- /dev/null
+#ifndef STLPLUS_PERSISTENT_XREF\r
+#define STLPLUS_PERSISTENT_XREF\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 cross-references to persistent objects\r
+\r
+// A cross-reference is a pointer to an object that has definitely been dumped\r
+// already by one of dump_pointer, dump_interface or dump_callback, i.e. by\r
+// one of the dump routines for pointers to objects.\r
+\r
+// These are typically used in data structures as back-pointers or pointers\r
+// between nodes.\r
+\r
+// For example, you may have a tree with cross links. Dump the tree as the\r
+// primary data structure first, then dump the cross links as cross-references\r
+// afterwards. The whole tree must be dumped before any cross-references to\r
+// ensure that all cross-references are known to the persistence system.\r
+\r
+// These functions will throw an exception if the cross-reference points to\r
+// something not dumped before.\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+#include "persistence_fixes.hpp"\r
+#include "persistent_contexts.hpp"\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+namespace stlplus\r
+{\r
+\r
+ template<typename T>\r
+ void dump_xref(dump_context&, const T* const data)\r
+ throw(persistent_dump_failed);\r
+\r
+ template<typename T>\r
+ void restore_xref(restore_context&, T*& data)\r
+ throw(persistent_restore_failed);\r
+\r
+} // end namespace stlplus\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+#include "persistent_xref.tpp"\r
+#endif\r