summaryrefslogtreecommitdiffstats
path: root/Source/cmDefinitions.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-04-26 14:00:18 (GMT)
committerStephen Kelly <steveire@gmail.com>2015-04-29 21:54:02 (GMT)
commit60becdc65c5f8cfad4b2c6a33e3649d2acbddf39 (patch)
tree904d65c1798a133729dccbc6c563261744890812 /Source/cmDefinitions.cxx
parentd858f36339d61e45913165bc957d645bf1060f54 (diff)
downloadCMake-60becdc65c5f8cfad4b2c6a33e3649d2acbddf39.zip
CMake-60becdc65c5f8cfad4b2c6a33e3649d2acbddf39.tar.gz
CMake-60becdc65c5f8cfad4b2c6a33e3649d2acbddf39.tar.bz2
cmDefinitions: Implement MakeClosure in terms of a list of ancestors.
Diffstat (limited to 'Source/cmDefinitions.cxx')
-rw-r--r--Source/cmDefinitions.cxx25
1 files changed, 13 insertions, 12 deletions
diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx
index 5fe57c8..873a7b4 100644
--- a/Source/cmDefinitions.cxx
+++ b/Source/cmDefinitions.cxx
@@ -11,8 +11,6 @@
============================================================================*/
#include "cmDefinitions.h"
-#include <list>
-
//----------------------------------------------------------------------------
cmDefinitions::Def cmDefinitions::NoDef;
@@ -81,22 +79,25 @@ cmDefinitions cmDefinitions::MakeClosure() const
{
std::set<std::string> undefined;
cmDefinitions closure;
- closure.MakeClosure(undefined, this);
- return closure;
-}
-
-//----------------------------------------------------------------------------
-void cmDefinitions::MakeClosure(std::set<std::string>& undefined,
- cmDefinitions const* defs)
-{
+ cmDefinitions const* defs = this;
std::list<cmDefinitions const*> ups;
while(defs)
{
ups.push_back(defs);
defs = defs->Up;
}
- for (std::list<cmDefinitions const*>::const_iterator it = ups.begin();
- it != ups.end(); ++it)
+ closure.MakeClosure(undefined, ups.begin(), ups.end());
+ return closure;
+}
+
+//----------------------------------------------------------------------------
+void
+cmDefinitions::MakeClosure(std::set<std::string>& undefined,
+ std::list<cmDefinitions const*>::iterator begin,
+ std::list<cmDefinitions const*>::iterator end)
+{
+ for (std::list<cmDefinitions const*>::const_iterator it = begin;
+ it != end; ++it)
{
// Consider local definitions.
for(MapType::const_iterator mi = (*it)->Map.begin();