0
|
1 __code code1(struct Context *context, Integer *integer1, Integer *integer2, Integer *output) {
|
|
2 // create context
|
|
3 context->task = NEW(struct Context);
|
|
4 initContext(context->task);
|
|
5
|
|
6 // set task parameter
|
|
7 context->task->next = C_add;
|
|
8 context->task->idgCount = 2;
|
|
9 context->task->idg = context->task->dataNum;
|
|
10 context->task->maxIdg = context->task->idg + 2;
|
|
11 context->task->odg = context->task->maxIdg;
|
|
12 context->task->maxOdg = context->task->odg + 1;
|
|
13
|
|
14 // create Data Gear Queue
|
|
15 GET_META(integer1)->wait = createSynchronizedQueue(context);
|
|
16 GET_META(integer2)->wait = createSynchronizedQueue(context);
|
|
17 GET_META(integer3)->wait = createSynchronizedQueue(context);
|
|
18
|
|
19 // set Input Data Gear
|
|
20 context->task->data[context->task->idg+0] = (union Data*)integer1;
|
|
21 context->task->data[context->task->idg+1] = (union Data*)integer2;
|
|
22
|
|
23 // set Output Data Gear
|
|
24 context->task->data[context->task->odg+0] = (union Data*)integer3;
|
|
25
|
|
26 // add taskList Element
|
|
27 struct Element* element;
|
|
28 element = &ALLOCATE(context, Element)->Element;
|
|
29 element->data = (union Data*)context->task;
|
|
30 element->next = context->taskList;
|
|
31 context->taskList = element;
|
|
32
|
|
33 // set TaskManager->spawns parameter
|
|
34 Gearef(context, TaskManager)->taskList = context->taskList;
|
|
35 Gearef(context, TaskManager)->next1 = C_code2;
|
|
36 goto meta(context, C_code2);
|
|
37 }
|
|
38
|
|
39 // code gear
|
|
40 __code add(Integer *integer1, Integer *integer2, next(Integer *output, ...)) {
|
|
41 ....
|
|
42 }
|