Mercurial > repos > tabletprog
diff runtime/object.h @ 45:2a9c6eed0c70
Move closure/lambda object def into compiler rather than runtime code. Add while:do method to lambda
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 13 Jul 2012 00:23:38 -0700 |
parents | e7be612fd3ae |
children | 18598163e3ef |
line wrap: on
line diff
--- a/runtime/object.h Thu Jul 12 22:49:08 2012 -0700 +++ b/runtime/object.h Fri Jul 13 00:23:38 2012 -0700 @@ -15,14 +15,14 @@ typedef object * (*method)(uint32_t method_id, uint32_t num_args, object * self, va_list args); typedef object * (*closure_func)(void *, uint32_t, ...); - +/* typedef struct closure { object header; void * env; closure_func func; } closure; - +*/ struct obj_meta { uint32_t size; @@ -32,10 +32,10 @@ extern obj_meta lambda_meta; object * mcall(uint32_t method_id, uint32_t num_args, object * self, ...); -#define ccall(clos, num_args, ...) (((closure *)clos)->func(((closure *)clos)->env, num_args,##__VA_ARGS__)) +#define ccall(clos, num_args, ...) (((lambda *)clos)->func(((lambda *)clos)->env, num_args,##__VA_ARGS__)) object * make_object(obj_meta * meta, void * parent, int num_props, ...); -object * make_closure(void * env, closure_func func); +object * make_lambda(void * env, closure_func func); object * make_array(uint32_t num_els, ...); #endif //OBJECT_H_