public static ArrayType ExtractType(Cci.IArrayTypeReference typeref)
        {
            var elements = TypesExtractor.ExtractType(typeref.ElementType);
            var type     = new ArrayType(elements);

            return(type);
        }
Esempio n. 2
0
 public MetadataCreateArray(
     Cci.IArrayTypeReference arrayType,
     Cci.ITypeReference elementType,
     ImmutableArray <Cci.IMetadataExpression> initializers
     )
 {
     ArrayType   = arrayType;
     ElementType = elementType;
     Elements    = initializers;
 }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 protected ArrayMethod(Cci.IArrayTypeReference arrayType)
 {
     this.arrayType = arrayType;
     this.parameters = MakeParameters();
 }
Esempio n. 6
0
 internal ArraySetValueParameterInfo(ushort index, Cci.IArrayTypeReference arrayType)
     : base(index)
 {
     this.arrayType = arrayType;
 }
Esempio n. 7
0
 public MetadataCreateArray(Cci.IArrayTypeReference arrayType, Cci.ITypeReference elementType, ImmutableArray<Cci.IMetadataExpression> initializers)
 {
     _arrayType = arrayType;
     _elementType = elementType;
     _initializers = initializers;
 }
Esempio n. 8
0
 /// <summary>
 /// Acquires an element referencer method for a given array type
 /// </summary>
 public ArrayMethod GetArrayAddress(Cci.IArrayTypeReference arrayType)
 {
     return(GetArrayMethod(arrayType, ArrayMethodKind.ADDRESS));
 }
Esempio n. 9
0
 /// <summary>
 /// Acquires an element setter method for a given array type
 /// </summary>
 public ArrayMethod GetArraySet(Cci.IArrayTypeReference arrayType)
 {
     return(GetArrayMethod(arrayType, ArrayMethodKind.SET));
 }
Esempio n. 10
0
 /// <summary>
 /// Acquires an array constructor for a given array type
 /// </summary>
 public ArrayMethod GetArrayConstructor(Cci.IArrayTypeReference arrayType)
 {
     return(GetArrayMethod(arrayType, ArrayMethodKind.CTOR));
 }
Esempio n. 11
0
 protected ArrayMethod(Cci.IArrayTypeReference arrayType)
 {
     this.arrayType  = arrayType;
     this.parameters = MakeParameters();
 }
Esempio n. 12
0
 internal ArraySetValueParameterInfo(ushort index, Cci.IArrayTypeReference arrayType)
     : base(index)
 {
     this.arrayType = arrayType;
 }
Esempio n. 13
0
 public ArraySet(Cci.IArrayTypeReference arrayType) : base(arrayType)
 {
 }
Esempio n. 14
0
 public ArrayAddress(Cci.IArrayTypeReference arrayType) : base(arrayType)
 {
 }
Esempio n. 15
0
 public ArrayConstructor(Cci.IArrayTypeReference arrayType) : base(arrayType)
 {
 }