Skip to content

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.

arg.substr(x) arguments to cmStrCat are replaced with cm::string_view(arg).substr(x)

Edited by Sebastian Holtermann

Merge request reports