From b0f28bd39db1732db794c6ba1f02d244bce0641c Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 10 Mar 2011 11:37:49 +0200 Subject: Move tracer to new ctor-less context --- odb/context.cxx | 12 ----------- odb/context.hxx | 11 +++------- odb/generator.cxx | 10 ++++------ odb/tracer/generate.hxx | 30 ++++++++++++++++++++++++++++ odb/tracer/header.cxx | 45 +++++++++++++++++++++-------------------- odb/tracer/header.hxx | 17 ---------------- odb/tracer/inline.cxx | 45 +++++++++++++++++++++-------------------- odb/tracer/inline.hxx | 17 ---------------- odb/tracer/source.cxx | 53 ++++++++++++++++++++++++++----------------------- odb/tracer/source.hxx | 17 ---------------- 10 files changed, 113 insertions(+), 144 deletions(-) create mode 100644 odb/tracer/generate.hxx delete mode 100644 odb/tracer/header.hxx delete mode 100644 odb/tracer/inline.hxx delete mode 100644 odb/tracer/source.hxx (limited to 'odb') diff --git a/odb/context.cxx b/odb/context.cxx index b98a27d..28d6749 100644 --- a/odb/context.cxx +++ b/odb/context.cxx @@ -122,18 +122,6 @@ context (ostream& os_, } context:: -context (const context& c) - : data_ (c.data_), - os (c.os), - unit (c.unit), - options (c.options), - keyword_set (c.keyword_set), - embedded_schema (c.embedded_schema), - object (c.object) -{ -} - -context:: context () : data_ (current ().data_), os (current ().os), diff --git a/odb/context.hxx b/odb/context.hxx index d7bfa0d..859a665 100644 --- a/odb/context.hxx +++ b/odb/context.hxx @@ -415,27 +415,22 @@ protected: }; public: - virtual - ~context (); - typedef context root_context; + virtual + ~context (); + context (); context (std::ostream&, semantics::unit&, options_type const&, data_ptr = data_ptr ()); - context (const context&); - static context& current () { return *current_; } -protected: - context (); - private: static context* current_; diff --git a/odb/generator.cxx b/odb/generator.cxx index eaad179..097a5a5 100644 --- a/odb/generator.cxx +++ b/odb/generator.cxx @@ -22,9 +22,7 @@ #include #include -#include -#include -#include +#include #include #include @@ -297,7 +295,7 @@ generate (options const& ops, semantics::unit& unit, path const& p) } case database::tracer: { - tracer::generate_header (*ctx); + tracer::header::generate (); break; } } @@ -361,7 +359,7 @@ generate (options const& ops, semantics::unit& unit, path const& p) } case database::tracer: { - tracer::generate_inline (*ctx); + tracer::inline_::generate (); break; } } @@ -407,7 +405,7 @@ generate (options const& ops, semantics::unit& unit, path const& p) case database::tracer: { context ctx (cxx, unit, ops); - tracer::generate_source (ctx); + tracer::source::generate (); break; } } diff --git a/odb/tracer/generate.hxx b/odb/tracer/generate.hxx new file mode 100644 index 0000000..32cd993 --- /dev/null +++ b/odb/tracer/generate.hxx @@ -0,0 +1,30 @@ +// file : odb/tracer/generate.hxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +// license : GNU GPL v3; see accompanying LICENSE file + +#ifndef ODB_TRACER_GENERATE_HXX +#define ODB_TRACER_GENERATE_HXX + +namespace tracer +{ + namespace header + { + void + generate (); + } + + namespace inline_ + { + void + generate (); + } + + namespace source + { + void + generate (); + } +} + +#endif // ODB_TRACER_GENERATE_HXX diff --git a/odb/tracer/header.cxx b/odb/tracer/header.cxx index 74a27af..c8c5a43 100644 --- a/odb/tracer/header.cxx +++ b/odb/tracer/header.cxx @@ -4,7 +4,9 @@ // license : GNU GPL v3; see accompanying LICENSE file #include -#include +#include + +using namespace std; namespace tracer { @@ -12,11 +14,6 @@ namespace tracer { struct class_: traversal::class_, context { - class_ (context& c) - : context (c) - { - } - virtual void traverse (type& c) { @@ -95,27 +92,33 @@ namespace tracer }; } - void - generate_header (context& ctx) + namespace header { - traversal::unit unit; - traversal::defines unit_defines; - traversal::namespace_ ns; - class_ c (ctx); + 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; + unit >> unit_defines >> ns; + unit_defines >> c; - traversal::defines ns_defines; + traversal::defines ns_defines; - ns >> ns_defines >> ns; - ns_defines >> c; + ns >> ns_defines >> ns; + ns_defines >> c; - ctx.os << "namespace odb" - << "{"; + os << "namespace odb" + << "{"; - unit.dispatch (ctx.unit); + unit.dispatch (ctx.unit); - ctx.os << "}"; + os << "}"; + } } } diff --git a/odb/tracer/header.hxx b/odb/tracer/header.hxx deleted file mode 100644 index 761b292..0000000 --- a/odb/tracer/header.hxx +++ /dev/null @@ -1,17 +0,0 @@ -// file : odb/tracer/header.hxx -// author : Boris Kolpackov -// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC -// license : GNU GPL v3; see accompanying LICENSE file - -#ifndef ODB_TRACER_HEADER_HXX -#define ODB_TRACER_HEADER_HXX - -#include - -namespace tracer -{ - void - generate_header (context&); -} - -#endif // ODB_TRACER_HEADER_HXX diff --git a/odb/tracer/inline.cxx b/odb/tracer/inline.cxx index b8b658e..bf5f0f4 100644 --- a/odb/tracer/inline.cxx +++ b/odb/tracer/inline.cxx @@ -4,7 +4,9 @@ // license : GNU GPL v3; see accompanying LICENSE file #include -#include +#include + +using namespace std; namespace tracer { @@ -12,11 +14,6 @@ namespace tracer { struct class_: traversal::class_, context { - class_ (context& c) - : context (c) - { - } - virtual void traverse (type& c) { @@ -48,27 +45,33 @@ namespace tracer }; } - void - generate_inline (context& ctx) + namespace inline_ { - traversal::unit unit; - traversal::defines unit_defines; - traversal::namespace_ ns; - class_ c (ctx); + 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; + unit >> unit_defines >> ns; + unit_defines >> c; - traversal::defines ns_defines; + traversal::defines ns_defines; - ns >> ns_defines >> ns; - ns_defines >> c; + ns >> ns_defines >> ns; + ns_defines >> c; - ctx.os << "namespace odb" - << "{"; + os << "namespace odb" + << "{"; - unit.dispatch (ctx.unit); + unit.dispatch (ctx.unit); - ctx.os << "}"; + os << "}"; + } } } diff --git a/odb/tracer/inline.hxx b/odb/tracer/inline.hxx deleted file mode 100644 index 353587c..0000000 --- a/odb/tracer/inline.hxx +++ /dev/null @@ -1,17 +0,0 @@ -// file : odb/tracer/inline.hxx -// author : Boris Kolpackov -// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC -// license : GNU GPL v3; see accompanying LICENSE file - -#ifndef ODB_TRACER_INLINE_HXX -#define ODB_TRACER_INLINE_HXX - -#include - -namespace tracer -{ - void - generate_inline (context&); -} - -#endif // ODB_TRACER_INLINE_HXX diff --git a/odb/tracer/source.cxx b/odb/tracer/source.cxx index c0f64c4..73f0a8a 100644 --- a/odb/tracer/source.cxx +++ b/odb/tracer/source.cxx @@ -4,7 +4,9 @@ // license : GNU GPL v3; see accompanying LICENSE file #include -#include +#include + +using namespace std; namespace tracer { @@ -12,11 +14,6 @@ namespace tracer { struct class_: traversal::class_, context { - class_ (context& c) - : context (c) - { - } - virtual void traverse (type& c) { @@ -117,33 +114,39 @@ namespace tracer }; } - void - generate_source (context& ctx) + namespace source { - traversal::unit unit; - traversal::defines unit_defines; - traversal::namespace_ ns; - class_ c (ctx); + void + generate () + { + context ctx; + ostream& os (ctx.os); - unit >> unit_defines >> ns; - unit_defines >> c; + traversal::unit unit; + traversal::defines unit_defines; + traversal::namespace_ ns; + class_ c; - traversal::defines ns_defines; + unit >> unit_defines >> ns; + unit_defines >> c; - ns >> ns_defines >> ns; - ns_defines >> c; + traversal::defines ns_defines; - ctx.os << "#include " << endl - << endl; + ns >> ns_defines >> ns; + ns_defines >> c; - ctx.os << "#include " << endl - << endl; + os << "#include " << endl + << endl; + + os << "#include " << endl + << endl; - ctx.os << "namespace odb" - << "{"; + os << "namespace odb" + << "{"; - unit.dispatch (ctx.unit); + unit.dispatch (ctx.unit); - ctx.os << "}"; + os << "}"; + } } } diff --git a/odb/tracer/source.hxx b/odb/tracer/source.hxx deleted file mode 100644 index a18fec6..0000000 --- a/odb/tracer/source.hxx +++ /dev/null @@ -1,17 +0,0 @@ -// file : odb/tracer/source.hxx -// author : Boris Kolpackov -// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC -// license : GNU GPL v3; see accompanying LICENSE file - -#ifndef ODB_TRACER_SOURCE_HXX -#define ODB_TRACER_SOURCE_HXX - -#include - -namespace tracer -{ - void - generate_source (context&); -} - -#endif // ODB_TRACER_SOURCE_HXX -- cgit v1.1