From 75cb738cae0dcd0c536d7f71ad48e9d27c297fa2 Mon Sep 17 00:00:00 2001 From: Joel Rosdahl Date: Tue, 5 Aug 2025 10:45:41 +0200 Subject: [PATCH] refactor: Extract macros for creating unique variable names --- src/ccache/util/defer.hpp | 10 +++++----- src/ccache/util/macro.hpp | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 src/ccache/util/macro.hpp diff --git a/src/ccache/util/defer.hpp b/src/ccache/util/defer.hpp index e04898f1..cb40b9f6 100644 --- a/src/ccache/util/defer.hpp +++ b/src/ccache/util/defer.hpp @@ -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. // @@ -18,12 +18,12 @@ #pragma once +#include + #include -#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 index 00000000..de1e04aa --- /dev/null +++ b/src/ccache/util/macro.hpp @@ -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__) -- 2.47.2