From 8f59ca1a8d7093655f8f7d61f101abc6df3839d5 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 24 Mar 2011 12:35:08 +0200 Subject: Generalization work for MySQL and SQLite support --- odb/relational/sqlite/context.cxx | 3 +++ odb/relational/sqlite/source.cxx | 20 ++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'odb/relational/sqlite') diff --git a/odb/relational/sqlite/context.cxx b/odb/relational/sqlite/context.cxx index 2e888e3..6ed1740 100644 --- a/odb/relational/sqlite/context.cxx +++ b/odb/relational/sqlite/context.cxx @@ -73,6 +73,9 @@ namespace relational assert (current_ == 0); current_ = this; + data_->bind_vector_ = "sqlite::bind*"; + data_->truncated_vector_ = "bool*"; + // Populate the C++ type to DB type map. // for (size_t i (0); i < sizeof (type_map) / sizeof (type_map_entry); ++i) diff --git a/odb/relational/sqlite/source.cxx b/odb/relational/sqlite/source.cxx index 360e220..418a5e3 100644 --- a/odb/relational/sqlite/source.cxx +++ b/odb/relational/sqlite/source.cxx @@ -103,7 +103,7 @@ namespace relational << b << ".buffer = " << arg << "." << mi.var << "value.data ();" << b << ".size = &" << arg << "." << mi.var << "size;" << b << ".capacity = " << arg << "." << mi.var << - "value.capacity ());" + "value.capacity ();" << b << ".is_null = &" << arg << "." << mi.var << "null;"; } @@ -114,7 +114,7 @@ namespace relational << b << ".buffer = " << arg << "." << mi.var << "value.data ();" << b << ".size = &" << arg << "." << mi.var << "size;" << b << ".capacity = " << arg << "." << mi.var << - "value.capacity ());" + "value.capacity ();" << b << ".is_null = &" << arg << "." << mi.var << "null;"; } @@ -144,7 +144,7 @@ namespace relational return false; ostringstream ostr; - ostr << "e[" << index_ << "UL]"; + ostr << "t[" << index_ << "UL]"; e = ostr.str (); if (var_override_.empty ()) @@ -168,7 +168,7 @@ namespace relational { os << "if (composite_value_traits< " << mi.fq_type () << " >::grow (" << endl - << "i." << mi.var << "value, e + " << index_ << "UL))" + << "i." << mi.var << "value, t + " << index_ << "UL))" << "{" << "grew = true;" << "}"; @@ -557,6 +557,18 @@ namespace relational member_database_type_id member_database_type_id_; }; entry init_value_member_; + + struct class_: relational::class_, context + { + class_ (base const& x): base (x) {} + + virtual void + init_auto_id (semantics::data_member&, string const& im) + { + os << im << "null = true;"; + } + }; + entry class_entry_; } } } -- cgit v1.1