diff runtime/object.c @ 34:a10f1b049193

Working closures, but need to rethink method call strategy
author Mike Pavone <pavone@retrodev.com>
date Mon, 09 Jul 2012 08:57:50 -0700
parents 668f533e5284
children bf5e88f6419d
line wrap: on
line diff
--- a/runtime/object.c	Sun Jul 08 12:32:24 2012 -0700
+++ b/runtime/object.c	Mon Jul 09 08:57:50 2012 -0700
@@ -1,6 +1,7 @@
 #include "object.h"
 #include <stdarg.h>
 #include <stdlib.h>
+#include <stddef.h>
 
 object * make_object(obj_meta * meta, void * parent, int num_props, ...)
 {
@@ -14,8 +15,18 @@
 	for (; num_props > 0; num_props--)
 	{
 		*curprop = va_arg(args, object *);
+		curprop++;
 	}
 	va_end(args);
 	return newobj;
 }
 
+object * make_closure(void * env, closure_func func)
+{
+	closure * ret = malloc(sizeof(closure));
+	ret->header.meta = &lambda_meta;
+	ret->header.parent = NULL;
+	ret->env = env;
+	ret->func = func;
+	return (object *) ret;
+}