From 207d9e7c1d108915492ec59cfc3376b30e016b78 Mon Sep 17 00:00:00 2001 From: kramm Date: Tue, 2 Dec 2008 17:04:32 +0000 Subject: [PATCH] more stub code --- lib/as3/registry.c | 37 +++++++++++++++++++++++++++++++++---- lib/as3/registry.h | 3 +++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/lib/as3/registry.c b/lib/as3/registry.c index 11c050c..5a688bd 100644 --- a/lib/as3/registry.c +++ b/lib/as3/registry.c @@ -4,6 +4,9 @@ static namespace_t static_empty_ns = { ACCESS_PACKAGE, "" }; +static namespace_t static_flash_display_ns = { + ACCESS_PACKAGE, "flash.display" +}; static multiname_t static_object_class = { QNAME, &static_empty_ns, 0, "Object" }; @@ -25,6 +28,9 @@ static multiname_t static_int_class = { static multiname_t static_uint_class = { QNAME, &static_empty_ns, 0, "uint" }; +static multiname_t static_movieclip_class = { + QNAME, &static_flash_display_ns, 0, "MovieClip" +}; multiname_t* registry_getobjectclass() {return &static_object_class;} multiname_t* registry_getanytype() {return &static_anytype_class;} @@ -33,6 +39,8 @@ multiname_t* registry_getintclass() {return &static_int_class;} multiname_t* registry_getuintclass() {return &static_uint_class;} multiname_t* registry_getbooleanclass() {return &static_boolean_class;} multiname_t* registry_getnumberclass() {return &static_number_class;} +multiname_t* registry_getMovieClip() {return &static_movieclip_class;} + multiname_t* registry_findclass(const char*package, const char*name) { @@ -40,7 +48,14 @@ multiname_t* registry_findclass(const char*package, const char*name) if(!package) { m = multiname_new(0, name); } else { - namespace_t*ns = namespace_new_packageinternal(package); + namespace_t*ns = 0; + + /* things in the "flash" package are usually public */ + if(!strncmp(package, "flash", 5)) + ns =namespace_new_package(package); + else + ns = namespace_new_packageinternal(package); + m = multiname_new(ns,name); namespace_destroy(ns); } @@ -48,8 +63,22 @@ multiname_t* registry_findclass(const char*package, const char*name) } multiname_t* registry_getsuperclass(multiname_t*m) { - if(m->name && !strcmp(m->name, "Object")) - return 0; - return &static_object_class; + if(!m->name) + return 0; + if(!strcmp(m->name, "Object")) + return 0; + + else if(!strcmp(m->name, "MovieClip")) + return multiname_fromstring("[package]flash.display::Sprite"); + else if(!strcmp(m->name, "Sprite")) + return multiname_fromstring("[package]flash.display::DisplayObjectContainer"); + else if(!strcmp(m->name, "DisplayObjectContainer")) + return multiname_fromstring("[package]flash.display::InteractiveObject"); + else if(!strcmp(m->name, "InteractiveObject")) + return multiname_fromstring("[package]flash.display::DisplayObject"); + else if(!strcmp(m->name, "DisplayObject")) + return multiname_fromstring("[package]flash.events::EventDispatcher"); + else + return &static_object_class; } diff --git a/lib/as3/registry.h b/lib/as3/registry.h index 5d07634..f0ea362 100644 --- a/lib/as3/registry.h +++ b/lib/as3/registry.h @@ -8,5 +8,8 @@ multiname_t* registry_getstringclass(); multiname_t* registry_getintclass(); multiname_t* registry_getuintclass(); multiname_t* registry_getbooleanclass(); + multiname_t* registry_getsuperclass(multiname_t*m); + +multiname_t* registry_getMovieClip(); #endif -- 1.7.10.4