public static new ArrayMarshalDescriptor FromReader(IBinaryStreamReader reader) { var descriptor = new ArrayMarshalDescriptor((NativeType) reader.ReadByte()); uint value; if (!reader.TryReadCompressedUInt32(out value)) return descriptor; descriptor.ParameterIndex = (int)value; if (!reader.TryReadCompressedUInt32(out value)) return descriptor; descriptor.NumberOfElements = (int)value; return descriptor; }
public bool Equals(ArrayMarshalDescriptor x, ArrayMarshalDescriptor y) { if (x == null && y == null) { return(true); } if (x == null || y == null) { return(false); } return(x.ElementType == y.ElementType && x.NumberOfElements.Equals(y.NumberOfElements) && x.ParameterIndex.Equals(y.ParameterIndex)); }
public new static ArrayMarshalDescriptor FromReader(IBinaryStreamReader reader) { var descriptor = new ArrayMarshalDescriptor((NativeType)reader.ReadByte()); uint value; if (!reader.TryReadCompressedUInt32(out value)) { return(descriptor); } descriptor.ParameterIndex = (int)value; if (!reader.TryReadCompressedUInt32(out value)) { return(descriptor); } descriptor.NumberOfElements = (int)value; return(descriptor); }
public void CreateArrayMarshalDescriptor() { var assembly = Utilities.CreateTempNetAssembly(); var descriptor = new ArrayMarshalDescriptor(NativeType.U4) { NumberOfElements = 5, ParameterIndex = 1, }; var newDescriptor = BuildAppWithDescriptor(assembly, new SzArrayTypeSignature(assembly.NetDirectory.MetadataHeader.TypeSystem.Int32), descriptor, false); Assert.AreEqual(descriptor.ElementType, newDescriptor.ElementType); Assert.AreEqual(descriptor.NumberOfElements, newDescriptor.NumberOfElements); Assert.AreEqual(descriptor.ParameterIndex, newDescriptor.ParameterIndex); }
public static MarshalDescriptor FromReader(IBinaryStreamReader reader) { var type = (NativeType)reader.ReadByte(); switch (type) { case NativeType.Array: return(ArrayMarshalDescriptor.FromReader(reader)); case NativeType.FixedArray: return(FixedArrayMarshalDescriptor.FromReader(reader)); case NativeType.SafeArray: return(SafeArrayMarshalDescriptor.FromReader(reader)); case NativeType.CustomMarshaler: return(CustomMarshalDescriptor.FromReader(reader)); default: return(new SimpleMarshalDescriptor(type)); } }