aboutsummaryrefslogtreecommitdiff
path: root/odb/tracer
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-09-20 16:05:01 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-09-20 16:05:01 +0200
commit6d8864d805c2cce550e7f2149b2b244466af4fb8 (patch)
tree6313d1193fabb0761cd66b31e9235cff2bbabd1d /odb/tracer
parenta81b6977c9aa75e9754fd74417278da943c48883 (diff)
Add persist(const) version, make update()'s argument const
Diffstat (limited to 'odb/tracer')
-rw-r--r--odb/tracer/header.cxx20
-rw-r--r--odb/tracer/source.cxx14
2 files changed, 19 insertions, 15 deletions
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_;
};
}