public Array WriteArray(IO.EndianWriter writer, Array array) { switch (Type) { case EType.Null: return null; case EType.Bool: return writer.WriteFixedArray((bool[])array); case EType.Int: { if (IsUnsigned) { switch (Size) { case ESizeInBytes._1byte: return writer.WriteFixedArray((byte[])array); case ESizeInBytes._2byte: return writer.WriteFixedArray((ushort[])array); case ESizeInBytes._4byte: return writer.WriteFixedArray((uint[])array); case ESizeInBytes._8byte: return writer.WriteFixedArray((ulong[])array); } } else { switch (Size) { case ESizeInBytes._1byte: return writer.WriteFixedArray((sbyte[])array); case ESizeInBytes._2byte: return writer.WriteFixedArray((short[])array); case ESizeInBytes._4byte: return writer.WriteFixedArray((int[])array); case ESizeInBytes._8byte: return writer.WriteFixedArray((long[])array); } } } throw new KSoft.Debug.UnreachableException(this.ToString()); case EType.Float: { switch (Size) { case ESizeInBytes._4byte: return writer.WriteFixedArray((float[])array); case ESizeInBytes._8byte: return writer.WriteFixedArray((double[])array); } } throw new KSoft.Debug.UnreachableException(this.ToString()); case EType.String: throw new KSoft.Debug.UnreachableException(this.ToString()); default: throw new KSoft.Debug.UnreachableException(this.ToString()); } }