X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fpool.h;h=1c3006271cc866edb83f32f29abb3bfe5923b680;hb=8e13c34f9f544dc16ae479da65d9d82140a2e8c2;hp=db91e70a94282e867be530305b9c2e6c92239cfd;hpb=e6ab88d55270121e01d5ad9e4e9c2cf765a6d960;p=swftools.git diff --git a/lib/as3/pool.h b/lib/as3/pool.h index db91e70..1c30062 100644 --- a/lib/as3/pool.h +++ b/lib/as3/pool.h @@ -37,13 +37,13 @@ DECLARE_LIST(trait); /* abc file constant pool */ struct _pool { - array_t*ints; - array_t*uints; - array_t*floats; - array_t*strings; - array_t*namespaces; - array_t*namespace_sets; - array_t*multinames; + array_t*x_ints; + array_t*x_uints; + array_t*x_floats; + array_t*x_strings; + array_t*x_namespaces; + array_t*x_namespace_sets; + array_t*x_multinames; }; typedef enum multiname_type @@ -68,6 +68,8 @@ struct _namespace { struct _namespace_set { namespace_list_t*namespaces; }; + +extern type_t multiname_type; struct _multiname { multiname_type_t type; namespace_t*ns; @@ -81,9 +83,18 @@ char* multiname_to_string(multiname_t*m); char* namespace_to_string(namespace_t*ns); /* integer -> object */ +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); +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); /* object -> integer (lookup) */ +int pool_find_int(pool_t*pool, int x); +int pool_find_uint(pool_t*pool, unsigned int x); +int pool_find_double(pool_t*pool, double x); int pool_find_namespace(pool_t*pool, namespace_t*ns); int pool_find_namespace_set(pool_t*pool, namespace_set_t*set); int pool_find_string(pool_t*pool, const char*s); @@ -97,10 +108,27 @@ int pool_register_multiname(pool_t*pool, multiname_t*n); int pool_register_multiname2(pool_t*pool, char*name); /* creation */ +namespace_t* namespace_new(U8 access, 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); +namespace_t* namespace_new_explicit(const char*name); +namespace_t* namespace_new_staticprotected(const char*name); +namespace_t* namespace_new_private(const char*name); +namespace_t* namespace_clone(namespace_t*ns); + multiname_t* multiname_fromstring(const char*name); +multiname_t* multiname_new(namespace_t*ns, const char*name); +multiname_t* multiname_clone(multiname_t*other); + +/* freeing */ +void multiname_destroy(multiname_t*m); +void namespace_destroy(namespace_t*n); +/* pool constructors/destructors */ pool_t*pool_new(); void pool_read(pool_t*pool, TAG*tag); +void pool_write(pool_t*pool, TAG*tag); void pool_destroy(pool_t*pool); #endif