diff runtime/progfoot.inc @ 170:18598163e3ef

Add linked list implementation and cons operator
author Mike Pavone <pavone@retrodev.com>
date Tue, 13 Aug 2013 21:58:03 -0700
parents 25bc8a5ab41e
children
line wrap: on
line diff
--- a/runtime/progfoot.inc	Fri Aug 09 21:01:11 2013 -0700
+++ b/runtime/progfoot.inc	Tue Aug 13 21:58:03 2013 -0700
@@ -16,7 +16,7 @@
 {
 	va_list els;
 	int i;
-	array * arr = alloc_array(num_els);	
+	array * arr = alloc_array(num_els);
 	va_start(els, num_els);
 	for (i = 0; i < num_els; i++)
 		arr->data[i] = va_arg(els, object *);
@@ -24,6 +24,18 @@
 	return &(arr->header);
 }
 
+object * make_list(uint32_t num_els, ...)
+{
+	va_list els;
+	int i;
+	object * cur = mcall(METHOD_ID_EMPTY, 1, module_list);
+	va_start(els, num_els);
+	for (i = 0; i < num_els; i++)
+		cur = mcall(METHOD_ID_CONS, 2, cur, va_arg(els, object *));
+	va_end(els);
+	return cur;
+}
+
 object * make_lambda(void * env, closure_func func)
 {
 	lambda * ret = GC_MALLOC(sizeof(lambda));