aboutsummaryrefslogtreecommitdiff
path: root/odb/context.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-08-28 07:52:50 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-08-28 07:52:50 +0200
commitc1f534db5d6bc29f9be0e7498e4971c7132d013a (patch)
tree198aef1cf6a2b84b929fbd54274875448f7e9a2e /odb/context.cxx
parentc4b6357a9908fb05261efa8764e5c8a6d8727b96 (diff)
Support for added and deleted data member pragmas
Diffstat (limited to 'odb/context.cxx')
-rw-r--r--odb/context.cxx18
1 files changed, 18 insertions, 0 deletions
diff --git a/odb/context.cxx b/odb/context.cxx
index a4609df..35433c9 100644
--- a/odb/context.cxx
+++ b/odb/context.cxx
@@ -2471,6 +2471,12 @@ namespace
if (m.count ("polymorphic-ref"))
return;
+ // Ignore added/deleted members if so requested.
+ //
+ if (((flags_ & exclude_added) != 0 && added (member_path_)) ||
+ ((flags_ & exclude_deleted) != 0 && deleted (member_path_)))
+ return;
+
if (context::is_a (member_path_, member_scope_, flags_))
r_++;
@@ -2480,6 +2486,12 @@ namespace
virtual void
traverse_simple (semantics::data_member&)
{
+ // Ignore added/deleted members if so requested.
+ //
+ if (((flags_ & exclude_added) != 0 && added (member_path_)) ||
+ ((flags_ & exclude_deleted) != 0 && deleted (member_path_)))
+ return;
+
if (context::is_a (member_path_, member_scope_, flags_))
r_++;
}
@@ -2487,6 +2499,12 @@ namespace
virtual void
traverse_container (semantics::data_member&, semantics::type& c)
{
+ // Ignore added/deleted members if so requested.
+ //
+ if (((flags_ & exclude_added) != 0 && added (member_path_)) ||
+ ((flags_ & exclude_deleted) != 0 && deleted (member_path_)))
+ return;
+
// We don't cross the container boundaries (separate table).
//
unsigned short f (flags_ & (context::test_container |