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. // Lookup brief documentation.
std::string output; std::string output;
if(cmPropertyDefinition* def = if(cmPropertyDefinition const* def = this->Makefile->GetState()->
this->Makefile->GetState()->
GetPropertyDefinition(this->PropertyName, scope)) GetPropertyDefinition(this->PropertyName, scope))
{ {
output = def->GetShortDescription(); output = def->GetShortDescription();
@ -158,8 +157,7 @@ bool cmGetPropertyCommand
{ {
// Lookup full documentation. // Lookup full documentation.
std::string output; std::string output;
if(cmPropertyDefinition* def = if(cmPropertyDefinition const* def = this->Makefile->GetState()->
this->Makefile->GetState()->
GetPropertyDefinition(this->PropertyName, scope)) GetPropertyDefinition(this->PropertyName, scope))
{ {
output = def->GetFullDescription(); 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()) if (it == this->end())
{ {
return false; return false;
@ -40,9 +40,9 @@ bool cmPropertyDefinitionMap::IsPropertyDefined(const std::string& name)
return true; 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()) if (it == this->end())
{ {
return false; return false;

View File

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

View File

@ -256,27 +256,41 @@ void cmState::DefineProperty(const std::string& name,
chained); chained);
} }
cmPropertyDefinition *cmState cmPropertyDefinition const* cmState
::GetPropertyDefinition(const std::string& name, ::GetPropertyDefinition(const std::string& name,
cmProperty::ScopeType scope) cmProperty::ScopeType scope) const
{ {
if (this->IsPropertyDefined(name,scope)) 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; return 0;
} }
bool cmState::IsPropertyDefined(const std::string& name, 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, 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) void cmState::SetLanguageEnabled(std::string const& l)

View File

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