Mercurial > repos > rhope
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/runtime/worker.c Thu Jul 01 21:32:08 2010 -0400 @@ -0,0 +1,37 @@ + +object * _internal_worker_alloc(int16_t size) +{ + t_Worker * worker = (t_Worker *)new_multisize(TYPE_WORKER, sizeof(nt_Worker)+sizeof(object *)*size); + worker->payload.Size = size; + return (object *)worker; +} + +void _internal_worker_setinput(object * worker, int16_t num, object * val) +{ + //Client code is responsible for checking if we've allocated enough space + object **params = (object **)(((t_Worker *)worker)+1); + params[num] = val; +} + +object * _internal_worker_getinput(object * worker, int16_t num) +{ + //Client code MUST check if input is populated before calling this function + object **params = (object **)(((t_Worker *)worker)+1); + object * ret = add_ref(params[num]); + release_ref(worker); + return ret; +} + +int32_t _internal_worker_hasinput(object * worker, int16_t num) +{ + object **params = (object **)(((t_Worker *)worker)+1); + if(params[num]) + { + release_ref(worker); + return 1; + } else { + release_ref(worker); + return 0; + } +} +