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();