1 contributor
32 lines990 bytes
1#ifndef FUTURE_H
2#define FUTURE_H
3#include <stdbool.h>
4
5typedef struct Future Future;
6
7
8typedef struct Future_vfptrs_t {
9 void (*dtor)(Future *);
10 void (*await)(Future *);
11 void (*set_result)(Future *, bool, void *);
12} Future_vfptrs_t;
13
14extern void _Future_Await(Future *fut);
15extern void _Future_SetResult(Future *fut, bool canceled, void *res);
16
17// Notified when a Future is done (has a result or is canceled)
18typedef void (*Future_Watcher)(void *me, Future *fut);
19
20extern void Future_ctor(Future *fut);
21extern Future *Future_New();
22extern void Future_dtor(Future *fut);
23extern void Future_Delete(Future *fut);
24extern void Future_SetResult(Future *fut, bool canceled, void *value);
25extern bool Future_GetResult(Future *fut, void **res);
26extern void Future_AddWatcher(Future *fut, Future_Watcher watcher, void *me);
27extern void Future_RemoveWatcher(Future *fut, Future_Watcher watcher, void *me);
28extern bool Future_Await(Future *fut, void **res);
29
30#include "future.def.h"
31#endif
32