just made compileable- it'll be replaced soon
[swftools.git] / lib / as3 / registry.c
index 61fd55b..069f923 100644 (file)
@@ -103,7 +103,7 @@ classinfo_t* registry_getclassclass(classinfo_t*a) {
             return c;
     }
 
-    NEW(classinfo_t,c);
+    classinfo_t*c = rfx_calloc(sizeof(classinfo_t)+sizeof(classinfo_t*));
     c->access = ACCESS_PUBLIC;
     c->package = "";
     c->name = "Class";
@@ -150,6 +150,7 @@ classinfo_t* registry_safefindclass(const char*package, const char*name)
     assert(c);
     return c;
 }
+
 classinfo_t* registry_findclass(const char*package, const char*name)
 {
     assert(classes);
@@ -161,6 +162,20 @@ classinfo_t* registry_findclass(const char*package, const char*name)
         printf("%s.%s->%08x (%s.%s)\n", package, name, c, c->package, c->name);*/
     return c;
 }
+void registry_dumpclasses()
+{
+    int t;
+    for(t=0;t<classes->hashsize;t++) {
+        dictentry_t*e = classes->slots[t];
+        while(e) {
+            dictentry_t*next = e->next;
+            classinfo_t*i = (classinfo_t*)e->key;
+            printf("%s.%s\n", i->package, i->name);
+            e = e->next;
+        }
+    }
+}
+
 memberinfo_t* registry_findmember(classinfo_t*cls, const char*name, char recursive)
 {
     if(!recursive) {
@@ -219,7 +234,7 @@ classinfo_t* memberinfo_asclass(memberinfo_t*f) {
             return c;
     }
 
-    NEW(classinfo_t,c);
+    classinfo_t*c = rfx_calloc(sizeof(classinfo_t)+sizeof(classinfo_t*));
     c->access = ACCESS_PUBLIC;
     c->package = "";
     c->name = "Function";
@@ -290,6 +305,11 @@ classinfo_t* registry_getnumberclass() {
     if(!c) c = registry_safefindclass("", "Number");
     return c;
 }
+classinfo_t* registry_getregexpclass() {
+    static classinfo_t*c = 0;
+    if(!c) c = registry_safefindclass("", "RegExp");
+    return c;
+}
 classinfo_t* registry_getMovieClip() {
     static classinfo_t*c = 0;
     if(!c) c = registry_safefindclass("flash.display", "MovieClip");
@@ -304,3 +324,23 @@ classinfo_t* registry_getnullclass() {
     return &nullclass;
 }
 
+// ---------------------------------------------------------------------
+namespace_t flags2namespace(int flags, char*package)
+{
+    namespace_t ns;
+    ns.name = package;
+    if(flags&FLAG_PUBLIC)  {
+        ns.access = ACCESS_PACKAGE;
+    } else if(flags&FLAG_PRIVATE) {
+        ns.access = ACCESS_PRIVATE;
+    } else if(flags&FLAG_PROTECTED) {
+        ns.access = ACCESS_PROTECTED;
+    } else if(flags&FLAG_NAMESPACE_ADOBE) {
+        ns.access = ACCESS_NAMESPACE;
+        assert(!package || !package[0]);
+        ns.name = "http://adobe.com/AS3/2006/builtin";
+    } else {
+        ns.access = ACCESS_PACKAGEINTERNAL;
+    }
+    return ns;
+}