From cea6fb57ac8c9a893c0f404fef6c1469f0b6222b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 22 Jul 2010 14:33:21 +0200 Subject: Next chunk of functionality Add SQL language lexer. Implement MySQL type declaration parser. Create sub-directories for databases, currently mysql and tracer. Create MySQL-specific context. --- odb/source.cxx | 148 --------------------------------------------------------- 1 file changed, 148 deletions(-) delete mode 100644 odb/source.cxx (limited to 'odb/source.cxx') diff --git a/odb/source.cxx b/odb/source.cxx deleted file mode 100644 index 168dfae..0000000 --- a/odb/source.cxx +++ /dev/null @@ -1,148 +0,0 @@ -// file : odb/source.cxx -// author : Boris Kolpackov -// copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC -// license : GNU GPL v2; see accompanying LICENSE file - -#include -#include - -namespace -{ - struct class_: traversal::class_, context - { - class_ (context& c) - : context (c) - { - } - - virtual void - traverse (type& c) - { - if (c.file () != unit.file ()) - return; - - if (!c.count ("object")) - return; - - string const& type (c.fq_name ()); - string traits ("access::object_traits< " + type + " >"); - - id_member t (*this); - t.traverse (c); - semantics::data_member& id (*t.member ()); - - os << "// " << c.name () << endl - << "//" << endl - << endl; - - // type_name () - // - os << "const char* " << traits << "::" << endl - << "type_name ()" - << "{" - << "return \"" << type << "\";" - << "}"; - - // insert () - // - os << "void " << traits << "::" << endl - << "insert (database&, 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&, 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 () - // - 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 ();" - << "}"; - - // 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< " << type << - " >::create ());" - << "r->" << id.name () << " = id;" - << "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;" - << "}"; - } - }; -} - -void -generate_source (context& ctx) -{ - traversal::unit unit; - traversal::defines unit_defines; - traversal::namespace_ ns; - class_ c (ctx); - - unit >> unit_defines >> ns; - unit_defines >> c; - - traversal::defines ns_defines; - - ns >> ns_defines >> ns; - ns_defines >> c; - - ctx.os << "#include " << endl - << endl; - - ctx.os << "#include " << endl - << endl; - - //ctx.os << "#include " << endl - // << "#include " << endl - // << endl; - - ctx.os << "namespace odb" - << "{"; - - unit.dispatch (ctx.unit); - - ctx.os << "}"; -} -- cgit v1.1