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
|
#include "salticidae/config.h"
#ifdef SALTICIDAE_CBINDINGS
#include "salticidae/event.h"
extern "C" {
eventcontext_t *eventcontext_new() { return new eventcontext_t(); }
void eventcontext_free(eventcontext_t *self) { delete self; }
void eventcontext_dispatch(eventcontext_t *self) { return self->dispatch(); }
void eventcontext_stop(eventcontext_t *self) { return self->stop(); }
sigev_t *sigev_new(const eventcontext_t *self, sigev_callback_t callback, void *userdata) {
return new sigev_t(*self, [=](int signum) {
callback(signum, userdata);
});
}
threadcall_t *threadcall_new(const eventcontext_t *ec) { return new threadcall_t(*ec); }
void threadcall_free(threadcall_t *self) { delete self; }
void threadcall_async_call(threadcall_t *self, threadcall_callback_t callback, void *userdata) {
self->async_call([=](salticidae::ThreadCall::Handle &h) {
callback(&h, userdata);
});
}
eventcontext_t *threadcall_get_ec(threadcall_t *self) {
return new eventcontext_t(self->get_ec());
}
void sigev_free(sigev_t *self) { delete self; }
void sigev_add(sigev_t *self, int signum) { self->add(signum); }
timerev_t *timerev_new(const eventcontext_t *ec, timerev_callback_t callback, void *userdata) {
return new timerev_t(*ec, [=](salticidae::TimerEvent &ev) {
callback(&ev, userdata);
});
}
void timerev_set_callback(timerev_t *self, timerev_callback_t callback, void *userdata) {
self->set_callback([=](salticidae::TimerEvent &ev) {
callback(&ev, userdata);
});
}
void timerev_free(timerev_t *self) { delete self; }
void timerev_add(timerev_t *self, double t_sec) { self->add(t_sec); }
void timerev_del(timerev_t *self) { self->del(); }
void timerev_clear(timerev_t *self) { self->clear(); }
}
#endif
|