From 2f1d254fb49e8cc8bd9ea2137758614e5825eaed Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 25 Apr 2011 18:30:45 +0200 Subject: Add typedef hints, move hint map to semantics::unit --- odb/semantics/elements.hxx | 18 +++++++++++++++++- odb/semantics/unit.hxx | 19 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) (limited to 'odb/semantics') diff --git a/odb/semantics/elements.hxx b/odb/semantics/elements.hxx index b11211e..25b412a 100644 --- a/odb/semantics/elements.hxx +++ b/odb/semantics/elements.hxx @@ -223,9 +223,24 @@ namespace semantics return access_; } + // Names edge in terms of which this edge was defined. Can be NULL. + // + public: + void + hint (names& hint) + { + hint_ = &hint; + } + + names* + hint () const + { + return hint_; + } + public: names (string const& name, access_type access = access_type::public_) - : name_ (name), access_ (access) + : name_ (name), access_ (access), hint_ (0) { } @@ -246,6 +261,7 @@ namespace semantics nameable* named_; string name_; access_type access_; + names* hint_; }; // diff --git a/odb/semantics/unit.hxx b/odb/semantics/unit.hxx index 306d4c3..ac9f4f5 100644 --- a/odb/semantics/unit.hxx +++ b/odb/semantics/unit.hxx @@ -38,6 +38,22 @@ namespace semantics tree_node_map_[key] = &value; } + // Mapping from tree nodes to name hints. + // + public: + names* + find_hint (tree key) const + { + name_hint_map::const_iterator i (name_hint_map_.find (key)); + return i != name_hint_map_.end () ? i->second : 0; + } + + void + insert_hint (tree key, names& name) + { + name_hint_map_[key] = &name; + } + public: template T& @@ -158,6 +174,9 @@ namespace semantics typedef std::map tree_node_map; tree_node_map tree_node_map_; + + typedef std::map name_hint_map; + name_hint_map name_hint_map_; }; } -- cgit v1.1