From 6d8864d805c2cce550e7f2149b2b244466af4fb8 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 20 Sep 2010 16:05:01 +0200 Subject: Add persist(const) version, make update()'s argument const --- odb/tracer/header.cxx | 20 ++++++++++---------- odb/tracer/source.cxx | 14 +++++++++----- 2 files changed, 19 insertions(+), 15 deletions(-) (limited to 'odb/tracer') diff --git a/odb/tracer/header.cxx b/odb/tracer/header.cxx index 28926bf..b3dad8e 100644 --- a/odb/tracer/header.cxx +++ b/odb/tracer/header.cxx @@ -28,6 +28,10 @@ namespace tracer string const& type (c.fq_name ()); + id_member_.traverse (c); + semantics::data_member& id (*id_member_.member ()); + bool auto_id (id.count ("auto")); + os << "// " << c.name () << endl << "//" << endl; @@ -44,14 +48,9 @@ namespace tracer // id_type // - { - id_member_.traverse (c); - semantics::data_member& id (*id_member_.member ()); - - os << "typedef " << id.type ().fq_name (id.belongs ().hint ()) << - " id_type;" - << endl; - } + os << "typedef " << id.type ().fq_name (id.belongs ().hint ()) << + " id_type;" + << endl; // type_name () // @@ -68,13 +67,14 @@ namespace tracer // persist () // os << "static void" << endl - << "persist (database&, object_type&);" + << "persist (database&, " << (auto_id ? "" : "const ") << + "object_type&);" << endl; // update () // os << "static void" << endl - << "update (database&, object_type&);" + << "update (database&, const object_type&);" << endl; // erase () diff --git a/odb/tracer/source.cxx b/odb/tracer/source.cxx index 1c61916..4cb4b32 100644 --- a/odb/tracer/source.cxx +++ b/odb/tracer/source.cxx @@ -29,9 +29,9 @@ namespace tracer string const& type (c.fq_name ()); string traits ("access::object_traits< " + type + " >"); - id_member t; - t.traverse (c); - semantics::data_member& id (*t.member ()); + id_member_.traverse (c); + semantics::data_member& id (*id_member_.member ()); + bool auto_id (id.count ("auto")); os << "// " << c.name () << endl << "//" << endl @@ -48,7 +48,8 @@ namespace tracer // persist () // os << "void " << traits << "::" << endl - << "persist (database&, object_type& obj)" + << "persist (database&, " << (auto_id ? "" : "const ") << + "object_type& obj)" << "{" << "std::cout << \"insert \" << type_name () << \" id \" << " << "id (obj) << std::endl;" @@ -60,7 +61,7 @@ namespace tracer // update () // os << "void " << traits << "::" << endl - << "update (database&, object_type& obj)" + << "update (database&, const object_type& obj)" << "{" << "std::cout << \"update \" << type_name () << \" id \" << " << "id (obj) << std::endl;" @@ -114,6 +115,9 @@ namespace tracer << "return true;" << "}"; } + + private: + id_member id_member_; }; } -- cgit v1.1