CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
cchain.h
Go to the documentation of this file.
1
56
57#pragma once
58
59#include <cx/closure/closure.h>
60#include <cx/thread/atomic.h>
61
62typedef struct cchain_ref
63{
64 void* _is_closure_chain;
65} cchain_ref;
66
67_Success_(return) bool _cchainAttach(_Inout_ptr_opt_ cchain* chain, _In_ closureFunc func, intptr token, int n,
68 stvar cvars[]);
69
81#define cchainAttach(chain, func, ...) _cchainAttach(chain, func, 0, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
82
96#define cchainAttachToken(chain, func, token, ...) _cchainAttach(chain, func, token, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
97
108_Success_(
109 return) bool cchainDetach(_Inout_ptr_opt_ cchain* chain, _In_ closureFunc func, intptr token);
110
111_Success_(return) bool _cchainCall(_In_ptr_opt_ cchain* chain, int n, stvar args[]);
112
127#define cchainCall(chain, ...) _cchainCall(chain, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
128
129_Success_(return) bool _cchainCallOnce(_Inout_ptr_opt_ cchain* chain, int n, stvar args[]);
130
142#define cchainCallOnce(chain, ...) _cchainCallOnce(chain, count_macro_args(__VA_ARGS__), (stvar[]) { __VA_ARGS__ })
143
152_Success_(return) bool cchainTransfer(_Inout_ptr_opt_ cchain* dest, _Inout_ptr_opt_ cchain* src);
153
163_Success_(return) bool cchainClone(_Inout_ptr_opt_ cchain* dest, _In_ptr_opt_ cchain* src);
164
172_Success_(return) bool cchainReset(_Inout_ptr_opt_ cchain* chain);
173
181_Success_(return) bool cchainClear(_Inout_ptr_opt_ cchain* chain);
182
188void cchainDestroy(_Inout_ptr_opt_ cchain* chain);
189
191// end of closure_chain group
Basic closure functionality.
bool(* closureFunc)(stvlist *cvars, stvlist *args)
Definition closure.h:58
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)
Definition stvar.h:153