From c1f534db5d6bc29f9be0e7498e4971c7132d013a Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 28 Aug 2013 07:52:50 +0200 Subject: Support for added and deleted data member pragmas --- odb/context.cxx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'odb/context.cxx') 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 | -- cgit v1.1