Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
promise.qh File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define Promise_catch(this, handler, userdata)
#define Promise_new()
#define Promise_then(this, handler, userdata)

Functions

 entityclass (Promise)
Promise Promise_catch_ (Promise this, Promise ret, Promise(Promise ret, entity err, entity userdata) handler, entity userdata)
Promise Promise_new_ (Promise this)
void Promise_reject (Promise this)
 Notify all Promise_catch subscribers that this promise has rejected.
void Promise_resolve (Promise this)
 Notify all Promise_then subscribers that this promise has resolved.
Promise Promise_then_ (Promise this, Promise ret, Promise(Promise ret, entity result, entity userdata) handler, entity userdata)

Macro Definition Documentation

◆ Promise_catch

#define Promise_catch ( this,
handler,
userdata )
Value:
Promise_catch_(this, Promise_new(), handler, userdata)
Promise Promise_catch_(Promise this, Promise ret, Promise(Promise ret, entity result, entity userdata) onReject, entity userdata)
Definition promise.qc:190
#define Promise_new()
Definition promise.qh:5

Definition at line 17 of file promise.qh.

◆ Promise_new

#define Promise_new ( )
Value:
#define new_pure(class)
purely logical entities (not linked to the area grid)
Definition oo.qh:66
Promise Promise_new_(Promise this)
Definition promise.qc:53

Definition at line 5 of file promise.qh.

◆ Promise_then

#define Promise_then ( this,
handler,
userdata )
Value:
Promise_then_(this, Promise_new(), handler, userdata)
Promise Promise_then_(Promise this, Promise ret, Promise(Promise ret, entity result, entity userdata) onResolve, entity userdata)
Definition promise.qc:182

Definition at line 11 of file promise.qh.

Function Documentation

◆ entityclass()

entityclass ( Promise )

◆ Promise_catch_()

Promise Promise_catch_ ( Promise this,
Promise ret,
Promise(Promise ret, entity err, entity userdata) handler,
entity userdata )

References entity(), and err.

◆ Promise_new_()

Promise Promise_new_ ( Promise this)

Definition at line 53 of file promise.qc.

54{
56 this._promise_result = this; // promises default to being their own result to save on entities
57 return this;
58}
void ref_init(entity this, int init, void(entity this) finalize)
Definition promise.qc:6
void _Promise_finalize(Promise this)
Definition promise.qc:48

References _Promise_finalize(), and ref_init().

◆ Promise_reject()

void Promise_reject ( Promise this)

Notify all Promise_catch subscribers that this promise has rejected.

Definition at line 84 of file promise.qc.

85{
86 if (!this)
87 {
88 LOG_SEVERE("Attempted to reject a null promise");
89 return;
90 }
91 if (this._promise_state != PROMISE_PENDING)
92 {
93 LOG_SEVEREF("Rejected non-pending promise %i", this);
94 return;
95 }
96 this._promise_state = PROMISE_REJECTED;
97 if (this._promise_handlers)
98 {
99 IL_EACH(this._promise_handlers, true, _Promise_handle(this, it));
100 IL_DELETE(this._promise_handlers);
101 }
102 unref(this);
103 return;
104}
#define IL_EACH(this, cond, body)
#define IL_DELETE(this)
Delete the list.
#define LOG_SEVEREF(...)
Definition log.qh:55
#define LOG_SEVERE(...)
Definition log.qh:54
@ PROMISE_PENDING
Definition promise.qc:33
@ PROMISE_REJECTED
Definition promise.qc:35
void _Promise_handle(Promise this, PromiseHandler h)
Definition promise.qc:112
entity unref(Promise this)
Definition promise.qc:19

References _Promise_handle(), IL_DELETE, IL_EACH, LOG_SEVERE, LOG_SEVEREF, PROMISE_PENDING, PROMISE_REJECTED, and unref().

Referenced by _Promise_onReject_default().

◆ Promise_resolve()

void Promise_resolve ( Promise this)

Notify all Promise_then subscribers that this promise has resolved.

Definition at line 62 of file promise.qc.

63{
64 if (!this)
65 {
66 LOG_SEVERE("Attempted to resolve a null promise");
67 return;
68 }
69 if (this._promise_state != PROMISE_PENDING)
70 {
71 LOG_SEVEREF("Resolved non-pending promise %i", this);
72 return;
73 }
74 this._promise_state = PROMISE_RESOLVED;
75 if (this._promise_handlers)
76 {
77 IL_EACH(this._promise_handlers, true, _Promise_handle(this, it));
78 IL_DELETE(this._promise_handlers);
79 }
80 unref(this);
81 return;
82}
@ PROMISE_RESOLVED
Definition promise.qc:34

References _Promise_handle(), IL_DELETE, IL_EACH, LOG_SEVERE, LOG_SEVEREF, PROMISE_PENDING, PROMISE_RESOLVED, and unref().

Referenced by _Promise_onResolve_default().

◆ Promise_then_()

Promise Promise_then_ ( Promise this,
Promise ret,
Promise(Promise ret, entity result, entity userdata) handler,
entity userdata )

Definition at line 182 of file promise.qc.

185{
186 unref(ret); // ret is a temporary
187 return _Promise_then(this, ret, onResolve, func_null, userdata);
188}
var void func_null()
Promise _Promise_then(Promise this, Promise ret, Promise(Promise ret, entity result, entity userdata) onResolve, Promise(Promise ret, entity result, entity userdata) onReject, entity userdata)
Definition promise.qc:169

References _Promise_then(), entity(), func_null(), result, and unref().