public ArrayType(TypeReference typeRef, int rank, ArrayDimension[] dimensions) : base(typeRef) { // System.Diagnostics.Debugger.Break(); this.name = typeRef.name; if (rank == 0) this.name += "[]"; else for (int i = 0; i < rank; i++) this.name = this.name + dimensions[i].ToString(); Rank = rank; Dimensions = dimensions; }
public ArrayType ReadArrayType() { TypeReference arrayType = ReadTypeReference((ElementType)this.ReadByte()); uint rank = NETGlobals.ReadCompressedUInt32(this); uint[] upperbounds = new uint[NETGlobals.ReadCompressedUInt32(this)]; for (int i = 0; i < upperbounds.Length; i++) upperbounds[i] = NETGlobals.ReadCompressedUInt32(this); int[] lowerbounds = new int[NETGlobals.ReadCompressedUInt32(this)]; for (int i = 0; i < lowerbounds.Length; i++) lowerbounds[i] = NETGlobals.ReadCompressedInt32(this); ArrayDimension[] dimensions = new ArrayDimension[rank]; for (int i = 0; i < rank; i++) { int? lower = null; int? upper = null; if (i < lowerbounds.Length) lower = new int?(lowerbounds[i]); if (i < upperbounds.Length) { int x = (int)upperbounds[i]; upper = (lower.HasValue ? new int?(lower.GetValueOrDefault() + x) : 0) - 1; } ArrayDimension dimension = new ArrayDimension(lower, upper); dimensions[i] = dimension; } return new ArrayType(arrayType, (int)rank, dimensions); }
private ArrayType ReadArrayType(BinaryReader reader) { TypeReference arrayType = ReadTypeReference(reader,(ElementType)reader.ReadByte(), provider); uint rank = ReadCompressedUInt32(reader); uint[] upperbounds = new uint[ReadCompressedUInt32(reader)]; for (int i = 0; i < upperbounds.Length; i++) upperbounds[i] = ReadCompressedUInt32(reader); int[] lowerbounds = new int[ReadCompressedUInt32(reader)]; for (int i = 0; i < lowerbounds.Length; i++) lowerbounds[i] = ReadCompressedInt32(reader); ArrayDimension[] dimensions = new ArrayDimension[rank]; for (int i = 0; i < rank; i++) { int? lower = null; int? upper = null; if (i < lowerbounds.Length) lower = new int?(lowerbounds[i]); if (i < upperbounds.Length) { int x = (int)upperbounds[i]; upper = (lower.HasValue ? new int?(lower.GetValueOrDefault() + x) : 0) - 1; } ArrayDimension dimension = new ArrayDimension(lower,upper); dimensions[i] = dimension; } return new ArrayType(arrayType, (int)rank, dimensions); }
public ArrayType(TypeReference typeRef, int rank, ArrayDimension[] dimensions) : base(typeRef) { Rank = rank; Dimensions = dimensions; }