55#include <cx/utils/macros.h>
72#define withLogCtx(...) \
73 blkWrap (_logCtxPush(count_macro_args(__VA_ARGS__), \
74 (stvar[]) { __VA_ARGS__ }), \
78void _logCtxPush(
int n, _In_
stvar* vars);
97#define withLogLocal() blkWrap(_logLocalPush(), _logLocalPop())
100void _logLocalPush(
void);
101void _logLocalPop(
void);
198 _In_opt_z_
const char* key);
Block wrapping macros for automatic resource management.
struct LogCtx LogCtx
Opaque handle to a log context; see logctx.h.
void logCtxRelease(LogCtx **ctx)
uint32 logCtxNumVars(const LogCtx *ctx)
const LogCtx * logCtxParent(const LogCtx *ctx)
void logCtxRestore(LogCtx *ctx)
const stvar * logCtxVars(const LogCtx *ctx)
LogCtx * logCtxAcquire(LogCtx *ctx)
LogCtx * logCtxCurrent(void)
LogCtx * logCtxSwap(LogCtx *ctx)
bool logCtxShadowed(const LogCtx *top, const LogCtx *node, uint32 idx, const char *key)
#define stvar(typen, val)