aboutsummaryrefslogtreecommitdiff
path: root/odb/context.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/context.cxx')
-rw-r--r--odb/context.cxx36
1 files changed, 36 insertions, 0 deletions
diff --git a/odb/context.cxx b/odb/context.cxx
index e679a55..7919e39 100644
--- a/odb/context.cxx
+++ b/odb/context.cxx
@@ -9,6 +9,10 @@
#include <odb/context.hxx>
#include <odb/common.hxx>
+#include <odb/relational/mysql/context.hxx>
+#include <odb/relational/pgsql/context.hxx>
+#include <odb/relational/sqlite/context.hxx>
+
using namespace std;
namespace
@@ -93,6 +97,38 @@ namespace
};
}
+auto_ptr<context>
+create_context (ostream& os, semantics::unit& unit, options const& ops)
+{
+ auto_ptr<context> r;
+
+ switch (ops.database ())
+ {
+ case database::mysql:
+ {
+ r.reset (new relational::mysql::context (os, unit, ops));
+ break;
+ }
+ case database::pgsql:
+ {
+ r.reset (new relational::pgsql::context (os, unit, ops));
+ break;
+ }
+ case database::sqlite:
+ {
+ r.reset (new relational::sqlite::context (os, unit, ops));
+ break;
+ }
+ case database::tracer:
+ {
+ r.reset (new context (os, unit, ops));
+ break;
+ }
+ }
+
+ return r;
+}
+
context::
~context ()
{