Mercurial > repos > tabletprog
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));