Merge topic 'join-algorithm'
55a73e6b
Use the cmJoin algorithm where possible.8dc8d756
cmStandardIncludes: Add a join algorithm for string containers.b5813cee
cmInstallCommand: Remove unused variable.
This commit is contained in:
commit
dd6c596c12
|
@ -444,18 +444,7 @@ std::string cmComputeLinkInformation::GetRPathLinkString()
|
|||
}
|
||||
|
||||
// Construct the linker runtime search path.
|
||||
std::string rpath_link;
|
||||
const char* sep = "";
|
||||
std::vector<std::string> const& dirs =
|
||||
this->OrderDependentRPath->GetOrderedDirectories();
|
||||
for(std::vector<std::string>::const_iterator di = dirs.begin();
|
||||
di != dirs.end(); ++di)
|
||||
{
|
||||
rpath_link += sep;
|
||||
sep = ":";
|
||||
rpath_link += *di;
|
||||
}
|
||||
return rpath_link;
|
||||
return cmJoin(this->OrderDependentRPath->GetOrderedDirectories(), ":");
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
@ -1988,18 +1977,7 @@ std::string cmComputeLinkInformation::GetRPathString(bool for_install)
|
|||
this->GetRPath(runtimeDirs, for_install);
|
||||
|
||||
// Concatenate the paths.
|
||||
std::string rpath;
|
||||
const char* sep = "";
|
||||
for(std::vector<std::string>::const_iterator ri = runtimeDirs.begin();
|
||||
ri != runtimeDirs.end(); ++ri)
|
||||
{
|
||||
// Separate from previous path.
|
||||
rpath += sep;
|
||||
sep = this->GetRuntimeSep().c_str();
|
||||
|
||||
// Add this path.
|
||||
rpath += *ri;
|
||||
}
|
||||
std::string rpath = cmJoin(runtimeDirs, this->GetRuntimeSep());
|
||||
|
||||
// If the rpath will be replaced at install time, prepare space.
|
||||
if(!for_install && this->RuntimeUseChrpath)
|
||||
|
|
|
@ -803,18 +803,9 @@ static const struct JoinNode : public cmGeneratorExpressionNode
|
|||
const GeneratorExpressionContent *,
|
||||
cmGeneratorExpressionDAGChecker *) const
|
||||
{
|
||||
std::string result;
|
||||
|
||||
std::vector<std::string> list;
|
||||
cmSystemTools::ExpandListArgument(parameters.front(), list);
|
||||
std::string sep;
|
||||
for(std::vector<std::string>::const_iterator li = list.begin();
|
||||
li != list.end(); ++li)
|
||||
{
|
||||
result += sep + *li;
|
||||
sep = parameters[1];
|
||||
}
|
||||
return result;
|
||||
return cmJoin(list, parameters[1]);
|
||||
}
|
||||
} joinNode;
|
||||
|
||||
|
|
|
@ -777,19 +777,8 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
|
|||
this->Makefile->GetLocalGenerator()->GetGlobalGenerator()
|
||||
->GetExportSets()[exports.GetString()]->AddTargetExport(te);
|
||||
|
||||
std::vector<std::string> dirs = includesArgs.GetIncludeDirs();
|
||||
if(!dirs.empty())
|
||||
{
|
||||
std::string dirString;
|
||||
const char *sep = "";
|
||||
for (std::vector<std::string>::const_iterator it = dirs.begin();
|
||||
it != dirs.end(); ++it)
|
||||
{
|
||||
te->InterfaceIncludeDirectories += sep;
|
||||
te->InterfaceIncludeDirectories += *it;
|
||||
sep = ";";
|
||||
}
|
||||
}
|
||||
te->InterfaceIncludeDirectories =
|
||||
cmJoin(includesArgs.GetIncludeDirs(), ";");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -353,15 +353,7 @@ bool cmListCommand::HandleInsertCommand(std::vector<std::string> const& args)
|
|||
cnt ++;
|
||||
}
|
||||
|
||||
std::string value;
|
||||
const char* sep = "";
|
||||
for ( cc = 0; cc < varArgsExpanded.size(); cc ++ )
|
||||
{
|
||||
value += sep;
|
||||
value += varArgsExpanded[cc];
|
||||
sep = ";";
|
||||
}
|
||||
|
||||
std::string value = cmJoin(varArgsExpanded, ";");
|
||||
this->Makefile->AddDefinition(listName, value.c_str());
|
||||
return true;
|
||||
}
|
||||
|
@ -402,15 +394,8 @@ bool cmListCommand
|
|||
}
|
||||
}
|
||||
|
||||
std::string value;
|
||||
const char* sep = "";
|
||||
for ( cc = 0; cc < varArgsExpanded.size(); cc ++ )
|
||||
{
|
||||
value += sep;
|
||||
value += varArgsExpanded[cc];
|
||||
sep = ";";
|
||||
}
|
||||
|
||||
std::string value = cmJoin(varArgsExpanded, ";");
|
||||
this->Makefile->AddDefinition(listName, value.c_str());
|
||||
return true;
|
||||
}
|
||||
|
@ -518,16 +503,7 @@ bool cmListCommand
|
|||
|
||||
std::sort(varArgsExpanded.begin(), varArgsExpanded.end());
|
||||
|
||||
std::string value;
|
||||
std::vector<std::string>::iterator it;
|
||||
const char* sep = "";
|
||||
for ( it = varArgsExpanded.begin(); it != varArgsExpanded.end(); ++ it )
|
||||
{
|
||||
value += sep;
|
||||
value += it->c_str();
|
||||
sep = ";";
|
||||
}
|
||||
|
||||
std::string value = cmJoin(varArgsExpanded, ";");
|
||||
this->Makefile->AddDefinition(listName, value.c_str());
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1791,22 +1791,12 @@ void cmMakefile::AddIncludeDirectories(const std::vector<std::string> &incs,
|
|||
return;
|
||||
}
|
||||
|
||||
std::string incString;
|
||||
std::string sep;
|
||||
|
||||
for(std::vector<std::string>::const_iterator li = incs.begin();
|
||||
li != incs.end(); ++li)
|
||||
{
|
||||
incString += sep + *li;
|
||||
sep = ";";
|
||||
}
|
||||
|
||||
std::vector<cmValueWithOrigin>::iterator position =
|
||||
before ? this->IncludeDirectoriesEntries.begin()
|
||||
: this->IncludeDirectoriesEntries.end();
|
||||
|
||||
cmListFileBacktrace lfbt = this->GetBacktrace();
|
||||
cmValueWithOrigin entry(incString, lfbt);
|
||||
cmValueWithOrigin entry(cmJoin(incs, ";"), lfbt);
|
||||
this->IncludeDirectoriesEntries.insert(position, entry);
|
||||
|
||||
// Property on each target:
|
||||
|
|
|
@ -224,16 +224,7 @@ std::string cmQtAutoGenerators::ListQt5RccInputs(cmSourceFile* sf,
|
|||
}
|
||||
}
|
||||
depends.insert(depends.end(), qrcEntries.begin(), qrcEntries.end());
|
||||
std::string entriesList;
|
||||
const char* sep = "";
|
||||
for(std::vector<std::string>::const_iterator it = qrcEntries.begin();
|
||||
it != qrcEntries.end(); ++it)
|
||||
{
|
||||
entriesList += sep;
|
||||
entriesList += *it;
|
||||
sep = "@list_sep@";
|
||||
}
|
||||
return entriesList;
|
||||
return cmJoin(qrcEntries, "@list_sep@");
|
||||
}
|
||||
|
||||
std::string cmQtAutoGenerators::ListQt4RccInputs(cmSourceFile* sf,
|
||||
|
@ -512,29 +503,13 @@ static void GetCompileDefinitionsAndDirectories(cmTarget const* target,
|
|||
// Get the include dirs for this target, without stripping the implicit
|
||||
// include dirs off, see http://public.kitware.com/Bug/view.php?id=13667
|
||||
localGen->GetIncludeDirectories(includeDirs, gtgt, "CXX", config, false);
|
||||
const char* sep = "";
|
||||
incs = "";
|
||||
for(std::vector<std::string>::const_iterator incDirIt = includeDirs.begin();
|
||||
incDirIt != includeDirs.end();
|
||||
++incDirIt)
|
||||
{
|
||||
incs += sep;
|
||||
sep = ";";
|
||||
incs += *incDirIt;
|
||||
}
|
||||
|
||||
incs = cmJoin(includeDirs, ";");
|
||||
|
||||
std::set<std::string> defines;
|
||||
localGen->AddCompileDefinitions(defines, target, config);
|
||||
|
||||
sep = "";
|
||||
for(std::set<std::string>::const_iterator defIt = defines.begin();
|
||||
defIt != defines.end();
|
||||
++defIt)
|
||||
{
|
||||
defs += sep;
|
||||
sep = ";";
|
||||
defs += *defIt;
|
||||
}
|
||||
defs += cmJoin(defines, ";");
|
||||
}
|
||||
|
||||
void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget const* target)
|
||||
|
@ -879,16 +854,7 @@ static void GetUicOpts(cmTarget const* target, const std::string& config,
|
|||
{
|
||||
std::vector<std::string> opts;
|
||||
target->GetAutoUicOptions(opts, config);
|
||||
|
||||
const char* sep = "";
|
||||
for(std::vector<std::string>::const_iterator optIt = opts.begin();
|
||||
optIt != opts.end();
|
||||
++optIt)
|
||||
{
|
||||
optString += sep;
|
||||
sep = ";";
|
||||
optString += *optIt;
|
||||
}
|
||||
optString = cmJoin(opts, ";");
|
||||
}
|
||||
|
||||
void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target,
|
||||
|
|
|
@ -417,14 +417,7 @@ void cmRST::ProcessDirectiveReplace()
|
|||
{
|
||||
// Record markup lines as replacement text.
|
||||
std::string& replacement = this->Replace[this->ReplaceName];
|
||||
const char* sep = "";
|
||||
for(std::vector<std::string>::iterator i = this->MarkupLines.begin();
|
||||
i != this->MarkupLines.end(); ++i)
|
||||
{
|
||||
replacement += sep;
|
||||
replacement += *i;
|
||||
sep = " ";
|
||||
}
|
||||
replacement += cmJoin(this->MarkupLines, " ");
|
||||
this->ReplaceName = "";
|
||||
}
|
||||
|
||||
|
|
|
@ -143,6 +143,33 @@ static thisClass* SafeDownCast(cmObject *c) \
|
|||
} \
|
||||
class cmTypeMacro_UseTrailingSemicolon
|
||||
|
||||
template<typename Range>
|
||||
std::string cmJoin(Range const& r, const char* delimiter)
|
||||
{
|
||||
if (r.empty())
|
||||
{
|
||||
return std::string();
|
||||
}
|
||||
std::ostringstream os;
|
||||
typedef typename Range::value_type ValueType;
|
||||
typedef typename Range::const_iterator InputIt;
|
||||
InputIt first = r.begin();
|
||||
InputIt last = r.end();
|
||||
--last;
|
||||
std::copy(first, last,
|
||||
std::ostream_iterator<ValueType>(os, delimiter));
|
||||
|
||||
os << *last;
|
||||
|
||||
return os.str();
|
||||
}
|
||||
|
||||
template<typename Range>
|
||||
std::string cmJoin(Range const& r, std::string delimiter)
|
||||
{
|
||||
return cmJoin(r, delimiter.c_str());
|
||||
};
|
||||
|
||||
inline bool cmHasLiteralPrefixImpl(const std::string &str1,
|
||||
const char *str2,
|
||||
size_t N)
|
||||
|
|
|
@ -824,18 +824,12 @@ bool cmSystemTools::RunSingleCommand(
|
|||
std::string
|
||||
cmSystemTools::PrintSingleCommand(std::vector<std::string> const& command)
|
||||
{
|
||||
std::string commandStr;
|
||||
const char* sep = "";
|
||||
for(std::vector<std::string>::const_iterator i = command.begin();
|
||||
i != command.end(); ++i)
|
||||
if (command.empty())
|
||||
{
|
||||
commandStr += sep;
|
||||
commandStr += "\"";
|
||||
commandStr += *i;
|
||||
commandStr += "\"";
|
||||
sep = " ";
|
||||
return std::string();
|
||||
}
|
||||
return commandStr;
|
||||
|
||||
return "\"" + cmJoin(command, "\" \"") + "\"";
|
||||
}
|
||||
|
||||
bool cmSystemTools::DoesFileExistWithExtensions(
|
||||
|
|
|
@ -919,16 +919,7 @@ void cmTarget::GetSourceFiles(std::vector<cmSourceFile*> &files,
|
|||
//----------------------------------------------------------------------------
|
||||
void cmTarget::AddTracedSources(std::vector<std::string> const& srcs)
|
||||
{
|
||||
std::string srcFiles;
|
||||
const char* sep = "";
|
||||
for(std::vector<std::string>::const_iterator i = srcs.begin();
|
||||
i != srcs.end(); ++i)
|
||||
{
|
||||
std::string filename = *i;
|
||||
srcFiles += sep;
|
||||
srcFiles += filename;
|
||||
sep = ";";
|
||||
}
|
||||
std::string srcFiles = cmJoin(srcs, ";");
|
||||
if (!srcFiles.empty())
|
||||
{
|
||||
this->Internal->SourceFilesMap.clear();
|
||||
|
@ -6076,24 +6067,8 @@ cmTargetInternals::ComputeLinkInterfaceLibraries(
|
|||
}
|
||||
if (ifaceLibs != iface.Libraries)
|
||||
{
|
||||
std::string oldLibraries;
|
||||
std::string newLibraries;
|
||||
const char *sep = "";
|
||||
for(std::vector<cmLinkImplItem>::const_iterator it
|
||||
= impl->Libraries.begin(); it != impl->Libraries.end(); ++it)
|
||||
{
|
||||
oldLibraries += sep;
|
||||
oldLibraries += *it;
|
||||
sep = ";";
|
||||
}
|
||||
sep = "";
|
||||
for(std::vector<cmLinkItem>::const_iterator it
|
||||
= ifaceLibs.begin(); it != ifaceLibs.end(); ++it)
|
||||
{
|
||||
newLibraries += sep;
|
||||
newLibraries += *it;
|
||||
sep = ";";
|
||||
}
|
||||
std::string oldLibraries = cmJoin(impl->Libraries, ";");
|
||||
std::string newLibraries = cmJoin(ifaceLibs, ";");
|
||||
if(oldLibraries.empty())
|
||||
{ oldLibraries = "(empty)"; }
|
||||
if(newLibraries.empty())
|
||||
|
|
|
@ -40,15 +40,7 @@ void cmTargetCompileFeaturesCommand
|
|||
std::string cmTargetCompileFeaturesCommand
|
||||
::Join(const std::vector<std::string> &content)
|
||||
{
|
||||
std::string defs;
|
||||
std::string sep;
|
||||
for(std::vector<std::string>::const_iterator it = content.begin();
|
||||
it != content.end(); ++it)
|
||||
{
|
||||
defs += sep + *it;
|
||||
sep = ";";
|
||||
}
|
||||
return defs;
|
||||
return cmJoin(content, ";");
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -39,15 +39,7 @@ void cmTargetCompileOptionsCommand
|
|||
std::string cmTargetCompileOptionsCommand
|
||||
::Join(const std::vector<std::string> &content)
|
||||
{
|
||||
std::string defs;
|
||||
std::string sep;
|
||||
for(std::vector<std::string>::const_iterator it = content.begin();
|
||||
it != content.end(); ++it)
|
||||
{
|
||||
defs += sep + *it;
|
||||
sep = ";";
|
||||
}
|
||||
return defs;
|
||||
return cmJoin(content, ";");
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -91,15 +91,7 @@ void cmTargetIncludeDirectoriesCommand
|
|||
|
||||
if (system)
|
||||
{
|
||||
std::string joined;
|
||||
std::string sep;
|
||||
for(std::vector<std::string>::const_iterator it = content.begin();
|
||||
it != content.end(); ++it)
|
||||
{
|
||||
joined += sep;
|
||||
sep = ";";
|
||||
joined += *it;
|
||||
}
|
||||
std::string joined = cmJoin(content, ";");
|
||||
tgt->AppendProperty("INTERFACE_SYSTEM_INCLUDE_DIRECTORIES",
|
||||
joined.c_str());
|
||||
}
|
||||
|
|
|
@ -44,15 +44,7 @@ void cmTargetSourcesCommand
|
|||
std::string cmTargetSourcesCommand
|
||||
::Join(const std::vector<std::string> &content)
|
||||
{
|
||||
std::string srcs;
|
||||
std::string sep;
|
||||
for(std::vector<std::string>::const_iterator it = content.begin();
|
||||
it != content.end(); ++it)
|
||||
{
|
||||
srcs += sep + *it;
|
||||
sep = ";";
|
||||
}
|
||||
return srcs;
|
||||
return cmJoin(content, ";");
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -2320,14 +2320,7 @@ const char *cmake::GetProperty(const std::string& prop,
|
|||
{
|
||||
std::vector<std::string> enLangs;
|
||||
this->GlobalGenerator->GetEnabledLanguages(enLangs);
|
||||
const char* sep = "";
|
||||
for(std::vector<std::string>::iterator i = enLangs.begin();
|
||||
i != enLangs.end(); ++i)
|
||||
{
|
||||
lang += sep;
|
||||
sep = ";";
|
||||
lang += *i;
|
||||
}
|
||||
lang = cmJoin(enLangs, ";");
|
||||
}
|
||||
this->SetProperty("ENABLED_LANGUAGES", lang.c_str());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue