123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- (*
- * This file is part of SwfLib
- * Copyright (c)2004-2006 Nicolas Cannasse
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- *)
- open Extlib_leftovers
- type 'a index
- type 'a index_nz
- type as3_ident = string
- type as3_int = int32
- type as3_uint = int32
- type as3_float = float
- type as3_slot = int
- type reg = int
- type nargs = int
- type as3_jump =
- | J3NotLt
- | J3NotLte
- | J3NotGt
- | J3NotGte
- | J3Always
- | J3True
- | J3False
- | J3Eq
- | J3Neq
- | J3Lt
- | J3Lte
- | J3Gt
- | J3Gte
- | J3PhysEq
- | J3PhysNeq
- type as3_op =
- | A3OAs
- | A3ONeg
- | A3OIncr
- | A3ODecr
- | A3ONot
- | A3OBitNot
- | A3OAdd
- | A3OSub
- | A3OMul
- | A3ODiv
- | A3OMod
- | A3OShl
- | A3OShr
- | A3OUShr
- | A3OAnd
- | A3OOr
- | A3OXor
- | A3OEq
- | A3OPhysEq
- | A3OLt
- | A3OLte
- | A3OGt
- | A3OGte
- | A3OIs
- | A3OIn
- | A3OIIncr
- | A3OIDecr
- | A3OINeg
- | A3OIAdd
- | A3OISub
- | A3OIMul
- | A3OMemSet8
- | A3OMemSet16
- | A3OMemSet32
- | A3OMemSetFloat
- | A3OMemSetDouble
- | A3OMemGet8
- | A3OMemGet16
- | A3OMemGet32
- | A3OMemGetFloat
- | A3OMemGetDouble
- | A3OSign1
- | A3OSign8
- | A3OSign16
- type as3_name = as3_multi_name index
- and as3_opcode =
- | A3BreakPoint
- | A3Nop
- | A3Throw
- | A3GetSuper of as3_name
- | A3SetSuper of as3_name
- | A3DxNs of as3_ident index
- | A3DxNsLate
- | A3RegKill of reg
- | A3Label
- | A3Jump of as3_jump * int
- | A3Switch of int * int list
- | A3PushWith
- | A3PopScope
- | A3ForIn
- | A3HasNext
- | A3Null
- | A3Undefined
- | A3ForEach
- | A3SmallInt of int
- | A3Int of int
- | A3True
- | A3False
- | A3NaN
- | A3Pop
- | A3Dup
- | A3Swap
- | A3String of as3_ident index
- | A3IntRef of as3_int index
- | A3UIntRef of as3_uint index
- | A3Float of as3_float index
- | A3Scope
- | A3Namespace of as3_namespace index
- | A3Next of reg * reg
- | A3Function of as3_method_type index_nz
- | A3CallStack of nargs
- | A3Construct of nargs
- | A3CallMethod of as3_slot * nargs
- | A3CallStatic of as3_method_type index * nargs
- | A3CallSuper of as3_name * nargs
- | A3CallProperty of as3_name * nargs
- | A3RetVoid
- | A3Ret
- | A3ConstructSuper of nargs
- | A3ConstructProperty of as3_name * nargs
- | A3CallPropLex of as3_name * nargs
- | A3CallSuperVoid of as3_name * nargs
- | A3CallPropVoid of as3_name * nargs
- | A3ApplyType of nargs
- | A3Object of nargs
- | A3Array of nargs
- | A3NewBlock
- | A3ClassDef of unit index_nz
- | A3GetDescendants of as3_name
- | A3Catch of int
- | A3FindPropStrict of as3_name
- | A3FindProp of as3_name
- | A3FindDefinition of as3_name
- | A3GetLex of as3_name
- | A3SetProp of as3_name
- | A3Reg of reg
- | A3SetReg of reg
- | A3GetGlobalScope
- | A3GetScope of int
- | A3GetProp of as3_name
- | A3InitProp of as3_name
- | A3DeleteProp of as3_name
- | A3GetSlot of as3_slot
- | A3SetSlot of as3_slot
- | A3ToString
- | A3ToXml
- | A3ToXmlAttr
- | A3ToInt
- | A3ToUInt
- | A3ToNumber
- | A3ToBool
- | A3ToObject
- | A3CheckIsXml
- | A3Cast of as3_name
- | A3AsAny
- | A3AsString
- | A3AsType of as3_name
- | A3AsObject
- | A3IncrReg of reg
- | A3DecrReg of reg
- | A3Typeof
- | A3InstanceOf
- | A3IsType of as3_name
- | A3IncrIReg of reg
- | A3DecrIReg of reg
- | A3This
- | A3SetThis
- | A3DebugReg of as3_ident index * reg * int
- | A3DebugLine of int
- | A3DebugFile of as3_ident index
- | A3BreakPointLine of int
- | A3Timestamp
- | A3Op of as3_op
- | A3Unk of char
- and as3_namespace =
- | A3NPrivate of as3_ident index option
- | A3NPublic of as3_ident index option
- | A3NInternal of as3_ident index option
- | A3NProtected of as3_ident index
- | A3NNamespace of as3_ident index
- | A3NExplicit of as3_ident index
- | A3NStaticProtected of as3_ident index option
- and as3_ns_set = as3_namespace index list
- and as3_multi_name =
- | A3MName of as3_ident index * as3_namespace index
- | A3MMultiName of as3_ident index option * as3_ns_set index
- | A3MRuntimeName of as3_ident index
- | A3MRuntimeNameLate
- | A3MMultiNameLate of as3_ns_set index
- | A3MAttrib of as3_multi_name
- | A3MParams of as3_multi_name index * as3_multi_name index list
- | A3MNSAny of as3_ident index
- | A3MAny
- and as3_value =
- | A3VNone
- | A3VNull
- | A3VBool of bool
- | A3VString of as3_ident index
- | A3VInt of as3_int index
- | A3VUInt of as3_uint index
- | A3VFloat of as3_float index
- | A3VNamespace of int * as3_namespace index (* int : kind of namespace *)
- and as3_method_type = {
- mt3_ret : as3_name option;
- mt3_args : as3_name option list;
- mt3_native : bool;
- mt3_var_args : bool;
- mt3_arguments_defined : bool;
- mt3_uses_dxns : bool;
- mt3_new_block : bool;
- mt3_unused_flag : bool;
- mt3_debug_name : as3_ident index option;
- mt3_dparams : as3_value list option;
- mt3_pnames : as3_ident index option list option;
- }
- type as3_method_kind =
- | MK3Normal
- | MK3Getter
- | MK3Setter
- type as3_method = {
- m3_type : as3_method_type index_nz;
- m3_final : bool;
- m3_override : bool;
- m3_kind : as3_method_kind;
- }
- type as3_var = {
- v3_type : as3_name option;
- v3_value : as3_value;
- v3_const : bool;
- }
- type as3_metadata = {
- meta3_name : as3_ident index;
- meta3_data : (as3_ident index option * as3_ident index) array;
- }
- type as3_field_kind =
- | A3FMethod of as3_method
- | A3FVar of as3_var
- | A3FClass of as3_class index_nz
- | A3FFunction of as3_method_type index_nz
- and as3_field = {
- f3_name : as3_name;
- f3_slot : as3_slot;
- f3_kind : as3_field_kind;
- f3_metas : as3_metadata index_nz array option;
- }
- and as3_class = {
- cl3_name : as3_name;
- cl3_super : as3_name option;
- cl3_sealed : bool;
- cl3_final : bool;
- cl3_interface : bool;
- cl3_namespace : as3_namespace index option;
- cl3_implements : as3_name array;
- cl3_construct : as3_method_type index_nz;
- cl3_fields : as3_field array;
- }
- type as3_static = {
- st3_method : as3_method_type index_nz;
- st3_fields : as3_field array;
- }
- type as3_try_catch = {
- tc3_start : int;
- tc3_end : int;
- tc3_handle : int;
- tc3_type : as3_name option;
- tc3_name : as3_name option;
- }
- type as3_function = {
- fun3_id : as3_method_type index_nz;
- fun3_stack_size : int;
- fun3_nregs : int;
- fun3_init_scope : int;
- fun3_max_scope : int;
- fun3_code : as3_opcode MultiArray.t;
- fun3_trys : as3_try_catch array;
- fun3_locals : as3_field array;
- }
- type as3_tag = {
- as3_ints : as3_int array;
- as3_uints : as3_uint array;
- as3_floats : as3_float array;
- as3_idents : as3_ident array;
- as3_namespaces : as3_namespace array;
- as3_nsets : as3_ns_set array;
- mutable as3_names : as3_multi_name array;
- mutable as3_method_types : as3_method_type array;
- mutable as3_metadatas : as3_metadata array;
- mutable as3_classes : as3_class array;
- mutable as3_statics : as3_static array;
- mutable as3_inits : as3_static array;
- mutable as3_functions : as3_function array;
- mutable as3_unknown : string; (* only for partial parsing *)
- }
|