remove namespaces from tokens again when they go out of scope
[swftools.git] / lib / as3 / pool.h
index 50f1b3a..09e7377 100644 (file)
@@ -87,7 +87,7 @@ struct _constant {
         double f;
         int i;
         unsigned int u;
-        char*s;
+        string_t* s;
         namespace_t*ns;
     };
     int type;
@@ -97,6 +97,7 @@ constant_t* constant_new_int(int x);
 constant_t* constant_new_uint(unsigned int x);
 constant_t* constant_new_float(double x);
 constant_t* constant_new_string(char*s);
+constant_t* constant_new_string2(const char*s, int len);
 constant_t* constant_new_namespace(namespace_t*ns);
 constant_t* constant_new_true();
 constant_t* constant_new_false();
@@ -118,14 +119,15 @@ typedef enum multiname_type
  RTQNAMEA=0x10,
  RTQNAMELA=0x12,
  MULTINAMEA=0x0E,
- MULTINAMELA=0x1C
+ MULTINAMELA=0x1C,
+ POSTFIXTYPE=0x1D
 } multiname_type_t;
 
 char* access2str(int type);
 
 struct _namespace {
     U8 access;
-    char*name;
+    const char*name;
 };
 struct _namespace_set {
     namespace_list_t*namespaces;
@@ -148,7 +150,8 @@ char* namespace_tostring(namespace_t*ns);
 int pool_lookup_int(pool_t*pool, int i);
 unsigned int pool_lookup_uint(pool_t*pool, int i);
 double pool_lookup_float(pool_t*pool, int i);
-char*pool_lookup_string(pool_t*pool, int i);
+const char*pool_lookup_string(pool_t*pool, int i);
+string_t pool_lookup_string2(pool_t*pool, int i);
 namespace_t*pool_lookup_namespace(pool_t*pool, int i);
 namespace_set_t*pool_lookup_namespace_set(pool_t*pool, int i);
 multiname_t*pool_lookup_multiname(pool_t*pool, int i);
@@ -167,6 +170,7 @@ int pool_register_int(pool_t*p, int i);
 int pool_register_uint(pool_t*p, unsigned int i);
 int pool_register_float(pool_t*p, double d);
 int pool_register_string(pool_t*pool, const char*s);
+int pool_register_string2(pool_t*pool, string_t*s);
 int pool_register_namespace(pool_t*pool, namespace_t*ns);
 int pool_register_namespace_set(pool_t*pool, namespace_set_t*set);
 int pool_register_multiname(pool_t*pool, multiname_t*n);
@@ -174,6 +178,7 @@ int pool_register_multiname2(pool_t*pool, char*name);
 
 /* creation */
 namespace_t* namespace_new(U8 access, const char*name);
+namespace_t* namespace_new_namespace(const char*name);
 namespace_t* namespace_new_package(const char*name);
 namespace_t* namespace_new_packageinternal(const char*name);
 namespace_t* namespace_new_protected(const char*name);
@@ -198,8 +203,10 @@ void namespace_destroy(namespace_t*n);
 
 /* pool constructors/destructors */
 pool_t*pool_new();
+void pool_optimize();
 void pool_read(pool_t*pool, TAG*tag);
 void pool_write(pool_t*pool, TAG*tag);
 void pool_destroy(pool_t*pool);
+void pool_dump(pool_t*pool, FILE*fo, char flags);
 
 #endif