diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-04-25 11:29:06 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-04-25 11:29:06 +0200 |
commit | 7a77db69c516415bfd8370c8b4d1e6bb1a4c5f60 (patch) | |
tree | a3e6c3d231f84b45ba4b6f625b6b6588e8cc2b87 /odb/sqlite/container-statements.txx | |
parent | c4d059b6346398e936dbc8c84d35c90aa4ec4253 (diff) |
Reuse container traits from base objects
Diffstat (limited to 'odb/sqlite/container-statements.txx')
-rw-r--r-- | odb/sqlite/container-statements.txx | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/odb/sqlite/container-statements.txx b/odb/sqlite/container-statements.txx index 15bd4a7..bad380c 100644 --- a/odb/sqlite/container-statements.txx +++ b/odb/sqlite/container-statements.txx @@ -22,8 +22,8 @@ namespace odb &traits::load_all, &traits::delete_all), id_binding_ (0), - cond_image_binding_ (cond_image_bind_, traits::cond_column_count), - data_image_binding_ (data_image_bind_, traits::data_column_count) + cond_image_binding_ (0, 0), // Initialized by impl. + data_image_binding_ (0, 0) // Initialized by impl. { cond_image_.version = 0; cond_image_version_ = 0; @@ -32,13 +32,35 @@ namespace odb data_image_.version = 0; data_image_version_ = 0; data_id_binding_version_ = 0; + } + + template <typename T> + container_statements_impl<T>:: + container_statements_impl (connection& conn) + : base (conn) + { + this->cond_image_bind_ = cond_image_bind_array_; + this->data_image_bind_ = data_image_bind_array_; + this->data_image_truncated_ = data_image_truncated_array_; - std::memset (cond_image_bind_, 0, sizeof (cond_image_bind_)); - std::memset (data_image_bind_, 0, sizeof (data_image_bind_)); - std::memset (data_image_truncated_, 0, sizeof (data_image_truncated_)); + this->cond_image_binding_.bind = this->cond_image_bind_; + this->cond_image_binding_.count = traits::cond_column_count; + + this->data_image_binding_.bind = this->data_image_bind_; + this->data_image_binding_.count = traits::data_column_count; + + std::memset (cond_image_bind_array_, 0, sizeof (cond_image_bind_array_)); + std::memset (data_image_bind_array_, 0, sizeof (data_image_bind_array_)); + std::memset (data_image_truncated_array_, + 0, + sizeof (data_image_truncated_array_)); for (std::size_t i (0); i < traits::data_column_count; ++i) - data_image_bind_[i].truncated = data_image_truncated_ + i; + data_image_bind_array_[i].truncated = data_image_truncated_array_ + i; + + this->insert_one_text_ = traits::insert_one_statement; + this->select_all_text_ = traits::select_all_statement; + this->delete_all_text_ = traits::delete_all_statement; } } } |