Пример #1
0
        public static ArrayType ExtractType(Cci.IArrayTypeReference typeref)
        {
            var elements = TypesExtractor.ExtractType(typeref.ElementType);
            var type     = new ArrayType(elements);

            return(type);
        }
Пример #2
0
 public MetadataCreateArray(
     Cci.IArrayTypeReference arrayType,
     Cci.ITypeReference elementType,
     ImmutableArray <Cci.IMetadataExpression> initializers
     )
 {
     ArrayType   = arrayType;
     ElementType = elementType;
     Elements    = initializers;
 }
Пример #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);
        }
Пример #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);
        }
Пример #5
0
 protected ArrayMethod(Cci.IArrayTypeReference arrayType)
 {
     this.arrayType = arrayType;
     this.parameters = MakeParameters();
 }
Пример #6
0
 internal ArraySetValueParameterInfo(ushort index, Cci.IArrayTypeReference arrayType)
     : base(index)
 {
     this.arrayType = arrayType;
 }
Пример #7
0
 public MetadataCreateArray(Cci.IArrayTypeReference arrayType, Cci.ITypeReference elementType, ImmutableArray<Cci.IMetadataExpression> initializers)
 {
     _arrayType = arrayType;
     _elementType = elementType;
     _initializers = initializers;
 }
Пример #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));
 }
Пример #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));
 }
Пример #10
0
 /// <summary>
 /// Acquires an array constructor for a given array type
 /// </summary>
 public ArrayMethod GetArrayConstructor(Cci.IArrayTypeReference arrayType)
 {
     return(GetArrayMethod(arrayType, ArrayMethodKind.CTOR));
 }
Пример #11
0
 protected ArrayMethod(Cci.IArrayTypeReference arrayType)
 {
     this.arrayType  = arrayType;
     this.parameters = MakeParameters();
 }
Пример #12
0
 internal ArraySetValueParameterInfo(ushort index, Cci.IArrayTypeReference arrayType)
     : base(index)
 {
     this.arrayType = arrayType;
 }
Пример #13
0
 public ArraySet(Cci.IArrayTypeReference arrayType) : base(arrayType)
 {
 }
Пример #14
0
 public ArrayAddress(Cci.IArrayTypeReference arrayType) : base(arrayType)
 {
 }
Пример #15
0
 public ArrayConstructor(Cci.IArrayTypeReference arrayType) : base(arrayType)
 {
 }