Mercurial > repos > tabletprog
view runtime/object.h @ 186:35d2cc193d99
Add string conversion inside array join so callers don't need to worry about doing string conversions themselves
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 26 Aug 2013 17:27:17 -0700 |
parents | 18598163e3ef |
children | 75dc7161c1ca |
line wrap: on
line source
#ifndef OBJECT_H_ #define OBJECT_H_ #include <stdint.h> #include <stdarg.h> typedef struct obj_meta obj_meta; typedef struct object { obj_meta * meta; struct object * parent; } object; 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; method meth_lookup[16]; }; extern obj_meta lambda_meta; object * mcall(uint32_t method_id, uint32_t num_args, object * self, ...); #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_lambda(void * env, closure_func func); object * make_array(uint32_t num_els, ...); object * make_list(uint32_t num_els, ...); #endif //OBJECT_H_