aboutsummaryrefslogtreecommitdiff
path: root/odb/processor.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-09-17 11:11:43 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-09-17 11:11:43 +0200
commit791b94b894f93bc037637907616efc844f3d9414 (patch)
tree27b8d92cbe5f7918109842d36484fb4b639a020c /odb/processor.cxx
parent565ad74e164abdaaa31de146a1ef76f3d3f6734d (diff)
Add support for defining composite values inside persistent classes, etc
Diffstat (limited to 'odb/processor.cxx')
-rw-r--r--odb/processor.cxx17
1 files changed, 14 insertions, 3 deletions
diff --git a/odb/processor.cxx b/odb/processor.cxx
index 6730242..4221081 100644
--- a/odb/processor.cxx
+++ b/odb/processor.cxx
@@ -2005,9 +2005,15 @@ namespace
struct class_: traversal::class_, context
{
class_ ()
- : std_string_ (0), std_string_hint_ (0), access_ (0)
+ : typedefs_ (true),
+ std_string_ (0),
+ std_string_hint_ (0),
+ access_ (0)
{
- *this >> member_names_ >> member_;
+ *this >> defines_ >> *this;
+ *this >> typedefs_ >> *this;
+
+ member_names_ >> member_;
// Resolve the std::string type node.
//
@@ -2054,6 +2060,8 @@ namespace
if (k == class_other)
return;
+ names (c); // Process nested classes.
+
// Check if odb::access is a friend of this class.
//
c.set ("friend", access_ != 0 && is_friend (c.tree_node (), access_));
@@ -2068,7 +2076,7 @@ namespace
else if (k == class_view)
traverse_view_pre (c);
- names (c);
+ names (c, member_names_);
if (k == class_object)
traverse_object_post (c);
@@ -2921,6 +2929,9 @@ namespace
}
private:
+ traversal::defines defines_;
+ typedefs typedefs_;
+
data_member member_;
traversal::names member_names_;