aboutsummaryrefslogtreecommitdiff
path: root/odb/tracer
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-11-15 17:46:28 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-11-15 17:46:28 +0200
commit89a3b6133ade1ccb3a8e9ab9c86eac6aaef5db69 (patch)
tree394eb90c5acc9b55460bc7e4961cf791a60e397d /odb/tracer
parent61acf05c698a8b611c5ccf6aed8d3e654d5acf8e (diff)
Add support for custom object pointers
New option: --default-pointer. New object pragma specifier: pointer.
Diffstat (limited to 'odb/tracer')
-rw-r--r--odb/tracer/header.cxx9
-rw-r--r--odb/tracer/source.cxx4
2 files changed, 6 insertions, 7 deletions
diff --git a/odb/tracer/header.cxx b/odb/tracer/header.cxx
index eaa7546..a4dd368 100644
--- a/odb/tracer/header.cxx
+++ b/odb/tracer/header.cxx
@@ -35,15 +35,14 @@ namespace tracer
<< "//" << endl;
os << "template <>" << endl
- << "class access::object_traits< " << type << " >: " << endl
- << " public access::object_memory< " << type << " >," << endl
- << " public access::object_factory< " << type << " >"
+ << "class access::object_traits< " << type << " >"
<< "{"
<< "public:" << endl;
- // object_type & shared_ptr
+ // object_type & pointer_type
//
- os << "typedef " << type << " object_type;";
+ os << "typedef " << type << " object_type;"
+ << "typedef object_type* pointer_type;";
// id_type
//
diff --git a/odb/tracer/source.cxx b/odb/tracer/source.cxx
index 338f2fb..8d1bd4f 100644
--- a/odb/tracer/source.cxx
+++ b/odb/tracer/source.cxx
@@ -93,8 +93,8 @@ namespace tracer
<< "if (id == id_type ())" << endl
<< "return pointer_type (0);"
<< endl
- << "pointer_type r (access::object_factory< " << type <<
- " >::create ());"
+ << "pointer_type r (access::object_factory< object_type, " <<
+ "pointer_type >::create ());"
<< "pointer_traits< pointer_type >::guard g (r);"
<< "r->" << id.name () << " = id;"
<< "g.release ();"