cmDefinitions: Use a hashmap for faster checks

The hash map is much faster at checking that the map won't have what
we're looking for so that we can just go to the parent scope instead.
This commit is contained in:
Ben Boeckel 2014-03-12 01:48:06 -04:00 committed by Ben Boeckel
parent 3b21705d53
commit e17a69bc74
2 changed files with 10 additions and 2 deletions

View File

@ -15,7 +15,8 @@
cmDefinitions::Def cmDefinitions::NoDef;
//----------------------------------------------------------------------------
cmDefinitions::cmDefinitions(cmDefinitions* parent): Up(parent)
cmDefinitions::cmDefinitions(cmDefinitions* parent)
: Up(parent)
{
}
@ -35,7 +36,7 @@ cmDefinitions::GetInternal(const std::string& key) const
{
return i->second;
}
else if(cmDefinitions* up = this->Up)
if(cmDefinitions* up = this->Up)
{
// Query the parent scope.
return up->GetInternal(key);

View File

@ -13,6 +13,9 @@
#define cmDefinitions_h
#include "cmStandardIncludes.h"
#if defined(CMAKE_BUILD_WITH_CMAKE)
#include "cmsys/hash_map.hxx"
#endif
/** \class cmDefinitions
* \brief Store a scope of variable definitions for CMake language.
@ -71,7 +74,11 @@ private:
cmDefinitions* Up;
// Local definitions, set or unset.
#if defined(CMAKE_BUILD_WITH_CMAKE)
typedef cmsys::hash_map<std::string, Def> MapType;
#else
typedef std::map<std::string, Def> MapType;
#endif
MapType Map;
// Internal query and update methods.