From 0e4095ffecdc1f65a48d21730b0c8a0d96bc0c93 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 26 Aug 2011 12:13:19 +0200 Subject: Add wrapper support for composite values NULL semantics for composite values is not yet supported. --- common/wrapper/test.hxx | 74 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) (limited to 'common/wrapper/test.hxx') diff --git a/common/wrapper/test.hxx b/common/wrapper/test.hxx index 68a8750..b28d7a0 100644 --- a/common/wrapper/test.hxx +++ b/common/wrapper/test.hxx @@ -21,6 +21,10 @@ using odb::nullable; +// +// Simple values. +// + typedef nullable nullable_string; #ifdef HAVE_TR1_MEMORY @@ -33,7 +37,7 @@ struct object #pragma db id auto unsigned long id_; - std::auto_ptr num; + std::auto_ptr num; #pragma db null std::auto_ptr str; @@ -50,4 +54,72 @@ struct object #endif }; +// +// Composite values. +// + +#pragma db value +struct comp1 +{ + comp1 () {} + comp1 (const std::string& s, int n): str (s), num (n) {} + + std::string str; + int num; +}; + +inline bool +operator== (const comp1& x, const comp1 y) +{ + return x.str == y.str && x.num == y.num; +} + + +#pragma db value +struct comp2 +{ + comp2 () {} + comp2 (const std::string& s, int n): str (s), num (n) {} + + std::string str; + int num; + + std::vector strs; +}; + +inline bool +operator== (const comp2& x, const comp2 y) +{ + return x.str == y.str && x.num == y.num && x.strs == y.strs; +} + +#pragma db object +struct comp_object +{ + #pragma db id auto + unsigned long id_; + + std::auto_ptr c1; // Wrapped comp value. + std::vector > vc1; // Container of wrapped comp values. + std::auto_ptr c2; // Container inside wrapped comp value. +}; + +// This one is just a compilation test to cover more convolute cases. +// +#pragma db value +struct comp3: comp2 +{ + std::auto_ptr c1; + std::vector > vc1; +}; + +#pragma db object +struct comp_object2 +{ + #pragma db id auto + unsigned long id_; + + std::auto_ptr c3; +}; + #endif // TEST_HXX -- cgit v1.1