diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-11-01 12:41:02 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-11-01 14:30:22 +0200 |
commit | 7871bd9b681f449cc3938750ce70fa1ed5400dcd (patch) | |
tree | 3784716722430f06799016e3b7bdae7231fd9120 /odb/tracer | |
parent | c11ace0f4a665ac0dfb269860ef04dce284b75f5 (diff) |
Implement support for optimistic concurrency
New pragmas: optimistic, version. New test: optimistic. New database
function: reload().
Diffstat (limited to 'odb/tracer')
-rw-r--r-- | odb/tracer/header.cxx | 8 | ||||
-rw-r--r-- | odb/tracer/source.cxx | 14 |
2 files changed, 20 insertions, 2 deletions
diff --git a/odb/tracer/header.cxx b/odb/tracer/header.cxx index 5ba6c95..f4a3a72 100644 --- a/odb/tracer/header.cxx +++ b/odb/tracer/header.cxx @@ -77,12 +77,18 @@ namespace tracer << "update (database&, const object_type&);" << endl; - // erase () + // erase (id_type) // os << "static void" << endl << "erase (database&, const id_type&);" << endl; + // erase (object_type) + // + os << "static void" << endl + << "erase (database&, const object_type&);" + << endl; + // find () // os << "static pointer_type" << endl 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 |