X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fpool.h;h=632fa7f38a89662c06783894a7f99d816a938669;hb=c63b2bf21dc1df9a736f0b4c08f6cba828cdab92;hp=50f1b3a8f04fe9f75f138a2d5e54169a244e72d4;hpb=5531aa9a688340d90b0600fe2655d8cce4b76da4;p=swftools.git diff --git a/lib/as3/pool.h b/lib/as3/pool.h index 50f1b3a..632fa7f 100644 --- a/lib/as3/pool.h +++ b/lib/as3/pool.h @@ -80,23 +80,28 @@ CONSTANT_NAMESPACE_PROTECTED=0x18, CONSTANT_NAMESPACE_EXPLICIT=0x19, CONSTANT_NAMESPACE_STATICPROTECTED=0x1A, CONSTANT_NAMESPACE_PRIVATE=0x05, +CONSTANT_UNKNOWN=0x55, /*used internally */ } contant_type_t; +#define NS_TYPE(x) ((x) == 0x08 || (x) == 0x16 || (x) == 0x17 || (x) == 0x18 || (x) == 0x19 || (x) == 0x1a || (x) == 0x05) + struct _constant { + int type; union { + string_t* s; + namespace_t*ns; double f; int i; unsigned int u; - char*s; - namespace_t*ns; }; - int type; }; +constant_t* constant_clone(); 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_string(const 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 +123,16 @@ typedef enum multiname_type RTQNAMEA=0x10, RTQNAMELA=0x12, MULTINAMEA=0x0E, - MULTINAMELA=0x1C + MULTINAMELA=0x1C, + POSTFIXTYPE=0x1D, + ZERONAMESPACE=0 } 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 +155,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 +175,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 +183,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 +208,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