#include <stdio.h>

typedef enum Action {
    end,
    print,
    increase
}Action;

typedef struct _continuation Continuation;
struct _continuation {
    int counter;
    Action next;
};
int Continue(Continuation ctx){
    while (ctx.next != end){
        switch(ctx.next){
            case(print):
                printf("going through %i\n",ctx.counter);
                ctx.next = increase;
                break;
            case(increase):
                ctx.counter++;
                if (ctx.counter < 10){
                    ctx.next = print;
                }
                else{
                    ctx.next = end;
                }
                break;
        };
    }
    return ctx.counter;
}
Continuation factory(){
    Continuation begin = {.next = increase, .counter=0};
    return begin;
}

int main(void){
    printf("begin\n");
    Continue(factory());
    return 0;
}

