aboutsummaryrefslogtreecommitdiff
path: root/odb
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-03-10 11:37:49 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-03-21 15:40:00 +0200
commitb0f28bd39db1732db794c6ba1f02d244bce0641c (patch)
treeffe5c5898eed770b4a8256b9e78c9b1792feb70e /odb
parentecf31f6252c7c02935a6ce174d6700beb3f0b7fa (diff)
Move tracer to new ctor-less context
Diffstat (limited to 'odb')
-rw-r--r--odb/context.cxx12
-rw-r--r--odb/context.hxx11
-rw-r--r--odb/generator.cxx10
-rw-r--r--odb/tracer/generate.hxx30
-rw-r--r--odb/tracer/header.cxx45
-rw-r--r--odb/tracer/header.hxx17
-rw-r--r--odb/tracer/inline.cxx45
-rw-r--r--odb/tracer/inline.hxx17
-rw-r--r--odb/tracer/source.cxx53
-rw-r--r--odb/tracer/source.hxx17
10 files changed, 113 insertions, 144 deletions
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 <odb/header.hxx>
#include <odb/inline.hxx>
-#include <odb/tracer/header.hxx>
-#include <odb/tracer/inline.hxx>
-#include <odb/tracer/source.hxx>
+#include <odb/tracer/generate.hxx>
#include <odb/relational/generate.hxx>
#include <odb/relational/type-processor.hxx>
@@ -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 <boris@codesynthesis.com>
+// 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 <odb/common.hxx>
-#include <odb/tracer/header.hxx>
+#include <odb/tracer/generate.hxx>
+
+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 <boris@codesynthesis.com>
-// 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 <odb/context.hxx>
-
-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 <odb/common.hxx>
-#include <odb/tracer/inline.hxx>
+#include <odb/tracer/generate.hxx>
+
+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 <boris@codesynthesis.com>
-// 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 <odb/context.hxx>
-
-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 <odb/common.hxx>
-#include <odb/tracer/source.hxx>
+#include <odb/tracer/generate.hxx>
+
+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 <iostream>" << endl
- << endl;
+ ns >> ns_defines >> ns;
+ ns_defines >> c;
- ctx.os << "#include <odb/exceptions.hxx>" << endl
- << endl;
+ os << "#include <iostream>" << endl
+ << endl;
+
+ os << "#include <odb/exceptions.hxx>" << 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 <boris@codesynthesis.com>
-// 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 <odb/context.hxx>
-
-namespace tracer
-{
- void
- generate_source (context&);
-}
-
-#endif // ODB_TRACER_SOURCE_HXX