Merge topic 'delete-algorithm'
681d965d Use the cmDeleteAll algorithm for types derived from std::map. 4dc0c488 cmDeleteAll: Generalize deletion specialization for map types.
This commit is contained in:
commit
95d42840e8
@ -25,12 +25,7 @@ cmExportSet* cmExportSetMap::operator[](const std::string &name)
|
||||
|
||||
void cmExportSetMap::clear()
|
||||
{
|
||||
for(std::map<std::string, cmExportSet*>::iterator it = this->begin();
|
||||
it != this->end();
|
||||
++ it)
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
cmDeleteAll(*this);
|
||||
this->derived::clear();
|
||||
}
|
||||
|
||||
|
@ -1510,11 +1510,7 @@ void cmGlobalGenerator::CreateGeneratorTargets()
|
||||
//----------------------------------------------------------------------------
|
||||
void cmGlobalGenerator::ClearGeneratorMembers()
|
||||
{
|
||||
for(cmGeneratorTargetsType::iterator i = this->GeneratorTargets.begin();
|
||||
i != this->GeneratorTargets.end(); ++i)
|
||||
{
|
||||
delete i->second;
|
||||
}
|
||||
cmDeleteAll(this->GeneratorTargets);
|
||||
this->GeneratorTargets.clear();
|
||||
|
||||
cmDeleteAll(this->EvaluationFiles);
|
||||
|
@ -239,7 +239,20 @@ private:
|
||||
|
||||
namespace ContainerAlgorithms {
|
||||
|
||||
template<typename Container>
|
||||
template<typename T>
|
||||
struct cmIsPair
|
||||
{
|
||||
enum { value = false };
|
||||
};
|
||||
|
||||
template<typename K, typename V>
|
||||
struct cmIsPair<std::pair<K, V> >
|
||||
{
|
||||
enum { value = true };
|
||||
};
|
||||
|
||||
template<typename Container,
|
||||
bool valueTypeIsPair = cmIsPair<typename Container::value_type>::value>
|
||||
struct DefaultDeleter
|
||||
{
|
||||
void operator()(typename Container::value_type value) {
|
||||
@ -247,10 +260,10 @@ struct DefaultDeleter
|
||||
}
|
||||
};
|
||||
|
||||
template<typename K, typename V>
|
||||
struct DefaultDeleter<std::map<K, V> >
|
||||
template<typename Container>
|
||||
struct DefaultDeleter<Container, /* valueTypeIsPair = */ true>
|
||||
{
|
||||
void operator()(typename std::map<K, V>::value_type value) {
|
||||
void operator()(typename Container::value_type value) {
|
||||
delete value.second;
|
||||
}
|
||||
};
|
||||
|
@ -539,12 +539,7 @@ void cmTarget::ClearLinkMaps()
|
||||
this->Internal->LinkInterfaceUsageRequirementsOnlyMap.clear();
|
||||
this->Internal->LinkClosureMap.clear();
|
||||
this->Internal->SourceFilesMap.clear();
|
||||
for (cmTargetLinkInformationMap::const_iterator it
|
||||
= this->LinkInformation.begin();
|
||||
it != this->LinkInformation.end(); ++it)
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
cmDeleteAll(this->LinkInformation);
|
||||
this->LinkInformation.clear();
|
||||
}
|
||||
|
||||
@ -6874,10 +6869,7 @@ cmTargetLinkInformationMap
|
||||
//----------------------------------------------------------------------------
|
||||
cmTargetLinkInformationMap::~cmTargetLinkInformationMap()
|
||||
{
|
||||
for(derived::iterator i = this->begin(); i != this->end(); ++i)
|
||||
{
|
||||
delete i->second;
|
||||
}
|
||||
cmDeleteAll(*this);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user