aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-09-09 12:13:45 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-09-09 12:13:45 +0200
commit164d595dba8cadbe3b889b6e809aec8a24a8d878 (patch)
tree757da18af45a7d40caf4e228249dfc025143d1a5
parent6d4167d63b657aae2f4d57225eda37fb3c03291f (diff)
Add support for ignoring bases in has_a() test
-rw-r--r--odb/context.cxx9
-rw-r--r--odb/context.hxx2
2 files changed, 11 insertions, 0 deletions
diff --git a/odb/context.cxx b/odb/context.cxx
index 56b9ab0..03f0308 100644
--- a/odb/context.cxx
+++ b/odb/context.cxx
@@ -971,6 +971,15 @@ namespace
"value");
}
+ virtual void
+ traverse_object (semantics::class_& c)
+ {
+ if ((flags_ & context::exclude_base) == 0)
+ inherits (c);
+
+ names (c);
+ }
+
private:
bool r_;
unsigned short flags_;
diff --git a/odb/context.hxx b/odb/context.hxx
index e00ec4e..cb8e2ef 100644
--- a/odb/context.hxx
+++ b/odb/context.hxx
@@ -385,6 +385,8 @@ public:
static unsigned short const test_straight_container = 0x10;
static unsigned short const test_inverse_container = 0x20;
+ static unsigned short const exclude_base = 0x8000;
+
bool
is_a (semantics::data_member& m, unsigned short flags)
{