Beispiel #1
0
        public ASNamespace(ASConstants constants, FlashReader reader)
        {
            _constants = constants;

            NamespaceType = (ConstantType)reader.ReadByte();
            NameIndex = reader.Read7BitEncodedInt();
        }
Beispiel #2
0
 public QName(ASConstants constants, int nameIndex, int namespaceIndex, ConstantType multinameType)
 {
     _constants = constants;
     MultinameType = multinameType;
     NameIndex = nameIndex;
     NamespaceIndex = namespaceIndex;
 }
Beispiel #3
0
 public QName(ASConstants constants, FlashReader reader, ConstantType multinameType)
 {
     _constants = constants;
     MultinameType = multinameType;
     NamespaceIndex = reader.Read7BitEncodedInt();
     NameIndex = reader.Read7BitEncodedInt();
 }
Beispiel #4
0
        public ASNamespace(ASConstants constants, int nameIndex, ConstantType kind)
        {
            _constants = constants;
            NameIndex = nameIndex;

            NamespaceType = kind;
        }
Beispiel #5
0
        public Typename(ASConstants constants, FlashReader reader)
        {
            _constants = constants;

            TypeIndex = reader.Read7BitEncodedInt();
            ParameterTypeIndices = new List<int>(reader.Read7BitEncodedInt());

            for (int i = 0; i < ParameterTypeIndices.Capacity; i++)
                ParameterTypeIndices.Add(reader.Read7BitEncodedInt());
        }
Beispiel #6
0
        public ASNamespaceSet(ASConstants constants, FlashReader reader)
        {
            _constants = constants;

            NamespaceIndices =
                new List<int>(reader.Read7BitEncodedInt());

            for (int i = 0; i < NamespaceIndices.Capacity; i++)
                NamespaceIndices.Add(reader.Read7BitEncodedInt());
        }
Beispiel #7
0
        public ASMultiname(ASConstants constants, FlashReader reader)
        {
            _constants = constants;

            var multinameType = (ConstantType)reader.ReadByte();
            switch (multinameType)
            {
                case ConstantType.QName:
                case ConstantType.QNameA:
                {
                    var qName = new QName(constants, reader, multinameType);
                    ObjNameIndex = qName.NameIndex;

                    Data = qName;
                    break;
                }

                case ConstantType.RTQName:
                case ConstantType.RTQNameA:
                {
                    var rtqName = new RTQName(constants, reader, multinameType);
                    ObjNameIndex = rtqName.NameIndex;

                    Data = rtqName;
                    break;
                }

                case ConstantType.RTQNameL:
                case ConstantType.RTQNameLA:
                Data = new RTQNameL(multinameType);
                break;

                case ConstantType.Multiname:
                case ConstantType.MultinameA:
                {
                    var multiname = new Multiname(constants, reader, multinameType);
                    ObjNameIndex = multiname.NameIndex;

                    Data = multiname;
                    break;
                }

                case ConstantType.MultinameL:
                case ConstantType.MultinameLA:
                Data = new MultinameL(constants, reader, multinameType);
                break;

                case ConstantType.Typename:
                Data = new Typename(constants, reader);
                break;

                default:
                throw new Exception("Invalid multiname: " + multinameType);
            }
        }
Beispiel #8
0
        public ABCFile(FlashReader reader)
        {
            _reader = reader;

            MinorVersion = _reader.ReadUInt16();
            MajorVersion = _reader.ReadUInt16();

            Constants = new ASConstants(this, _reader);
            Constants.ReadConstants();

            Methods = new List<ASMethod>(_reader.Read7BitEncodedInt());
            for (int i = 0; i < Methods.Capacity; i++)
                Methods.Add(new ASMethod(this, _reader));

            Metadata = new List<ASMetadata>(_reader.Read7BitEncodedInt());
            for (int i = 0; i < Metadata.Capacity; i++)
                Metadata.Add(new ASMetadata(this, _reader));

            Instances = new List<ASInstance>(_reader.Read7BitEncodedInt());
            for (int i = 0; i < Instances.Capacity; i++)
                Instances.Add(new ASInstance(this, _reader));

            Classes = new List<ASClass>(Instances.Capacity);
            for (int i = 0; i < Classes.Capacity; i++)
            {
                Classes.Add(new ASClass(this, _reader));
                Classes[i].Instance = Instances[i];
            }

            Scripts = new List<ASScript>(_reader.Read7BitEncodedInt());
            for (int i = 0; i < Scripts.Capacity; i++)
                Scripts.Add(new ASScript(this, _reader));

            MethodBodies = new List<ASMethodBody>(_reader.Read7BitEncodedInt());
            for (int i = 0; i < MethodBodies.Capacity; i++)
                MethodBodies.Add(new ASMethodBody(this, _reader));
        }
Beispiel #9
0
 public Typename(ASConstants constants, int typeIndex) :
     this(constants)
 {
     TypeIndex = typeIndex;
 }
Beispiel #10
0
 public ASNamespaceSet(ASConstants constants, IList<int> namespaceIndices) :
     this(constants)
 {
     NamespaceIndices.AddRange(namespaceIndices);
 }
Beispiel #11
0
 public ASNamespaceSet(ASConstants constants)
 {
     NamespaceIndices = new List<int>();
 }
Beispiel #12
0
 public MultinameL(ASConstants constants) :
     this(constants, 0, ConstantType.MultinameL)
 { }
Beispiel #13
0
 public QName(ASConstants constants, FlashReader reader) :
     this(constants, reader, ConstantType.QName)
 { }
Beispiel #14
0
 public MultinameL(ASConstants constants, ConstantType multinameType) :
     this(constants, 0, multinameType)
 { }
Beispiel #15
0
 public QName(ASConstants constants, ConstantType multinameType) :
     this(constants, 0, 0, multinameType)
 { }
Beispiel #16
0
 public QName(ASConstants constants) :
     this(constants, 0, 0, ConstantType.QName)
 { }
Beispiel #17
0
 public MultinameL(ASConstants constants, int namespaceSetIndex, ConstantType multinameType)
 {
     _constants = constants;
     MultinameType = multinameType;
     NamespaceSetIndex = namespaceSetIndex;
 }
Beispiel #18
0
 public Typename(ASConstants constants, int typeIndex, IList<int> parameterTypeIndices) :
     this(constants, typeIndex)
 {
     ParameterTypeIndices.AddRange(parameterTypeIndices);
 }
Beispiel #19
0
 public Typename(ASConstants constants)
 {
     _constants = constants;
     ParameterTypeIndices = new List<int>();
 }
Beispiel #20
0
 public MultinameL(ASConstants constants, FlashReader reader) :
     this(constants, reader, ConstantType.MultinameL)
 { }
Beispiel #21
0
 public ASNamespace(ASConstants constants) :
     this(constants, 0)
 { }
Beispiel #22
0
 public ASNamespace(ASConstants constants, int nameIndex) :
     this(constants, nameIndex, ConstantType.Namespace)
 { }