summaryrefslogtreecommitdiff
path: root/odb/traversal/enum.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
commita482f1c4dd4efab83d3b19309900f1cbf54383a5 (patch)
tree3c1ab27e420cbf760a54a1c4be61bbd0448a4873 /odb/traversal/enum.hxx
parent400d258aab3722be3a4b8548870afad1574f3ad8 (diff)
Automatically map C++11 enum classes (strong enums)
Diffstat (limited to 'odb/traversal/enum.hxx')
-rw-r--r--odb/traversal/enum.hxx23
1 files changed, 19 insertions, 4 deletions
diff --git a/odb/traversal/enum.hxx b/odb/traversal/enum.hxx
index 1efccaa..c949934 100644
--- a/odb/traversal/enum.hxx
+++ b/odb/traversal/enum.hxx
@@ -12,10 +12,7 @@ namespace traversal
{
struct enumerates: edge<semantics::enumerates>
{
- enumerates ()
- {
- }
-
+ enumerates () {}
enumerates (node_dispatcher& n)
{
node_traverser (n);
@@ -27,12 +24,30 @@ namespace traversal
struct enumerator: node<semantics::enumerator> {};
+ struct underlies: edge<semantics::underlies>
+ {
+ underlies () {}
+ underlies (node_dispatcher& n)
+ {
+ node_traverser (n);
+ }
+
+ virtual void
+ traverse (type&);
+ };
+
struct enum_: node<semantics::enum_>
{
virtual void
traverse (type&);
virtual void
+ underlied (type&);
+
+ virtual void
+ underlied (type&, edge_dispatcher&);
+
+ virtual void
enumerates (type&);
virtual void