File: future.h

package info (click to toggle)
libfuture-xs-perl 0.14-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 212 kB
  • sloc: ansic: 1,471; perl: 181; makefile: 3
file content (117 lines) | stat: -rw-r--r-- 4,121 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#ifndef __FUTURE_H__
#define __FUTURE_H__

#define future_boot()  Future_boot(aTHX)
void Future_boot(pTHX);

#define future_new(cls)  Future_new(aTHX_ cls)
SV *Future_new(pTHX_ const char *cls);

#define future_destroy(f)  Future_destroy(aTHX_ f)
void Future_destroy(pTHX_ SV *f);

#define sv_is_future(sv)  Future_sv_is_future(aTHX_ sv)
bool Future_sv_is_future(pTHX_ SV *sv);

#define future_is_ready(f)  Future_is_ready(aTHX_ f)
bool Future_is_ready(pTHX_ SV *f);

#define future_is_done(f)  Future_is_done(aTHX_ f)
bool Future_is_done(pTHX_ SV *f);

#define future_is_failed(f)  Future_is_failed(aTHX_ f)
bool Future_is_failed(pTHX_ SV *f);

#define future_is_cancelled(f)  Future_is_cancelled(aTHX_ f)
bool Future_is_cancelled(pTHX_ SV *f);

#define future_donev(f, svp, n)  Future_donev(aTHX_ f, svp, n)
void Future_donev(pTHX_ SV *f, SV **svp, size_t n);

#define future_failv(f, svp, n)  Future_failv(aTHX_ f, svp, n)
void Future_failv(pTHX_ SV *f, SV **svp, size_t n);

#define future_failp(f, s)  Future_failp(aTHX_ f, s)
void Future_failp(pTHX_ SV *f, const char *s);

#define future_on_cancel(f, code)  Future_on_cancel(aTHX_ f, code)
void Future_on_cancel(pTHX_ SV *f, SV *code);

#define future_on_ready(f, code)  Future_on_ready(aTHX_ f, code)
void Future_on_ready(pTHX_ SV *f, SV *code);

#define future_on_done(f, code)  Future_on_done(aTHX_ f, code)
void Future_on_done(pTHX_ SV *f, SV *code);

#define future_on_fail(f, code)  Future_on_fail(aTHX_ f, code)
void Future_on_fail(pTHX_ SV *f, SV *code);

#define future_get_result_av(f, await)  Future_get_result_av(aTHX_ f, await)
AV *Future_get_result_av(pTHX_ SV *f, bool await);

#define future_get_failure_av(f)  Future_get_failure_av(aTHX_ f)
AV *Future_get_failure_av(pTHX_ SV *f);

#define future_cancel(f)  Future_cancel(aTHX_ f)
void Future_cancel(pTHX_ SV *f);

#define future_without_cancel(f)  Future_without_cancel(aTHX_ f)
SV *Future_without_cancel(pTHX_ SV *f);

enum {
  FUTURE_THEN_WITH_F = (1<<0),
};

#define future_then(f, flags, thencode, elsecode)  Future_then(aTHX_ f, flags, thencode, elsecode)
SV *Future_then(pTHX_ SV *f, U32 flags, SV *thencode, SV *elsecode);

#define future_thencatch(f, flags, thencode, catches, elsecode)  Future_thencatch(aTHX_ f, flags, thencode, catches, elsecode)
SV *Future_thencatch(pTHX_ SV *f, U32 flags, SV *thencode, HV *catches, SV *elsecode);

#define future_followed_by(f, code)  Future_followed_by(aTHX_ f, code)
SV *Future_followed_by(pTHX_ SV *f, SV *code);

/* convergent constructors */
#define future_new_waitallv(cls, subs, n)  Future_new_waitallv(aTHX_ cls, subs, n)
SV *Future_new_waitallv(pTHX_ const char *cls, SV **subs, size_t n);

#define future_new_waitanyv(cls, subs, n)  Future_new_waitanyv(aTHX_ cls, subs, n)
SV *Future_new_waitanyv(pTHX_ const char *cls, SV **subs, size_t n);

#define future_new_needsallv(cls, subs, n)  Future_new_needsallv(aTHX_ cls, subs, n)
SV *Future_new_needsallv(pTHX_ const char *cls, SV **subs, size_t n);

#define future_new_needsanyv(cls, subs, n)  Future_new_needsanyv(aTHX_ cls, subs, n)
SV *Future_new_needsanyv(pTHX_ const char *cls, SV **subs, size_t n);

enum FutureSubFilter {
  FUTURE_SUBS_PENDING,
  FUTURE_SUBS_READY,
  FUTURE_SUBS_DONE,
  FUTURE_SUBS_FAILED,
  FUTURE_SUBS_CANCELLED,
};
#define future_mPUSH_subs(f, filter)  Future_mPUSH_subs(aTHX_ f, filter)
Size_t Future_mPUSH_subs(pTHX_ SV *f, enum FutureSubFilter filter);

#define future_get_btime(f)  Future_get_btime(aTHX_ f)
struct timeval Future_get_btime(pTHX_ SV *f);

#define future_get_rtime(f)  Future_get_rtime(aTHX_ f)
struct timeval Future_get_rtime(pTHX_ SV *f);

#define future_set_label(f, label)  Future_set_label(aTHX_ f, label)
void Future_set_label(pTHX_ SV *f, SV *label);

#define future_get_label(f)  Future_get_label(aTHX_ f)
SV *Future_get_label(pTHX_ SV *f);

#define future_set_udata(f, key, value)  Future_set_udata(aTHX_ f, key, value)
void Future_set_udata(pTHX_ SV *f, SV *key, SV *value);

#define future_get_udata(f, key)  Future_get_udata(aTHX_ f, key)
SV *Future_get_udata(pTHX_ SV *f, SV *key);

void Future_reread_environment(pTHX);

#endif