From b5922fe3759de1d5a4941a8bdc5402350359425b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 7 Oct 2010 18:21:39 +0200 Subject: Add support for persistent classes without default ctors New test: common/ctor. --- odb/result.hxx | 19 +------------------ odb/result.txx | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/odb/result.hxx b/odb/result.hxx index 9f7dcb0..ff9f057 100644 --- a/odb/result.hxx +++ b/odb/result.hxx @@ -41,21 +41,7 @@ namespace odb typedef typename traits::pointer_traits pointer_traits; pointer_type - current (bool release) - { - if (pointer_traits::null_ptr (current_) && !end_) - current (); - - pointer_type r (current_); - - if (release) - { - current_ = pointer_type (); - guard_.release (); - } - - return r; - } + current (bool release); bool end () const @@ -65,9 +51,6 @@ namespace odb protected: virtual void - current () = 0; - - virtual void current (T&) = 0; virtual void diff --git a/odb/result.txx b/odb/result.txx index 4b77c7e..e58af1f 100644 --- a/odb/result.txx +++ b/odb/result.txx @@ -10,4 +10,25 @@ namespace odb ~result_impl () { } + + template + typename result_impl::pointer_type result_impl:: + current (bool release) + { + if (pointer_traits::null_ptr (current_) && !end_) + { + current (traits::create ()); + current (pointer_traits::get_ref (current_)); + } + + pointer_type r (current_); + + if (release) + { + current_ = pointer_type (); + guard_.release (); + } + + return r; + } } -- cgit v1.1