diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-11-08 12:36:25 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-11-08 15:46:32 +0200 |
commit | 10e1c1963096586b484988958539756385ce2c35 (patch) | |
tree | 8ed6d7d6d5ca5cb225c949dd463f14d32448d979 /odb/tracer/source.cxx | |
parent | a9f5ab78b88a1ce675234b81cb089cdc627ae3af (diff) |
Get rid of special tracer database
The include, types, and pragma tests have been moved to the common/
directory while the object test has been merged into common/lifecycle.
The transaction test will be re-implemented as common/ test as soon
as SQL statement tracing support is merged.
Diffstat (limited to 'odb/tracer/source.cxx')
-rw-r--r-- | odb/tracer/source.cxx | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/odb/tracer/source.cxx b/odb/tracer/source.cxx deleted file mode 100644 index 5eaa5ad..0000000 --- a/odb/tracer/source.cxx +++ /dev/null @@ -1,165 +0,0 @@ -// file : odb/tracer/source.cxx -// author : Boris Kolpackov <boris@codesynthesis.com> -// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC -// license : GNU GPL v3; see accompanying LICENSE file - -#include <odb/common.hxx> -#include <odb/context.hxx> -#include <odb/tracer/generate.hxx> - -using namespace std; - -namespace tracer -{ - namespace - { - struct class_: traversal::class_, context - { - virtual void - traverse (type& c) - { - if (c.file () != unit.file ()) - return; - - if (!object (c)) - return; - - string const& type (c.fq_name ()); - string traits ("access::object_traits< " + type + " >"); - - semantics::data_member& id (*id_member (c)); - bool auto_id (id.count ("auto")); - - os << "// " << c.name () << endl - << "//" << endl - << endl; - - // type_name () - // - os << "const char* " << traits << "::" << endl - << "type_name ()" - << "{" - << "return \"" << type << "\";" - << "}"; - - // persist () - // - os << "void " << traits << "::" << endl - << "persist (database&, " << (auto_id ? "" : "const ") << - "object_type& obj)" - << "{" - << "std::cout << \"insert \" << type_name () << \" id \" << " << - "id (obj) << std::endl;" - << endl - << "if (id (obj) == id_type ())" << endl - << "throw object_already_persistent ();" - << "}"; - - // update () - // - os << "void " << traits << "::" << endl - << "update (database&, const object_type& obj)" - << "{" - << "std::cout << \"update \" << type_name () << \" id \" << " << - "id (obj) << std::endl;" - << endl - << "if (id (obj) == id_type ())" << endl - << "throw object_not_persistent ();" - << "}"; - - // erase (id_type) - // - os << "void " << traits << "::" << endl - << "erase (database&, const id_type& id)" - << "{" - << "std::cout << \"delete \" << type_name () << \" id \" << " << - "id << std::endl;" - << endl - << "if (id == id_type ())" << endl - << "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 - << traits << "::" << endl - << "find (database&, const id_type& id)" - << "{" - << "std::cout << \"select \" << type_name () << \" id \" << " << - "id << std::endl;" - << endl - << "if (id == id_type ())" << endl - << "return pointer_type (0);" - << endl - << "pointer_type r (access::object_factory< object_type, " << - "pointer_type >::create ());" - << "pointer_traits< pointer_type >::guard g (r);" - << "r->" << id.name () << " = id;" - << "g.release ();" - << "return r;" - << "}"; - - os << "bool " << traits << "::" << endl - << "find (database&, const id_type& id, object_type& obj)" - << "{" - << "std::cout << \"select \" << type_name () << \" id \" << " << - "id << std::endl;" - << endl - << "if (id == id_type ())" << endl - << "return false;" - << endl - << "obj." << id.name () << " = id;" - << "return true;" - << "}"; - } - }; - } - - namespace source - { - void - generate () - { - context ctx; - ostream& os (ctx.os); - - traversal::unit unit; - traversal::defines unit_defines; - traversal::namespace_ ns; - class_ c; - - unit >> unit_defines >> ns; - unit_defines >> c; - - traversal::defines ns_defines; - - ns >> ns_defines >> ns; - ns_defines >> c; - - os << "#include <iostream>" << endl - << endl; - - os << "#include <odb/exceptions.hxx>" << endl - << endl; - - os << "namespace odb" - << "{"; - - unit.dispatch (ctx.unit); - - os << "}"; - } - } -} |