From d83a7296e228cf0af74992020f51c566a03108c9 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 27 Oct 2011 15:16:49 +0200 Subject: Add support for persistent classes without object ids New pragma id (object). New test: common/no-id. --- odb/sqlite/object-result.hxx | 53 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 8 deletions(-) (limited to 'odb/sqlite/object-result.hxx') 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 - class result_impl: - public odb::result_impl, - public result_impl_base + class object_result_impl: public odb::object_result_impl, + public result_impl_base { public: - typedef odb::result_impl base_type; + typedef odb::object_result_impl 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, - object_statements&); + object_result_impl (const query&, + details::shared_ptr, + object_statements&); virtual void load (object_type&); @@ -67,6 +66,44 @@ namespace odb private: object_statements& statements_; }; + + template + class object_result_impl_no_id: public odb::object_result_impl_no_id, + public result_impl_base + { + public: + typedef odb::object_result_impl_no_id 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, + object_statements_no_id&); + + 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& statements_; + }; } } -- cgit v1.1