From 05078f4561c45a60cd208a9d3037ad1925a7e80a Mon Sep 17 00:00:00 2001 From: Fabrice Date: Wed, 11 Feb 2026 16:24:21 +0100 Subject: use err defers --- src/utils.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/utils.h') diff --git a/src/utils.h b/src/utils.h index deba95f..ce19428 100644 --- a/src/utils.h +++ b/src/utils.h @@ -88,4 +88,22 @@ struct defer_s { ~defer_s() { func(); } }; -#define wayc_defer(func) auto WAYC_UNIQUE(_defer_) = defer_s([&]() { func; }) \ No newline at end of file +#define wayc_defer(func) auto WAYC_UNIQUE(_defer_) = defer_s([&]() { func; }) + +template +struct defer_cond_s { + Func func; + S* signal; + S expected; + + defer_cond_s(Func func, S* cond, S expected) + : func(func), signal(cond), expected(expected) {} + + ~defer_cond_s() { + if (*signal == expected) return; + func(); + } +}; + +#define wayc_defer_cond(func, cond, expected) \ + auto WAYC_UNIQUE(_defer_) = defer_cond_s([&]() { func; }, &cond, expected) \ No newline at end of file -- cgit v1.2.3