aboutsummaryrefslogtreecommitdiffstats
path: root/cppawk-include/case-priv.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2022-04-13 19:49:33 -0700
committerKaz Kylheku <kaz@kylheku.com>2022-04-13 19:49:33 -0700
commit262e553d94c4124bdb53784e73dd314e3e44f3b8 (patch)
tree16b6074643d0ee7ccea06800c85617ff9808e48b /cppawk-include/case-priv.h
parent21882c0d028b929ffaf9f5cfb009a2f20e6dea54 (diff)
downloadcppawk-262e553d94c4124bdb53784e73dd314e3e44f3b8.tar.gz
cppawk-262e553d94c4124bdb53784e73dd314e3e44f3b8.tar.bz2
cppawk-262e553d94c4124bdb53784e73dd314e3e44f3b8.zip
Some egawk support: use @let in case if available.
Diffstat (limited to 'cppawk-include/case-priv.h')
-rw-r--r--cppawk-include/case-priv.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/cppawk-include/case-priv.h b/cppawk-include/case-priv.h
index 6421877..3676e2b 100644
--- a/cppawk-include/case-priv.h
+++ b/cppawk-include/case-priv.h
@@ -64,8 +64,14 @@
#define __mtch_next(p, \
x) p || (__val ~ (x))
+#if !__have_let
#define __case_temps __val, __once, __pass
-#define __case(expr) for ((__once = 1) && (__pass = 0) || (__val = expr); \
+#else
+#define __case_temps __ign
+#endif
+
+#define __case(expr) __let (__val, __once, __pass) \
+ for ((__once = 1) && (__pass = 0) || (__val = expr); \
__once; \
__once = 0)
#define __of(...) __clause(__varexpand(__of_first, __of_next, \