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';