Mercurial > repos > tabletprog
diff 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 |
line wrap: on
line diff
--- a/cbackend.js Tue Jul 10 23:09:44 2012 -0700 +++ b/cbackend.js Tue Jul 10 23:18:14 2012 -0700 @@ -373,6 +373,18 @@ 'return (object *)self;' ] }); + array.addMessage('foreach', { + vars: {index: 'obj_int32 *', i: 'int32_t', clos: 'closure *'}, + lines: [ + 'clos = va_arg(args, closure *);', + 'for (i = 0; i < self->size; i++) {', + ' index = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);', + ' index->num = i;', + ' ccall(clos, 2, index, self->data[i]);', + '}', + 'return (object *)self;' + ] + }); forwarddec = toplevelcode = ''; forwarddec += int32.toEarlyCDef() + array.toEarlyCDef(); toplevelcode += int32.toCDef() + array.toCDef();