view src/parallel_execution/examples/twice/printArray.cbc @ 462:8d7e5d48cad3

Running CPU examples
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Wed, 20 Dec 2017 22:05:08 +0900
parents eab6f8cd2820
children 7d67c9cf09ee
line wrap: on
line source

#include "../../../context.h"
#include <stdio.h>

__code printArray(struct Array* array, struct Time* inputTime, __code next(...)){
    Gearef(context, Time)->time = (union Data*)inputTime;
    Gearef(context, Time)->next = C_printArray1;
    goto meta(context, inputTime->end);
}

__code printArray_stub(struct Context* context) {
    goto printArray(context,
                   &context->data[context->idg]->Array,
                   &context->data[context->idg+1]->Time,
                   context->next);
}

__code printArray1(struct Array* array, __code next(...), struct LoopCounter* loopCounter){
    int i = loopCounter->i;
    //printf("%d\n", array->array[i]);
    if(i < GET_LEN(array->array)) {
        if (array->array[i] == i*2) {
            loopCounter->i++;
            goto meta(context, C_printArray1);
        } else {
            printf("wrong result\n");
        }
    }
   loopCounter->i = 0;
    goto meta(context, next);
}

__code printArray1_stub(struct Context* context) {
    goto printArray1(context,
            &context->data[context->idg]->Array,
            context->next,
            Gearef(context, LoopCounter));
}