Mercurial > repos > tabletprog
view runtime/object.c @ 69:ba032565c7a5
Fix handling of variable style access to self and parent object messages defined with lambdas. Improve test case for this bug to include parent object access as well as self object access.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 14 Jul 2012 19:24:04 -0700 |
parents | 2a9c6eed0c70 |
children | abc6f3d644a4 |
line wrap: on
line source
#include "object.h" #include <stdarg.h> #include <stdlib.h> #include <stddef.h> object * make_object(obj_meta * meta, void * parent, int num_props, ...) { va_list args; object * newobj = malloc(meta->size); newobj->meta = meta; newobj->parent = parent; va_start(args, num_props); object ** curprop = ((object **)(newobj + 1)); for (; num_props > 0; num_props--) { *curprop = va_arg(args, object *); curprop++; } va_end(args); return newobj; } object * mcall(uint32_t method_id, uint32_t num_args, object * self, ...) { va_list args; va_start(args, self); object * ret = self->meta->meth_lookup[method_id & 0xF](method_id, num_args, self, args); va_end(args); return ret; }