annotate runtime/worker.c @ 158:0e06f29aa83d

Small tweak to String Cat balance
author Mike Pavone <pavone@retrodev.com>
date Thu, 23 Dec 2010 16:16:31 -0500
parents 7428aa5d6ade
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
74
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 object * _internal_worker_alloc(int16_t size)
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 {
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 t_Worker * worker = (t_Worker *)new_multisize(TYPE_WORKER, sizeof(nt_Worker)+sizeof(object *)*size);
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 worker->payload.Size = size;
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 return (object *)worker;
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 }
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 void _internal_worker_setinput(object * worker, int16_t num, object * val)
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 {
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 //Client code is responsible for checking if we've allocated enough space
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 object **params = (object **)(((t_Worker *)worker)+1);
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13 params[num] = val;
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 }
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 object * _internal_worker_getinput(object * worker, int16_t num)
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 {
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 //Client code MUST check if input is populated before calling this function
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 object **params = (object **)(((t_Worker *)worker)+1);
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 object * ret = add_ref(params[num]);
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 release_ref(worker);
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 return ret;
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 }
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25 int32_t _internal_worker_hasinput(object * worker, int16_t num)
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26 {
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
27 object **params = (object **)(((t_Worker *)worker)+1);
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28 if(params[num])
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29 {
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
30 release_ref(worker);
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
31 return 1;
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
32 } else {
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
33 release_ref(worker);
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
34 return 0;
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
35 }
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36 }
a844c623c7df Add support for Worker type
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37
103
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
38 void internalworkercopy(object * obj)
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
39 {
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
40 int32_t idx;
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
41 t_Worker * worker = (t_Worker *)obj;
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
42 object **params = (object **)(worker+1);
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
43 for(idx = 0; idx < worker->payload.Size; ++idx)
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
44 {
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
45 if(params[idx])
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
46 {
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
47 add_ref(params[idx]);
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
48 }
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
49 }
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
50 }
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
51
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
52 void internalworkercleanup(object * obj)
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
53 {
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
54 int32_t idx;
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
55 t_Worker * worker = (t_Worker *)obj;
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
56 object **params = (object **)(worker+1);
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
57 for(idx = 0; idx < worker->payload.Size; ++idx)
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
58 {
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
59 if(params[idx])
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
60 {
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
61 release_ref(params[idx]);
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
62 }
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
63 }
7428aa5d6ade Compiler compiled by compiler sort of working
Mike Pavone <pavone@retrodev.com>
parents: 74
diff changeset
64 }