public static ArrayType ExtractType(Cci.IArrayTypeReference typeref) { var elements = TypesExtractor.ExtractType(typeref.ElementType); var type = new ArrayType(elements); return(type); }
public MetadataCreateArray( Cci.IArrayTypeReference arrayType, Cci.ITypeReference elementType, ImmutableArray <Cci.IMetadataExpression> initializers ) { ArrayType = arrayType; ElementType = elementType; Elements = initializers; }
/// <summary> /// lazily fetches or creates a new array method. /// </summary> private ArrayMethod GetArrayMethod(Cci.IArrayTypeReference arrayType, ArrayMethodKind id) { var key = ValueTuple.Create((byte)id, arrayType); ArrayMethod result; var dict = this.dict; if (!dict.TryGetValue(key, out result)) { result = MakeArrayMethod(arrayType, id); result = dict.GetOrAdd(key, result); } return(result); }
private static ArrayMethod MakeArrayMethod(Cci.IArrayTypeReference arrayType, ArrayMethodKind id) { switch (id) { case ArrayMethodKind.CTOR: return(new ArrayConstructor(arrayType)); case ArrayMethodKind.GET: return(new ArrayGet(arrayType)); case ArrayMethodKind.SET: return(new ArraySet(arrayType)); case ArrayMethodKind.ADDRESS: return(new ArrayAddress(arrayType)); } throw ExceptionUtilities.UnexpectedValue(id); }
protected ArrayMethod(Cci.IArrayTypeReference arrayType) { this.arrayType = arrayType; this.parameters = MakeParameters(); }
internal ArraySetValueParameterInfo(ushort index, Cci.IArrayTypeReference arrayType) : base(index) { this.arrayType = arrayType; }
public MetadataCreateArray(Cci.IArrayTypeReference arrayType, Cci.ITypeReference elementType, ImmutableArray<Cci.IMetadataExpression> initializers) { _arrayType = arrayType; _elementType = elementType; _initializers = initializers; }
/// <summary> /// Acquires an element referencer method for a given array type /// </summary> public ArrayMethod GetArrayAddress(Cci.IArrayTypeReference arrayType) { return(GetArrayMethod(arrayType, ArrayMethodKind.ADDRESS)); }
/// <summary> /// Acquires an element setter method for a given array type /// </summary> public ArrayMethod GetArraySet(Cci.IArrayTypeReference arrayType) { return(GetArrayMethod(arrayType, ArrayMethodKind.SET)); }
/// <summary> /// Acquires an array constructor for a given array type /// </summary> public ArrayMethod GetArrayConstructor(Cci.IArrayTypeReference arrayType) { return(GetArrayMethod(arrayType, ArrayMethodKind.CTOR)); }
protected ArrayMethod(Cci.IArrayTypeReference arrayType) { this.arrayType = arrayType; this.parameters = MakeParameters(); }
internal ArraySetValueParameterInfo(ushort index, Cci.IArrayTypeReference arrayType) : base(index) { this.arrayType = arrayType; }
public ArraySet(Cci.IArrayTypeReference arrayType) : base(arrayType) { }
public ArrayAddress(Cci.IArrayTypeReference arrayType) : base(arrayType) { }
public ArrayConstructor(Cci.IArrayTypeReference arrayType) : base(arrayType) { }