diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-06-15 12:36:53 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-06-15 12:36:53 +0200 |
commit | e78db08d98d5adb4dee3006eea8c3569e383c562 (patch) | |
tree | 4df1473c158d69ee7b53c75cc61f1a282b72da99 /odb/common.cxx | |
parent | bbc39ffe31c67506b4c03fc56fa3adcb925b6325 (diff) |
Add points_to pragma
Currently does not support containers.
Diffstat (limited to 'odb/common.cxx')
-rw-r--r-- | odb/common.cxx | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/odb/common.cxx b/odb/common.cxx index 172e008..8dc995d 100644 --- a/odb/common.cxx +++ b/odb/common.cxx @@ -250,6 +250,12 @@ traverse_pointer (semantics::data_member& m, semantics::class_& c) } void object_columns_base:: +traverse_points_to (semantics::data_member& m, semantics::class_&) +{ + traverse_member (m, utype (m)); +} + +void object_columns_base:: traverse_composite (semantics::data_member*, semantics::class_& c) { inherits (c); @@ -453,10 +459,13 @@ traverse (semantics::data_member& m) if (oc_.section_test (oc_.member_path_)) { + using semantics::class_; semantics::type& t (utype (m)); - if (semantics::class_* c = object_pointer (t)) + if (class_* c = object_pointer (t)) oc_.traverse_pointer (m, *c); + else if (class_* c = points_to (m)) + oc_.traverse_points_to (m, *c); else oc_.traverse_member (m, t); } |