Ejemplo n.º 1
0
		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());
			}
		}