mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-07 15:03:34 +00:00
41 lines
1.2 KiB
C
41 lines
1.2 KiB
C
#ifndef COSMOPOLITAN_TOOL_PLINKO_LIB_TRACE_H_
|
|
#define COSMOPOLITAN_TOOL_PLINKO_LIB_TRACE_H_
|
|
#include "libc/str/str.h"
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
COSMOPOLITAN_C_START_
|
|
|
|
#define START_TRACE \
|
|
bool t; \
|
|
PairFn *pf; \
|
|
BindFn *bf; \
|
|
EvlisFn *ef; \
|
|
RecurseFn *rf; \
|
|
unsigned char mo; \
|
|
TailFn *tails[8]; \
|
|
EvalFn *ev, *ex; \
|
|
memcpy(tails, kTail, sizeof(kTail)); \
|
|
ev = eval; \
|
|
bf = bind_; \
|
|
ef = evlis; \
|
|
ex = expand; \
|
|
pf = pairlis; \
|
|
rf = recurse; \
|
|
EnableTracing(); \
|
|
t = trace; \
|
|
trace = true
|
|
|
|
#define END_TRACE \
|
|
trace = t; \
|
|
eval = ev; \
|
|
bind_ = bf; \
|
|
evlis = ef; \
|
|
expand = ex; \
|
|
pairlis = pf; \
|
|
recurse = rf; \
|
|
memcpy(kTail, tails, sizeof(kTail))
|
|
|
|
void EnableTracing(void);
|
|
|
|
COSMOPOLITAN_C_END_
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_TOOL_PLINKO_LIB_TRACE_H_ */
|