diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-04-25 12:30:05 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-04-25 12:30:05 +0200 |
commit | 5f821d47f0ee08a3a08962d0dc641326618dbf50 (patch) | |
tree | b955615d73f182344ef59c624b1521d3c80302ec /common | |
parent | bcdc344dbf45e16ed99960dcd6392bd325ee15c1 (diff) |
Reuse container traits from composite values
Diffstat (limited to 'common')
-rw-r--r-- | common/inheritance/driver.cxx | 4 | ||||
-rw-r--r-- | common/inheritance/test.hxx | 20 |
2 files changed, 22 insertions, 2 deletions
diff --git a/common/inheritance/driver.cxx b/common/inheritance/driver.cxx index 203e912..99dc1c5 100644 --- a/common/inheritance/driver.cxx +++ b/common/inheritance/driver.cxx @@ -29,6 +29,7 @@ main (int argc, char* argv[]) auto_ptr<database> db (create_database (argc, argv)); base b; + b.comp_.bools.push_back (true); b.comp_.num = 10; b.comp_.str = "comp bbb"; b.comp_.nums.push_back (101); @@ -39,6 +40,7 @@ main (int argc, char* argv[]) b.strs_.push_back ("bbb two"); object1 o1; + o1.comp_.bools.push_back (false); o1.comp_.num = 11; o1.comp_.str = "comp o1o1o1"; o1.comp_.nums.push_back (111); @@ -50,6 +52,8 @@ main (int argc, char* argv[]) o1.strs_.push_back ("base o1o1o1 two"); object2 o2; + o2.comp_.bools.push_back (true); + o2.comp_.bools.push_back (false); o2.comp_.num = 12; o2.comp_.str = "comp o2o2o2"; o2.comp_.nums.push_back (121); diff --git a/common/inheritance/test.hxx b/common/inheritance/test.hxx index e27ff7a..31ef9c1 100644 --- a/common/inheritance/test.hxx +++ b/common/inheritance/test.hxx @@ -12,7 +12,19 @@ #include <odb/core.hxx> #pragma db value -struct comp +struct comp_base +{ + std::vector<unsigned char> bools; + + bool + operator== (const comp_base& y) const + { + return bools == y.bools; + } +}; + +#pragma db value +struct comp: comp_base { unsigned int num; std::string str; @@ -22,7 +34,11 @@ struct comp bool operator== (const comp& y) const { - return num == y.num && str == y.str && nums == y.nums; + return + static_cast<const comp_base&> (*this) == y && + num == y.num && + str == y.str && + nums == y.nums; } }; |