64typedef struct cchain_ref {
65 void* _is_closure_chain;
68_Success_(
return)
bool _cchainAttach(_Inout_ptr_opt_ cchain* chain, _In_
closureFunc func, intptr token,
69 int n,
stvar cvars[]);
82#define cchainAttach(chain, func, ...) \
83 _cchainAttach(chain, func, 0, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
98#define cchainAttachToken(chain, func, token, ...) \
99 _cchainAttach(chain, func, token, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
113_Success_(
return)
bool _cchainCall(_In_ptr_opt_ cchain* chain,
int n,
stvar args[]);
129#define cchainCall(chain, ...) \
130 _cchainCall(chain, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
132_Success_(
return)
bool _cchainCallOnce(_Inout_ptr_opt_ cchain* chain,
int n,
stvar args[]);
145#define cchainCallOnce(chain, ...) \
146 _cchainCallOnce(chain, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
156_Success_(
return)
bool cchainTransfer(_Inout_ptr_opt_ cchain* dest, _Inout_ptr_opt_ cchain* src);
167_Success_(
return)
bool cchainClone(_Inout_ptr_opt_ cchain* dest, _In_ptr_opt_ cchain* src);
Basic closure functionality.
bool(* closureFunc)(stvlist *cvars, stvlist *args)
bool cchainTransfer(cchain *dest, cchain *src)
bool cchainClear(cchain *chain)
bool cchainDetach(cchain *chain, closureFunc func, intptr token)
bool cchainReset(cchain *chain)
void cchainDestroy(cchain *chain)
bool cchainClone(cchain *dest, _In_ptr_opt_ cchain *src)
#define stvar(typen, val)