summaryrefslogtreecommitdiff
path: root/odb/tracer/source.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-11-01 12:41:02 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-11-01 14:30:22 +0200
commit7871bd9b681f449cc3938750ce70fa1ed5400dcd (patch)
tree3784716722430f06799016e3b7bdae7231fd9120 /odb/tracer/source.cxx
parentc11ace0f4a665ac0dfb269860ef04dce284b75f5 (diff)
Implement support for optimistic concurrency
New pragmas: optimistic, version. New test: optimistic. New database function: reload().
Diffstat (limited to 'odb/tracer/source.cxx')
-rw-r--r--odb/tracer/source.cxx14
1 files changed, 13 insertions, 1 deletions
diff --git a/odb/tracer/source.cxx b/odb/tracer/source.cxx
index 8412714..5eaa5ad 100644
--- a/odb/tracer/source.cxx
+++ b/odb/tracer/source.cxx
@@ -67,7 +67,7 @@ namespace tracer
<< "throw object_not_persistent ();"
<< "}";
- // erase ()
+ // erase (id_type)
//
os << "void " << traits << "::" << endl
<< "erase (database&, const id_type& id)"
@@ -79,6 +79,18 @@ namespace tracer
<< "throw object_not_persistent ();"
<< "}";
+ // erase (object_type)
+ //
+ os << "void " << traits << "::" << endl
+ << "erase (database&, const object_type& obj)"
+ << "{"
+ << "std::cout << \"delete \" << type_name () << \" id \" << " <<
+ "obj." << id.name () << " << std::endl;"
+ << endl
+ << "if (obj." << id.name () << " == id_type ())" << endl
+ << "throw object_not_persistent ();"
+ << "}";
+
// find ()
//
os << traits << "::pointer_type" << endl