60#include <cx/thread/atomic.h>
62typedef struct cchain_ref
64 void* _is_closure_chain;
67_Success_(
return)
bool _cchainAttach(_Inout_ptr_opt_ cchain* chain, _In_
closureFunc func, intptr token,
int n,
81#define cchainAttach(chain, func, ...) _cchainAttach(chain, func, 0, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
96#define cchainAttachToken(chain, func, token, ...) _cchainAttach(chain, func, token, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
111_Success_(
return)
bool _cchainCall(_In_ptr_opt_ cchain* chain,
int n,
stvar args[]);
127#define cchainCall(chain, ...) _cchainCall(chain, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
129_Success_(
return)
bool _cchainCallOnce(_Inout_ptr_opt_ cchain* chain,
int n,
stvar args[]);
142#define cchainCallOnce(chain, ...) _cchainCallOnce(chain, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
152_Success_(
return)
bool cchainTransfer(_Inout_ptr_opt_ cchain* dest, _Inout_ptr_opt_ cchain* src);
163_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)