From 5a2e172ce1f2d823bf0957602662bbab0c0dcd0b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 11 May 2012 12:07:56 +0200 Subject: Move lookup to semantic graph from parser --- cli/semantics/unit.hxx | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'cli/semantics/unit.hxx') diff --git a/cli/semantics/unit.hxx b/cli/semantics/unit.hxx index f20ba82..cd4198b 100644 --- a/cli/semantics/unit.hxx +++ b/cli/semantics/unit.hxx @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -139,6 +140,24 @@ namespace semantics typedef std::vector includes_list; public: + // Lookup a name in the specified starting scope. Empty scope denotes + // the global namespace. Starting scope should be a fully-qualified + // name while name can be qualified but should not be fully-qualified + // (to lookup a fully-qualified name use the global namespace as the + // starting scope). + // + // The lookup starts in this unit and continues in all the units that + // this unit includes, transitively. + // + // The outer flag specifies whether to search the outer scopes. + // + template + T* + lookup (std::string const& scope, + std::string const& name, + bool outer = true); + + public: typedef pointer_iterator includes_iterator; @@ -286,4 +305,6 @@ namespace semantics }; } +#include + #endif // CLI_SEMANTICS_UNIT_HXX -- cgit v1.1