public void Read(SwfReader reader) { SlotId = (int)reader.ReadUIntEncoded(); //slot_id int index = (int)reader.ReadUIntEncoded(); //classi Class = reader.ABC.Classes[index]; }
public AbcInstance(bool withClass) : this() { if (withClass) { Class = new AbcClass(); } }
public static AbcTrait CreateClass(AbcClass klass) { return(new AbcTrait(AbcTraitKind.Class) { Name = klass.Instance.Name, Class = klass }); }
private AbcInstance ImportInstanceCore(AbcInstance source, ref AbcMethod importMethod) { var instance = new AbcInstance { Name = ImportConst(source.Name), IsMixin = source.IsMixin, IsStyleMixin = source.IsStyleMixin, ImportedFrom = source }; source.ImportedInstance = instance; var klass = new AbcClass(instance); AddInstance(instance); AbcInstance superType; instance.BaseTypeName = ImportType(source.BaseTypeName, out superType); instance.BaseInstance = superType; instance.Flags = source.Flags; instance.ProtectedNamespace = ImportConst(source.ProtectedNamespace); instance.Type = source.Type; if (instance.Type != null) { SetData(instance.Type, instance); } foreach (var iname in source.Interfaces) { AbcInstance ifaceInstance; var mn = ImportType(iname, out ifaceInstance); if (mn == null) { throw new InvalidOperationException(); } //NOTE: Flex Compiler Bug!!! //I found that within SWC files interface names must be always declared as multinames (with namespace set) //This is true for flex 3. if (IsSwcScript) { mn = ToMultiname(mn); } instance.Interfaces.Add(mn); if (ifaceInstance != null) { ifaceInstance.Implementations.Add(instance); instance.Implements.Add(ifaceInstance); } } instance.Initializer = ImportMethod(source.Initializer); klass.Initializer = ImportMethod(source.Class.Initializer); if (importMethod == source.Initializer) { importMethod = instance.Initializer; } if (importMethod == source.Class.Initializer) { importMethod = klass.Initializer; } ImportTraits(source, instance, ref importMethod); ImportTraits(source.Class, klass, ref importMethod); return(instance); }
/// <summary> /// Determines whether the given <see cref="AbcClass"/> is defined in this ABC file. /// </summary> /// <param name="klass">class to check</param> /// <returns></returns> public bool IsDefined(AbcClass klass) { return(Classes.IsDefined(klass)); }
public void AddClass(AbcClass klass) { Add(AbcTrait.CreateClass(klass)); }