X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fas3%2Fabc.h;h=998f34ac159fb1eee811a4f6bec1efb05827eb22;hb=5ca9ad3a2f6ee53448d2e569a2f8d4c23a094501;hp=cfa48b0fd28568a2ab07b44fb62a59d2c9eda043;hpb=95706ae1c7ff59b6396c54da046b61eca7f3982f;p=swftools.git diff --git a/lib/as3/abc.h b/lib/as3/abc.h index cfa48b0..998f34a 100644 --- a/lib/as3/abc.h +++ b/lib/as3/abc.h @@ -40,9 +40,18 @@ DECLARE_LIST(exception); DECLARE(trait); + +#define METHOD_NEED_ARGUMENTS 1 +#define METHOD_NEED_ACTIVATION 2 +#define METHOD_NEED_REST 4 +#define METHOD_HAS_OPTIONAL 8 +#define METHOD_SET_DXNS 0x40 +#define METHOD_HAS_PARAM_NAMES 0x80 + struct _abc_method { multiname_t*return_type; multiname_list_t*parameters; + constant_list_t*optional_parameters; const char*name; U8 flags; abc_method_body_t*body; @@ -71,6 +80,7 @@ abc_file_t*abc_file_new(); #define TRAIT_FUNCTION 5 #define TRAIT_CONST 6 + struct _trait { unsigned char kind; unsigned char attributes; @@ -87,12 +97,11 @@ struct _trait { multiname_t*type_name; int data2; }; - int vindex; - int vkind; + constant_t*value; }; struct _abc_class { - abc_file_t*pool; + abc_file_t*file; multiname_t*classname; multiname_t*superclass; @@ -111,8 +120,8 @@ struct _abc_class { int index; //filled in during writing }; -abc_class_t* abc_class_new(abc_file_t*pool, multiname_t*classname, multiname_t*superclass); -abc_class_t* abc_class_new2(abc_file_t*pool, char*classname, char*superclass); +abc_class_t* abc_class_new(abc_file_t*file, multiname_t*classname, multiname_t*superclass); +abc_class_t* abc_class_new2(abc_file_t*file, char*classname, char*superclass); void abc_class_sealed(abc_class_t*c); void abc_class_final(abc_class_t*c); void abc_class_interface(abc_class_t*c); @@ -132,7 +141,7 @@ struct _exception { }; struct _abc_method_body { - abc_file_t*pool; + abc_file_t*file; //abc_class_t*cls; abc_method_t*method; code_t*code; @@ -147,17 +156,17 @@ struct _abc_method_body { trait_list_t*traits; int index; // filled in during writing + codestats_t*stats; //filled in during writing }; typedef struct _abc_script { abc_method_t*method; - abc_file_t*pool; + abc_file_t*file; trait_list_t*traits; } abc_script_t; abc_method_t* abc_nullmethod(abc_file_t*file); - -abc_script_t* abc_initscript(abc_file_t*pool, char*returntype, int num_params, ...); +abc_script_t* abc_initscript(abc_file_t*file, char*returntype, int num_params, ...); #define __