From 9b334397f55b70689ff1d8f7d6767a34834e85b6 Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Thu, 22 Aug 2019 16:34:40 +0200 Subject: 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 = ; str += ; str += ; ... ``` and replaces them with a single `cmStrCat` call ``` std::string str = cmStrCat(, , , ...); ``` If any `` is itself a concatenated string of the kind ``` a + b + c + ...; ``` then `` is split into multiple arguments for the `cmStrCat` call. If there's a sequence of literals in the ``, 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)` --- Source/cmUtilitySourceCommand.cxx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'Source/cmUtilitySourceCommand.cxx') diff --git a/Source/cmUtilitySourceCommand.cxx b/Source/cmUtilitySourceCommand.cxx index b59a587cd4..d255b6795a 100644 --- a/Source/cmUtilitySourceCommand.cxx +++ b/Source/cmUtilitySourceCommand.cxx @@ -7,6 +7,7 @@ #include "cmMakefile.h" #include "cmState.h" #include "cmStateTypes.h" +#include "cmStringAlgorithms.h" #include "cmSystemTools.h" class cmExecutionStatus; @@ -35,11 +36,11 @@ bool cmUtilitySourceCommand::InitialPass(std::vector const& args, if (this->Makefile->IsOn("CMAKE_CROSSCOMPILING")) { haveCacheValue = (cacheValue != nullptr); if (!haveCacheValue) { - std::string msg = "UTILITY_SOURCE is used in cross compiling mode for "; - msg += cacheEntry; - msg += ". If your intention is to run this executable, you need to " - "preload the cache with the full path to a version of that " - "program, which runs on this build machine."; + std::string msg = cmStrCat( + "UTILITY_SOURCE is used in cross compiling mode for ", cacheEntry, + ". If your intention is to run this executable, you need to " + "preload the cache with the full path to a version of that " + "program, which runs on this build machine."); cmSystemTools::Message(msg, "Warning"); } } else { -- cgit v1.2.1