diff options
author | comex | 2015-01-29 01:21:15 -0500 |
---|---|---|
committer | comex | 2015-01-29 01:21:15 -0500 |
commit | 3abf4c09ce3ea173ac9840e97788ca4c477a8aa1 (patch) | |
tree | bcd129df9b384bc4bb646445e44d0f46aa4a8902 /lib/cbit/misc.h | |
parent | ***yawn*** (diff) | |
download | substitute-3abf4c09ce3ea173ac9840e97788ca4c477a8aa1.tar.gz |
port some old code
Diffstat (limited to 'lib/cbit/misc.h')
-rw-r--r-- | lib/cbit/misc.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/cbit/misc.h b/lib/cbit/misc.h new file mode 100644 index 0000000..45876f9 --- /dev/null +++ b/lib/cbit/misc.h @@ -0,0 +1,25 @@ +#pragma once + +#define LET_LOOP__(expr, ctr) \ + if (0) \ + __done_##ctr: continue; \ + else if (0) \ + __break_##ctr: break; \ + else \ + for (; ; ({ goto __break_##ctr; })) \ + for (expr; ; ({ goto __done_##ctr; })) + +#define LET_LOOP_(expr, ctr) LET_LOOP__(expr, ctr) +#define LET_LOOP(expr) LET_LOOP_(expr, __COUNTER__) + +#define LET__(expr, ctr) \ + if (0) \ + __done_##ctr: ; \ + else \ + for (expr; ; ({ goto __done_##ctr; })) + +#define LET_(expr, ctr) LET__(expr, ctr) +#define LET(expr) LET_(expr, __COUNTER__) + +#define safe_mul(a, b) ((a) * (b)) /* XXX */ + |