From: kramm Date: Tue, 30 Dec 2008 23:02:44 +0000 (+0000) Subject: classinfo_t now has a union member for storing subclasses/submembers X-Git-Tag: release-0-9-0~525 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=015fead14e2466763ecfff196756c53f293b266a classinfo_t now has a union member for storing subclasses/submembers --- diff --git a/lib/as3/registry.c b/lib/as3/registry.c index 06ae5c5..e23321f 100644 --- a/lib/as3/registry.c +++ b/lib/as3/registry.c @@ -108,12 +108,14 @@ classinfo_t* registry_getfunctionclass(memberinfo_t*f) { c->access = ACCESS_PUBLIC; c->package = ""; c->name = "Function"; + dict_init(&c->members,1); - dict_put(&c->members, "call", f); + c->function = f; dict_put(functionobjects, f, c); return c; } + static dict_t* classobjects = 0; classinfo_t* registry_getclassclass(classinfo_t*a) { if(!classobjects) { @@ -128,14 +130,8 @@ classinfo_t* registry_getclassclass(classinfo_t*a) { c->access = ACCESS_PUBLIC; c->package = ""; c->name = "Class"; - - NEW(memberinfo_t,m); - m->kind = MEMBER_SLOT; - m->name = "prototype"; - m->type = a; - dict_init(&c->members,1); - dict_put(&c->members, "prototype", m); + c->cls = a; dict_put(classobjects, a, c); return c; diff --git a/lib/as3/registry.h b/lib/as3/registry.h index b5769b0..1784563 100644 --- a/lib/as3/registry.h +++ b/lib/as3/registry.h @@ -35,7 +35,11 @@ struct _classinfo { U8 flags; const char*package; const char*name; - int slot; + union { + int slot; // slot nr in initscript traits + classinfo_t*cls; // specific class of a Class type + memberinfo_t*function; //specific function of a Function type + }; classinfo_t*superclass; dict_t members;