]> Dogcows Code - chaz/yoink/blobdiff - src/stlplus/persistence/persistent_xref.hpp
testing new non-autotools build system
[chaz/yoink] / src / stlplus / persistence / persistent_xref.hpp
diff --git a/src/stlplus/persistence/persistent_xref.hpp b/src/stlplus/persistence/persistent_xref.hpp
new file mode 100644 (file)
index 0000000..c41e28d
--- /dev/null
@@ -0,0 +1,48 @@
+#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
This page took 0.021375 seconds and 4 git commands to generate.