mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-02 12:19:54 -05:00
Source sweep: Use cmStrCat for string concatenation
This patch is generated by a python script that uses regular expressions to search for string concatenation patterns of the kind ``` std::string str = <ARG0>; str += <ARG1>; str += <ARG2>; ... ``` and replaces them with a single `cmStrCat` call ``` std::string str = cmStrCat(<ARG0>, <ARG1>, <ARG2>, ...); ``` If any `<ARGX>` is itself a concatenated string of the kind ``` a + b + c + ...; ``` then `<ARGX>` is split into multiple arguments for the `cmStrCat` call. If there's a sequence of literals in the `<ARGX>`, then all literals in the sequence are concatenated and merged into a single literal argument for the `cmStrCat` call. Single character strings are converted to single char arguments for the `cmStrCat` call. `std::to_string(...)` wrappings are removed from `cmStrCat` arguments, because it supports numeric types as well as string types. `arg.substr(x)` arguments to `cmStrCat` are replaced with `cm::string_view(arg).substr(x)`
This commit is contained in:
@@ -312,8 +312,7 @@ void cmFindLibraryHelper::AddName(std::string const& name)
|
||||
entry.Raw = name;
|
||||
|
||||
// Build a regular expression to match library names.
|
||||
std::string regex = "^";
|
||||
regex += this->PrefixRegexStr;
|
||||
std::string regex = cmStrCat('^', this->PrefixRegexStr);
|
||||
this->RegexFromLiteral(regex, name);
|
||||
regex += this->SuffixRegexStr;
|
||||
if (this->OpenBSD) {
|
||||
@@ -349,8 +348,7 @@ bool cmFindLibraryHelper::CheckDirectoryForName(std::string const& path,
|
||||
// one cannot tell just from the library name whether it is a static
|
||||
// library or an import library).
|
||||
if (name.TryRaw) {
|
||||
this->TestPath = path;
|
||||
this->TestPath += name.Raw;
|
||||
this->TestPath = cmStrCat(path, name.Raw);
|
||||
if (cmSystemTools::FileExists(this->TestPath, true)) {
|
||||
this->BestPath = cmSystemTools::CollapseFullPath(this->TestPath);
|
||||
cmSystemTools::ConvertToUnixSlashes(this->BestPath);
|
||||
@@ -375,8 +373,7 @@ bool cmFindLibraryHelper::CheckDirectoryForName(std::string const& path,
|
||||
std::string const& testName = origName;
|
||||
#endif
|
||||
if (name.Regex.find(testName)) {
|
||||
this->TestPath = path;
|
||||
this->TestPath += origName;
|
||||
this->TestPath = cmStrCat(path, origName);
|
||||
if (!cmSystemTools::FileIsDirectory(this->TestPath)) {
|
||||
// This is a matching file. Check if it is better than the
|
||||
// best name found so far. Earlier prefixes are preferred,
|
||||
@@ -466,9 +463,7 @@ std::string cmFindLibraryCommand::FindFrameworkLibraryNamesPerDir()
|
||||
// Search for all names in each search path.
|
||||
for (std::string const& d : this->SearchPaths) {
|
||||
for (std::string const& n : this->Names) {
|
||||
fwPath = d;
|
||||
fwPath += n;
|
||||
fwPath += ".framework";
|
||||
fwPath = cmStrCat(d, n, ".framework");
|
||||
if (cmSystemTools::FileIsDirectory(fwPath)) {
|
||||
return cmSystemTools::CollapseFullPath(fwPath);
|
||||
}
|
||||
@@ -485,9 +480,7 @@ std::string cmFindLibraryCommand::FindFrameworkLibraryDirsPerName()
|
||||
// Search for each name in all search paths.
|
||||
for (std::string const& n : this->Names) {
|
||||
for (std::string const& d : this->SearchPaths) {
|
||||
fwPath = d;
|
||||
fwPath += n;
|
||||
fwPath += ".framework";
|
||||
fwPath = cmStrCat(d, n, ".framework");
|
||||
if (cmSystemTools::FileIsDirectory(fwPath)) {
|
||||
return cmSystemTools::CollapseFullPath(fwPath);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user