diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-04-13 19:49:33 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-04-13 19:49:33 -0700 |
commit | 262e553d94c4124bdb53784e73dd314e3e44f3b8 (patch) | |
tree | 16b6074643d0ee7ccea06800c85617ff9808e48b /cppawk-include | |
parent | 21882c0d028b929ffaf9f5cfb009a2f20e6dea54 (diff) | |
download | cppawk-262e553d94c4124bdb53784e73dd314e3e44f3b8.tar.gz cppawk-262e553d94c4124bdb53784e73dd314e3e44f3b8.tar.bz2 cppawk-262e553d94c4124bdb53784e73dd314e3e44f3b8.zip |
Some egawk support: use @let in case if available.
Diffstat (limited to 'cppawk-include')
-rw-r--r-- | cppawk-include/base.h | 9 | ||||
-rw-r--r-- | cppawk-include/case-priv.h | 8 |
2 files changed, 15 insertions, 2 deletions
diff --git a/cppawk-include/base.h b/cppawk-include/base.h index 5472233..568ffcd 100644 --- a/cppawk-include/base.h +++ b/cppawk-include/base.h @@ -42,9 +42,16 @@ #define __present(arg) ((arg) != "" || (arg) != 0) +#if __egawk__ +#define __let(...) @let (__VA_ARGS__) +#define __have_let 1 +#else +#define __let(...) +#endif + #if __gawk__ #define __have_switch 1 -#if __gawk_ver >= 040000 +#if __gawk_ver >= 040000 || __egawk__ #define __have_indirect_functions 1 #endif #endif 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, \ |