2
* This file is part of SwfLib
3
* Copyright (c)2004-2008 Nicolas Cannasse
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
type hl_ident = string
26
type hl_jump = as3_jump
33
| HGetSuper of hl_name
34
| HSetSuper of hl_name
37
| HJump of hl_jump * int
38
| HSwitch of int * int list
59
| HNamespace of hl_namespace
61
| HFunction of hl_method
64
| HCallMethod of hl_slot * nargs
65
| HCallStatic of hl_method * nargs
66
| HCallSuper of hl_name * nargs
67
| HCallProperty of hl_name * nargs
70
| HConstructSuper of nargs
71
| HConstructProperty of hl_name * nargs
72
| HCallPropLex of hl_name * nargs
73
| HCallSuperVoid of hl_name * nargs
74
| HCallPropVoid of hl_name * nargs
78
| HClassDef of hl_class
80
| HFindPropStrict of hl_name
81
| HFindProp of hl_name
82
| HFindDefinition of hl_name
90
| HInitProp of hl_name
91
| HDeleteProp of hl_name
117
| HDebugReg of hl_ident * reg * int
119
| HDebugFile of hl_ident
120
| HBreakPointLine of int
126
| HNPrivate of hl_ident option
127
| HNPublic of hl_ident option
128
| HNInternal of hl_ident option
129
| HNProtected of hl_ident
130
| HNNamespace of hl_ident
131
| HNExplicit of hl_ident
132
| HNStaticProtected of hl_ident option
134
and hl_ns_set = hl_namespace list
137
| HMPath of hl_ident list * hl_ident
138
| HMName of hl_ident * hl_namespace
139
| HMMultiName of hl_ident option * hl_ns_set
140
| HMRuntimeName of hl_ident
142
| HMMultiNameLate of hl_ns_set
143
| HMAttrib of hl_name
149
| HVString of hl_ident
152
| HVFloat of hl_float
153
| HVNamespace of int * hl_namespace
156
hlmt_mark : int; (* unique id, for internal usage *)
157
hlmt_ret : hl_name option;
158
hlmt_args : hl_name option list;
160
hlmt_var_args : bool;
161
hlmt_arguments_defined : bool;
162
hlmt_uses_dxns : bool;
163
hlmt_new_block : bool;
164
hlmt_unused_flag : bool;
165
hlmt_debug_name : hl_ident option;
166
hlmt_dparams : hl_value list option;
167
hlmt_pnames : hl_ident option list option;
168
hlmt_function : hl_function option; (* None for interfaces constructors only *)
175
hltc_type : hl_name option;
176
hltc_name : hl_name option;
180
hlf_stack_size : int;
182
hlf_init_scope : int;
184
mutable hlf_code : hl_opcode array;
185
hlf_trys : hl_try_catch array;
186
hlf_locals : (hl_name * hl_name option * hl_slot) array;
189
and hl_method_kind = as3_method_kind
191
and hl_method_field = {
192
hlm_type : hl_method;
195
hlm_kind : hl_method_kind;
199
hlv_type : hl_name option;
200
hlv_value : hl_value;
205
hlmeta_name : hl_ident;
206
hlmeta_data : (hl_ident option * hl_ident) array;
210
| HFMethod of hl_method_field
211
| HFVar of hl_var_field
212
| HFFunction of hl_method
213
| HFClass of hl_class (* only for hl_static fields *)
218
hlf_kind : hl_field_kind;
219
hlf_metas : hl_metadata array option;
224
hlc_super : hl_name option;
227
hlc_interface : bool;
228
hlc_namespace : hl_namespace option;
229
hlc_implements : hl_name array;
230
hlc_construct : hl_method;
231
hlc_fields : hl_field array;
232
hlc_static_construct : hl_method;
233
hlc_static_fields : hl_field array;
237
hls_method : hl_method;
238
hls_fields : hl_field array;
241
and hl_tag = hl_static list