15 #include "wvlinklist.h"
16 #include "wvstreamsdebugger.h"
19 typedef wv::function<
void*(
void*)> WvContCallback;
47 static void bouncer(
void *userdata);
54 {
return _call(data); }
60 static void *_call(
Data *data);
74 WvCont(
const WvContCallback &cb,
unsigned long stacksize = 64*1024);
107 static void *
yield(
void *ret = 0);
130 template <
typename R,
typename T>
134 return (R)cont((T)t);
151 template <
typename R>
160 WvStreamsDebugger::ResultCallback result_cb,
void *);
static R c_bouncer(void *_cont)
A templated function that allows you to pass a WvCont wherever a C-style function pointer of the form...
WvString is an implementation of a simple and efficient printable-string class.
WvCont provides "continuations", which are apparently also known as semi-coroutines.
static WvCont current()
Get a copy of the current WvCont.
static bool isok()
Tell us if the current context is "okay", that is, not trying to die.
This is a WvList of WvStrings, and is a really handy way to parse strings.
A linked list container class.
void * operator()(void *p1=0)
call the callback, making p1 the return value of yield() or the parameter to the function,...
static R c_bouncer(T t, void *_cont)
A templated function that allows you to pass a WvCont wherever a C-style function pointer of the form...
static void * yield(void *ret=0)
"return" from the current callback, giving value 'ret' to the person who called us.