diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-10-27 15:16:49 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-10-27 15:16:49 +0200 |
commit | d83a7296e228cf0af74992020f51c566a03108c9 (patch) | |
tree | ab48b74c739049163839e4334e3855ad19906cb3 /odb/sqlite/object-result.hxx | |
parent | 2e8daa4a5880f47e547de7db4e7ff5074d365723 (diff) |
Add support for persistent classes without object ids
New pragma id (object). New test: common/no-id.
Diffstat (limited to 'odb/sqlite/object-result.hxx')
-rw-r--r-- | odb/sqlite/object-result.hxx | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/odb/sqlite/object-result.hxx b/odb/sqlite/object-result.hxx index 401c83a..fb7865c 100644 --- a/odb/sqlite/object-result.hxx +++ b/odb/sqlite/object-result.hxx @@ -22,12 +22,11 @@ namespace odb namespace sqlite { template <typename T> - class result_impl<T, class_object>: - public odb::result_impl<T, class_object>, - public result_impl_base + class object_result_impl: public odb::object_result_impl<T>, + public result_impl_base { public: - typedef odb::result_impl<T, class_object> base_type; + typedef odb::object_result_impl<T> base_type; typedef typename base_type::object_traits object_traits; typedef typename base_type::object_type object_type; @@ -37,11 +36,11 @@ namespace odb typedef typename base_type::pointer_traits pointer_traits; virtual - ~result_impl (); + ~object_result_impl (); - result_impl (const query&, - details::shared_ptr<select_statement>, - object_statements<object_type>&); + object_result_impl (const query&, + details::shared_ptr<select_statement>, + object_statements<object_type>&); virtual void load (object_type&); @@ -67,6 +66,44 @@ namespace odb private: object_statements<object_type>& statements_; }; + + template <typename T> + class object_result_impl_no_id: public odb::object_result_impl_no_id<T>, + public result_impl_base + { + public: + typedef odb::object_result_impl_no_id<T> base_type; + + typedef typename base_type::object_traits object_traits; + typedef typename base_type::object_type object_type; + + typedef typename base_type::pointer_type pointer_type; + typedef typename base_type::pointer_traits pointer_traits; + + virtual + ~object_result_impl_no_id (); + + object_result_impl_no_id (const query&, + details::shared_ptr<select_statement>, + object_statements_no_id<object_type>&); + + virtual void + load (object_type&); + + virtual void + next (); + + virtual void + cache (); + + virtual std::size_t + size (); + + using base_type::current; + + private: + object_statements_no_id<object_type>& statements_; + }; } } |