From 16a4099d36ca1cdc33cf6e2b99edce796595341f Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sun, 8 Jan 2012 17:27:40 +0200 Subject: Add support for defining composite value type as class template instantiations --- common/composite/test.hxx | 62 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) (limited to 'common/composite/test.hxx') diff --git a/common/composite/test.hxx b/common/composite/test.hxx index 120476a..d846c9c 100644 --- a/common/composite/test.hxx +++ b/common/composite/test.hxx @@ -7,6 +7,8 @@ #define TEST_HXX #include +#include +#include // std::pair #include @@ -68,7 +70,7 @@ struct person }; inline bool -operator== (person const& x, person const& y) +operator== (const person& x, const person& y) { return x.id_ == y.id_ && x.name_.first == y.name_.first&& @@ -82,4 +84,62 @@ operator== (person const& x, person const& y) x.age_ == y.age_; } +// Test composite class template instantiation. +// +template +struct comp +{ + I num; + S str; + std::vector > vec; +}; + +template +inline bool +operator== (const comp& x, const comp& y) +{ + return x.num == y.num && x.str == y.str && x.vec == y.vec; +} + +typedef std::pair int_str_pair; +#pragma db value(int_str_pair) + +// Make sure we use the name that was specified in the pragma. +// +#ifdef ODB_COMPILER +typedef comp int_str_comp1; +#endif + +typedef comp int_str_comp; +#pragma db value(int_str_comp) + +#pragma db object +struct object +{ + object (unsigned long id) + : id_ (id) + { + } + + object () + { + } + + #pragma db id + unsigned long id_; + + comp comp_; + std::pair pair_; + std::vector vec_; +}; + +inline bool +operator== (const object& x, const object& y) +{ + return x.id_ == y.id_ && + x.comp_ == y.comp_ && + x.pair_ == y.pair_ && + x.vec_ == y.vec_; +} + #endif // TEST_HXX -- cgit v1.1