示例#1
0
        public IType MakeArray(IType type, ArrayDimensionCollection dim)
        {
            if (dim == null)
            {
                dim = ArrayDimensionCollection.Single;
            }

            var    dimensionString = dim.ToString();
            string key             = BuildKey(type, dimensionString);

            return(Make(key, () => new ArrayType(type, dim)));
        }
示例#2
0
        public static string Format(ArrayDimensionCollection dims, bool sig)
        {
            var sb = new StringBuilder();
            int n  = dims.Count;

            if (sig)
            {
                if (n == 0)
                {
                    return("_array");
                }
                sb.Append("_" + n + "D_array");
                if (!AllDefaults(dims))
                {
                    for (int i = 0; i < n; ++i)
                    {
                        if (i > 0)
                        {
                            sb.Append('_');
                        }
                        var d = dims[i];
                        sb.Append(ArrayDimension.Format(d.LowerBound, d.UpperBound, true));
                    }
                }
            }
            else
            {
                sb.Append('[');
                for (int i = 0; i < n; ++i)
                {
                    if (i > 0)
                    {
                        sb.Append(',');
                    }
                    var d = dims[i];
                    sb.Append(ArrayDimension.Format(d.LowerBound, d.UpperBound, false));
                }
                sb.Append(']');
            }
            return(sb.ToString());
        }
示例#3
0
 public ArrayType(IType elementType, ArrayDimensionCollection dim) : base(elementType)
 {
     _arrayDimensions = dim;
 }
示例#4
0
 public ArrayType(IType elementType) : base(elementType)
 {
     _arrayDimensions = ArrayDimensionCollection.Single;
 }