]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
refactor: Extract macros for creating unique variable names
authorJoel Rosdahl <joel@rosdahl.net>
Tue, 5 Aug 2025 08:45:41 +0000 (10:45 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Tue, 5 Aug 2025 09:01:04 +0000 (11:01 +0200)
src/ccache/util/defer.hpp
src/ccache/util/macro.hpp [new file with mode: 0644]

index e04898f12b4f1036efd5a343d88204492fac2830..cb40b9f6df1de3f30f549bc7e34a5f9fc960103b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2024 Joel Rosdahl and other contributors
+// Copyright (C) 2020-2025 Joel Rosdahl and other contributors
 //
 // See doc/AUTHORS.adoc for a complete list of contributors.
 //
 
 #pragma once
 
+#include <ccache/util/macro.hpp>
+
 #include <functional>
 
-#define DEFER_CONCAT2(x, y) x##y
-#define DEFER_CONCAT1(x, y) DEFER_CONCAT2(x, y)
-#define DEFER_VARNAME DEFER_CONCAT1(_deferrer_, __LINE__)
-#define DEFER(...) util::Deferrer DEFER_VARNAME([&] { (void)__VA_ARGS__; })
+#define DEFER(...)                                                             \
+  util::Deferrer UNIQUE_VARNAME(_deferrer_)([&] { (void)__VA_ARGS__; })
 
 namespace util {
 
diff --git a/src/ccache/util/macro.hpp b/src/ccache/util/macro.hpp
new file mode 100644 (file)
index 0000000..de1e04a
--- /dev/null
@@ -0,0 +1,23 @@
+// Copyright (C) 2025 Joel Rosdahl and other contributors
+//
+// See doc/AUTHORS.adoc for a complete list of contributors.
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 3 of the License, or (at your option)
+// any later version.
+//
+// This program is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+// more details.
+//
+// You should have received a copy of the GNU General Public License along with
+// this program; if not, write to the Free Software Foundation, Inc., 51
+// Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+#pragma once
+
+#define UNIQUE_VARNAME_CONCAT_HELPER(x, y) x##y
+#define UNIQUE_VARNAME_CONCAT(x, y) UNIQUE_VARNAME_CONCAT_HELPER(x, y)
+#define UNIQUE_VARNAME(prefix) UNIQUE_VARNAME_CONCAT(prefix, __LINE__)