view src/allocate/allocate.c @ 14:d98961bfd0f2

Code linkage information
author innparusu
date Fri, 10 Apr 2015 17:57:38 +0900
parents a4f351b66544
children 907c69e21e56
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h>

#include "prototype.h"

#include "context.h"
#include "allocate.h"
#include "origin_cs.h"

#ifdef CLANG
#define _CbC_retrun __return
#define _CbC_environment __environment
#endif

#define NUM 100

/* 
__code code1(Allocate allocate) {
    allocate.size = sizeof(long);
    allocate.next = Code2;
    goto Allocate(allocate);
}
*/

__code code1(Context* context) {
    context->data[0]->Allocate.size = sizeof(long);
    context->data[0]->Allocate.next = Code2;
    goto meta(context, Allocate);
}

__code meta(Context* context, enum Code next) {
    goto (context->code[next])(context);
}

/*
__code code2(Allocate allocate, Count count) {
    count.count = 0;
    goto code3(count);
}
*/

__code code2(Context* context) {
    context->data[1]->count = 0;
    goto meta(context, Code3);
}

__code code3(Context* context) {
    long loop = context->data[1]->count;
    if (loop == NUM) {
        goto meta(context, Exit);
    }
    printf("%d\n", loop);
    context->data[1]->count++;
    goto meta(context, Code3);
}

int main() {
    Context* context = (Context*)malloc(sizeof(Context));
    context->ds_heap = malloc(sizeof(data1)*1024);
    context->mds_heap = malloc(sizeof(mdata)*1024);
    context->ds = context->ds_heap;
    context->mds = context->mds_heap;
    goto start_code(context, code1);
}