Strip consecutive semicolons when preprocessing genex strings.

This commit is contained in:
Stephen Kelly 2013-01-13 09:39:29 +01:00 committed by Brad King
parent 3367d0cc7f
commit b279f2b431
1 changed files with 34 additions and 2 deletions

View File

@ -147,6 +147,38 @@ cmCompiledGeneratorExpression::~cmCompiledGeneratorExpression()
} }
} }
//----------------------------------------------------------------------------
static std::string stripEmptyListElements(const std::string &input)
{
std::string result;
const char *c = input.c_str();
bool skipSemiColons = true;
for ( ; *c; ++c)
{
if(c[0] == ';')
{
if(skipSemiColons)
{
continue;
}
skipSemiColons = true;
}
else
{
skipSemiColons = false;
}
result += *c;
}
if (!result.empty() && *(result.end() - 1) == ';')
{
result.resize(result.size() - 1);
}
return result;
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
static std::string stripAllGeneratorExpressions(const std::string &input) static std::string stripAllGeneratorExpressions(const std::string &input)
{ {
@ -186,7 +218,7 @@ static std::string stripAllGeneratorExpressions(const std::string &input)
lastPos = pos; lastPos = pos;
} }
result += input.substr(lastPos); result += input.substr(lastPos);
return result; return stripEmptyListElements(result);
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -247,7 +279,7 @@ static std::string stripExportInterface(const std::string &input,
} }
result += input.substr(lastPos); result += input.substr(lastPos);
return result; return stripEmptyListElements(result);
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------