From 0b641f182c0b89b0c903f8756aa14b6b3a2f60f2 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 4 Aug 2011 13:32:25 +0200 Subject: Add support for boost::optional and boost::shared_ptr as value wrappers New test: boost/common/optional. --- boost/common/smart-ptr/driver.cxx | 25 +++++++++++++++++++++++++ boost/common/smart-ptr/test.hxx | 25 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+) (limited to 'boost/common/smart-ptr') diff --git a/boost/common/smart-ptr/driver.cxx b/boost/common/smart-ptr/driver.cxx index eaa4bbd..af5767c 100644 --- a/boost/common/smart-ptr/driver.cxx +++ b/boost/common/smart-ptr/driver.cxx @@ -169,6 +169,31 @@ main (int argc, char* argv[]) t.commit (); } + + // + // Test shared_ptr as a value wrapper. + // + + { + obj2 o1 (1); + obj2 o2 (2); + o2.str.reset (new string ("abc")); + + transaction t (db->begin ()); + db->persist (o1); + db->persist (o2); + t.commit (); + } + + { + transaction t (db->begin ()); + shared_ptr o1 (db->load (1)); + shared_ptr o2 (db->load (2)); + t.commit (); + + assert (!o1->str); + assert (o2->str && *o2->str == "abc"); + } } catch (const odb::exception& e) { diff --git a/boost/common/smart-ptr/test.hxx b/boost/common/smart-ptr/test.hxx index 575c2e2..62a9ae6 100644 --- a/boost/common/smart-ptr/test.hxx +++ b/boost/common/smart-ptr/test.hxx @@ -6,13 +6,17 @@ #ifndef TEST_HXX #define TEST_HXX +#include #include +#include + #include #include struct obj; +using boost::shared_ptr; using odb::boost::lazy_shared_ptr; using odb::boost::lazy_weak_ptr; @@ -56,4 +60,25 @@ struct obj lazy_shared_ptr c; }; +// Test shared_ptr as a value wrapper. +// +#pragma db object +struct obj2 +{ + obj2 () + { + } + + obj2 (unsigned long id) + : id (id) + { + } + + #pragma db id + unsigned long id; + + #pragma db null + shared_ptr str; +}; + #endif // TEST_HXX -- cgit v1.1