FIX: apply patch from bug# 1965

This commit is contained in:
Bill Hoffman
2005-07-13 11:21:30 -04:00
parent 1e72091e86
commit aa47caab2d
9 changed files with 940 additions and 628 deletions
+85
View File
@@ -81,3 +81,88 @@ std::vector<const cmSourceFile*>& cmSourceGroup::GetSourceFiles()
{
return m_SourceFiles;
}
//----------------------------------------------------------------------------
void cmSourceGroup::AddChild(cmSourceGroup child)
{
m_GroupChildren.push_back(child);
}
//----------------------------------------------------------------------------
cmSourceGroup *cmSourceGroup::lookupChild(const char* name)
{
// initializing iterators
std::vector<cmSourceGroup>::iterator iter = m_GroupChildren.begin();
std::vector<cmSourceGroup>::iterator end = m_GroupChildren.end();
// st
for(;iter!=end; ++iter)
{
std::string sgName = iter->GetName();
// look if descenened is the one were looking for
if(sgName == name)
{
return &(*iter); // if it so return it
}
// if the descendend isn't the one where looking for ask it's traverse
cmSourceGroup *result = iter->lookupChild(name);
// if one of it's descendeds is the one we're looking for return it
if(result)
{
return result;
}
}
// if no child with this name was found return NULL
return NULL;
}
cmSourceGroup *cmSourceGroup::MatchChildrenFiles(const char *name)
{
// initializing iterators
std::vector<cmSourceGroup>::iterator iter = m_GroupChildren.begin();
std::vector<cmSourceGroup>::iterator end = m_GroupChildren.end();
if(this->MatchesFiles(name))
{
return this;
}
for(;iter!=end;++iter)
{
cmSourceGroup *result = iter->MatchChildrenFiles(name);
if(result)
{
return result;
}
}
return 0;
}
cmSourceGroup *cmSourceGroup::MatchChildrenRegex(const char *name)
{
// initializing iterators
std::vector<cmSourceGroup>::iterator iter = m_GroupChildren.begin();
std::vector<cmSourceGroup>::iterator end = m_GroupChildren.end();
if(this->MatchesRegex(name))
{
return this;
}
for(;iter!=end; ++iter)
{
cmSourceGroup *result = iter->MatchChildrenRegex(name);
if(result)
{
return result;
}
}
return 0;
}
std::vector<cmSourceGroup> cmSourceGroup::GetGroupChildren() const
{
return m_GroupChildren;
}