Mercurial > repos > tabletprog
comparison cbackend.js @ 39:a997e42b9051
Add foreach method to array and add fib sample that can work in C environment and array example
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 10 Jul 2012 23:18:14 -0700 |
parents | e7be612fd3ae |
children | 927fd7911a01 |
comparison
equal
deleted
inserted
replaced
38:e7be612fd3ae | 39:a997e42b9051 |
---|---|
371 ' self->data[index->num] = va_arg(args, object *);', | 371 ' self->data[index->num] = va_arg(args, object *);', |
372 '}', | 372 '}', |
373 'return (object *)self;' | 373 'return (object *)self;' |
374 ] | 374 ] |
375 }); | 375 }); |
376 array.addMessage('foreach', { | |
377 vars: {index: 'obj_int32 *', i: 'int32_t', clos: 'closure *'}, | |
378 lines: [ | |
379 'clos = va_arg(args, closure *);', | |
380 'for (i = 0; i < self->size; i++) {', | |
381 ' index = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);', | |
382 ' index->num = i;', | |
383 ' ccall(clos, 2, index, self->data[i]);', | |
384 '}', | |
385 'return (object *)self;' | |
386 ] | |
387 }); | |
376 forwarddec = toplevelcode = ''; | 388 forwarddec = toplevelcode = ''; |
377 forwarddec += int32.toEarlyCDef() + array.toEarlyCDef(); | 389 forwarddec += int32.toEarlyCDef() + array.toEarlyCDef(); |
378 toplevelcode += int32.toCDef() + array.toCDef(); | 390 toplevelcode += int32.toCDef() + array.toCDef(); |
379 obj.populateSymbols(toplevel); | 391 obj.populateSymbols(toplevel); |
380 var rest = 'object * mainModule() {\n\tmain_module = ' + obj.toC() + ';\n\treturn main_module;\n}\n'; | 392 var rest = 'object * mainModule() {\n\tmain_module = ' + obj.toC() + ';\n\treturn main_module;\n}\n'; |