X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fas3%2Fregistry.c;h=4b6b66c139480d4549b5f0ed46751a74d49bb15a;hp=5fd76cc6d182f898f75a22db39f930660ddb694e;hb=9ed9a87914fc9a590967d46de404e0f6290b7bb2;hpb=8f67c24d3250b417099a27525c3ef14ab1c7b3db;ds=sidebyside diff --git a/lib/as3/registry.c b/lib/as3/registry.c index 5fd76cc..4b6b66c 100644 --- a/lib/as3/registry.c +++ b/lib/as3/registry.c @@ -27,6 +27,7 @@ #include "builtin.h" dict_t*registry_classes=0; +asset_bundle_list_t*assets=0; // ----------------------- class signature ------------------------------ @@ -71,6 +72,32 @@ type_t memberinfo_type = { free: (free_func)dummy_destroy, }; +// ----------------------- assets ------------------------------------- +void registry_use(slotinfo_t*s) +{ + if(s->kind == INFOTYPE_CLASS) { + classinfo_t*c=(classinfo_t*)s; + if(c->assets) c->assets->used = 1; + } else if(s->kind == INFOTYPE_METHOD) { + methodinfo_t*m=(methodinfo_t*)s; + if(m->parent) { + registry_use((slotinfo_t*)m->parent); + } + } else if(s->kind == INFOTYPE_VAR) { + varinfo_t*v=(varinfo_t*)s; + if(v->parent) { + registry_use((slotinfo_t*)v->parent); + } + } +} +void registry_add_asset(asset_bundle_t*bundle) +{ + list_append(assets, bundle); +} +asset_bundle_list_t*registry_getassets() +{ + return assets; +} // ----------------------- resolving ---------------------------------- slotinfo_t* registry_resolve(slotinfo_t*_s) {