summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/cmDefinitions.cxx17
-rw-r--r--Source/cmDefinitions.h11
-rw-r--r--Source/cmMakefile.cxx2
3 files changed, 10 insertions, 20 deletions
diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx
index f2100eb6ad..c4d285a732 100644
--- a/Source/cmDefinitions.cxx
+++ b/Source/cmDefinitions.cxx
@@ -75,21 +75,16 @@ std::vector<std::string> cmDefinitions::LocalKeys() const
}
//----------------------------------------------------------------------------
-cmDefinitions cmDefinitions::Closure() const
-{
- return cmDefinitions(ClosureTag(), this);
-}
-
-//----------------------------------------------------------------------------
-cmDefinitions::cmDefinitions(ClosureTag const&, cmDefinitions const* root):
- Up(0)
+cmDefinitions cmDefinitions::MakeClosure() const
{
std::set<std::string> undefined;
- this->ClosureImpl(undefined, root);
+ cmDefinitions closure;
+ closure.MakeClosure(undefined, this);
+ return closure;
}
//----------------------------------------------------------------------------
-void cmDefinitions::ClosureImpl(std::set<std::string>& undefined,
+void cmDefinitions::MakeClosure(std::set<std::string>& undefined,
cmDefinitions const* defs)
{
// Consider local definitions.
@@ -114,7 +109,7 @@ void cmDefinitions::ClosureImpl(std::set<std::string>& undefined,
// Traverse parents.
if(cmDefinitions const* up = defs->Up)
{
- this->ClosureImpl(undefined, up);
+ this->MakeClosure(undefined, up);
}
}
diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h
index 4664090bfa..6917402711 100644
--- a/Source/cmDefinitions.h
+++ b/Source/cmDefinitions.h
@@ -45,13 +45,11 @@ public:
/** Get the set of all local keys. */
std::vector<std::string> LocalKeys() const;
- /** Compute the closure of all defined keys with values.
- This flattens the scope. The result has no parent. */
- cmDefinitions Closure() const;
-
/** Compute the set of all defined keys. */
std::vector<std::string> ClosureKeys() const;
+ cmDefinitions MakeClosure() const;
+
private:
// String with existence boolean.
struct Def: public std::string
@@ -81,10 +79,7 @@ private:
// Internal query and update methods.
Def const& GetInternal(const std::string& key);
- // Implementation of Closure() method.
- struct ClosureTag {};
- cmDefinitions(ClosureTag const&, cmDefinitions const* root);
- void ClosureImpl(std::set<std::string>& undefined,
+ void MakeClosure(std::set<std::string>& undefined,
cmDefinitions const* defs);
};
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index e2a9f61f51..dbb355c867 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -63,7 +63,7 @@ public:
void InitializeDefinitions(cmMakefile* parent)
{
- this->VarStack.top() = parent->Internal->VarStack.top().Closure();
+ this->VarStack.top() = parent->Internal->VarStack.top().MakeClosure();
}
const char* GetDefinition(std::string const& name)