aboutsummaryrefslogtreecommitdiff
path: root/common/enum/test.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-10-15 07:01:17 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-10-15 07:01:17 +0200
commit4cb3716317207e3a6813b0d9ff779edc7fec91de (patch)
treef9f5ce8fc96df13a1b87be47124b25f0af7435f9 /common/enum/test.hxx
parentccb45f5515e31f394f5164d8675b43f6b3f8b66c (diff)
Automatically map C++11 enum classes (strong enums)
Diffstat (limited to 'common/enum/test.hxx')
-rw-r--r--common/enum/test.hxx29
1 files changed, 26 insertions, 3 deletions
diff --git a/common/enum/test.hxx b/common/enum/test.hxx
index c1609fd..98ff0e9 100644
--- a/common/enum/test.hxx
+++ b/common/enum/test.hxx
@@ -6,6 +6,7 @@
#define TEST_HXX
#include <odb/core.hxx>
+#include <common/config.hxx> // HAVE_CXX11_ENUM
enum color {red, green, blue};
@@ -18,15 +19,37 @@ struct object
color color_;
enum taste {bitter, sweet, sour};
taste taste_;
+
+ enum position {left = -1, center = 0, right = 1};
+ position position_;
+
+
+#ifdef HAVE_CXX11_ENUM
+ enum class gender {male, female};
+ enum class scale: unsigned char {one = 1, ten = 10, hundred = 100};
+ enum class yesno: bool {no, yes};
+
+ gender gender_;
+ scale scale_;
+ yesno yesno_;
+#endif
+
};
inline bool
operator == (const object& x, const object& y)
{
return
- x.id_ == y.id_ &&
- x.color_ == y.color_ &&
- x.taste_ == y.taste_;
+ x.id_ == y.id_
+ && x.color_ == y.color_
+ && x.taste_ == y.taste_
+ && x.position_ == y.position_
+#ifdef HAVE_CXX11_ENUM
+ && x.gender_ == y.gender_
+ && x.scale_ == y.scale_
+ && x.yesno_ == y.yesno_;
+#endif
+ ;
}
#endif // TEST_HXX