comparison runtime/worker.c @ 74:a844c623c7df

Add support for Worker type
author Mike Pavone <pavone@retrodev.com>
date Thu, 01 Jul 2010 21:32:08 -0400
parents
children 7428aa5d6ade
comparison
equal deleted inserted replaced
73:6a1a7d5cc2d9 74:a844c623c7df
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