예제 #1
0
        public void Write(SwfWriter writer)
        {
            writer.WriteUInt8((byte)Kind);
            switch (Kind)
            {
            case AbcConstKind.QName:
            case AbcConstKind.QNameA:
            {
                writer.WriteUIntEncoded((uint)Namespace.Index);
                writer.WriteUIntEncoded((uint)Name.Index);
            }
            break;

            case AbcConstKind.RTQName:
            case AbcConstKind.RTQNameA:
            {
                writer.WriteUIntEncoded((uint)Name.Index);
            }
            break;

            case AbcConstKind.RTQNameL:
            case AbcConstKind.RTQNameLA:
            {
                //This kind has no associated data.
            }
            break;

            case AbcConstKind.Multiname:
            case AbcConstKind.MultinameA:
            {
                writer.WriteUIntEncoded((uint)Name.Index);
                writer.WriteUIntEncoded((uint)NamespaceSet.Index);
            }
            break;

            case AbcConstKind.MultinameL:
            case AbcConstKind.MultinameLA:
            {
                writer.WriteUIntEncoded((uint)NamespaceSet.Index);
            }
            break;

            case AbcConstKind.TypeName:
            {
                writer.WriteUIntEncoded((uint)Type.Index);
                writer.WriteByte(1);
                writer.WriteUIntEncoded((uint)TypeParameter.Index);
            }
            break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
예제 #2
0
            public void Write(SwfWriter writer)
            {
                int n = Count;

                writer.WriteUIntEncoded(n);
                for (int i = 0; i < n; ++i)
                {
                    var dep = this[i];
                    writer.WriteByte((byte)dep.Type);
                    dep.Write(writer);
                }
            }
예제 #3
0
 public void Write(SwfWriter writer)
 {
     writer.WriteUIntEncoded((uint)SlotId);
     writer.WriteUIntEncoded((uint)Type.Index);
     if (HasValue)
     {
         writer.WriteConstIndex(_value);
     }
     else
     {
         writer.WriteByte(0);
     }
 }