74
|
1
|
|
2 object * _internal_worker_alloc(int16_t size)
|
|
3 {
|
|
4 t_Worker * worker = (t_Worker *)new_multisize(TYPE_WORKER, sizeof(nt_Worker)+sizeof(object *)*size);
|
|
5 worker->payload.Size = size;
|
|
6 return (object *)worker;
|
|
7 }
|
|
8
|
|
9 void _internal_worker_setinput(object * worker, int16_t num, object * val)
|
|
10 {
|
|
11 //Client code is responsible for checking if we've allocated enough space
|
|
12 object **params = (object **)(((t_Worker *)worker)+1);
|
|
13 params[num] = val;
|
|
14 }
|
|
15
|
|
16 object * _internal_worker_getinput(object * worker, int16_t num)
|
|
17 {
|
|
18 //Client code MUST check if input is populated before calling this function
|
|
19 object **params = (object **)(((t_Worker *)worker)+1);
|
|
20 object * ret = add_ref(params[num]);
|
|
21 release_ref(worker);
|
|
22 return ret;
|
|
23 }
|
|
24
|
|
25 int32_t _internal_worker_hasinput(object * worker, int16_t num)
|
|
26 {
|
|
27 object **params = (object **)(((t_Worker *)worker)+1);
|
|
28 if(params[num])
|
|
29 {
|
|
30 release_ref(worker);
|
|
31 return 1;
|
|
32 } else {
|
|
33 release_ref(worker);
|
|
34 return 0;
|
|
35 }
|
|
36 }
|
|
37
|