]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/lib/promise.qh
Merge branch 'master' into martin-t/defaults
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / promise.qh
1 #pragma once
2
3 entityclass(Promise);
4
5 #define Promise_new() Promise_new_(new_pure(Promise))
6 Promise Promise_new_(Promise this);
7
8 /**
9  * notify all Promise_then subscribers that this promise has resolved
10  */
11 void Promise_resolve(Promise this);
12
13 #define Promise_then(this, handler, userdata) Promise_then_(this, Promise_new(), handler, userdata)
14 Promise Promise_then_(Promise this, Promise ret, Promise(Promise ret, entity result, entity userdata) handler, entity userdata);
15
16 /**
17  * notify all Promise_catch subscribers that this promise has rejected
18  */
19 void Promise_reject(Promise this);
20
21 #define Promise_catch(this, handler, userdata) Promise_catch_(this, Promise_new(), handler, userdata)
22 Promise Promise_catch_(Promise this, Promise ret, Promise(Promise ret, entity err, entity userdata) handler, entity userdata);
23
24 // utils
25
26 #ifndef MENUQC
27
28 // TODO: support menu
29 Promise Promise_sleep(float n);
30
31 #endif