Constify property definition API.

This commit is contained in:
Stephen Kelly 2015-06-06 09:46:38 +02:00
parent 1c48edf8fc
commit 9058e27a43
5 changed files with 35 additions and 21 deletions

View File

@ -142,8 +142,7 @@ bool cmGetPropertyCommand
{
// Lookup brief documentation.
std::string output;
if(cmPropertyDefinition* def =
this->Makefile->GetState()->
if(cmPropertyDefinition const* def = this->Makefile->GetState()->
GetPropertyDefinition(this->PropertyName, scope))
{
output = def->GetShortDescription();
@ -158,8 +157,7 @@ bool cmGetPropertyCommand
{
// Lookup full documentation.
std::string output;
if(cmPropertyDefinition* def =
this->Makefile->GetState()->
if(cmPropertyDefinition const* def = this->Makefile->GetState()->
GetPropertyDefinition(this->PropertyName, scope))
{
output = def->GetFullDescription();

View File

@ -29,9 +29,9 @@ void cmPropertyDefinitionMap
}
}
bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name)
bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name) const
{
cmPropertyDefinitionMap::iterator it = this->find(name);
cmPropertyDefinitionMap::const_iterator it = this->find(name);
if (it == this->end())
{
return false;
@ -40,9 +40,9 @@ bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name)
return true;
}
bool cmPropertyDefinitionMap::IsPropertyChained(const std::string& name)
bool cmPropertyDefinitionMap::IsPropertyChained(const std::string& name) const
{
cmPropertyDefinitionMap::iterator it = this->find(name);
cmPropertyDefinitionMap::const_iterator it = this->find(name);
if (it == this->end())
{
return false;

View File

@ -27,10 +27,10 @@ public:
bool chain);
// has a named property been defined
bool IsPropertyDefined(const std::string& name);
bool IsPropertyDefined(const std::string& name) const;
// is a named property set to chain
bool IsPropertyChained(const std::string& name);
bool IsPropertyChained(const std::string& name) const;
};
#endif

View File

@ -256,27 +256,41 @@ void cmState::DefineProperty(const std::string& name,
chained);
}
cmPropertyDefinition *cmState
cmPropertyDefinition const* cmState
::GetPropertyDefinition(const std::string& name,
cmProperty::ScopeType scope)
cmProperty::ScopeType scope) const
{
if (this->IsPropertyDefined(name,scope))
{
return &(this->PropertyDefinitions[scope][name]);
cmPropertyDefinitionMap const& defs =
this->PropertyDefinitions.find(scope)->second;
return &defs.find(name)->second;
}
return 0;
}
bool cmState::IsPropertyDefined(const std::string& name,
cmProperty::ScopeType scope)
cmProperty::ScopeType scope) const
{
return this->PropertyDefinitions[scope].IsPropertyDefined(name);
std::map<cmProperty::ScopeType, cmPropertyDefinitionMap>::const_iterator it
= this->PropertyDefinitions.find(scope);
if (it == this->PropertyDefinitions.end())
{
return false;
}
return it->second.IsPropertyDefined(name);
}
bool cmState::IsPropertyChained(const std::string& name,
cmProperty::ScopeType scope)
cmProperty::ScopeType scope) const
{
return this->PropertyDefinitions[scope].IsPropertyChained(name);
std::map<cmProperty::ScopeType, cmPropertyDefinitionMap>::const_iterator it
= this->PropertyDefinitions.find(scope);
if (it == this->PropertyDefinitions.end())
{
return false;
}
return it->second.IsPropertyChained(name);
}
void cmState::SetLanguageEnabled(std::string const& l)

View File

@ -102,12 +102,14 @@ public:
bool chain = false);
// get property definition
cmPropertyDefinition *GetPropertyDefinition
(const std::string& name, cmProperty::ScopeType scope);
cmPropertyDefinition const* GetPropertyDefinition
(const std::string& name, cmProperty::ScopeType scope) const;
// Is a property defined?
bool IsPropertyDefined(const std::string& name, cmProperty::ScopeType scope);
bool IsPropertyChained(const std::string& name, cmProperty::ScopeType scope);
bool IsPropertyDefined(const std::string& name,
cmProperty::ScopeType scope) const;
bool IsPropertyChained(const std::string& name,
cmProperty::ScopeType scope) const;
void SetLanguageEnabled(std::string const& l);
bool GetLanguageEnabled(std::string const& l) const;