public bool VisitArray(ArrayType_v1 aX)
        {
            var aY = ((ArrayType_v1)y !);

            if (aX.Length != aY.Length)
            {
                return(false);
            }
            y = aY.ElementType;
            return(aX.ElementType !.Accept(this));
        }
Example #2
0
        public SerializedType VisitArrayType(Core.Pascal.Array array)
        {
            var dt = array.ElementType.Accept(this);

            foreach (var dim in array.Dimensions)
            {
                var      loId = dim.Low as Id;
                DataType dtLo;
                if (loId != null && typelib.Types.TryGetValue(loId.Name, out dtLo))
                {
                    var et = dtLo as Core.Types.EnumType;
                    if (et != null)
                    {
                        dt = new ArrayType_v1
                        {
                            ElementType = dt,
                            Length      = et.Members.Count,
                        };
                        continue;
                    }
                }
                var lo = dim.Low.Accept(ceval);
                if (dim.High != null)
                {
                    // Range a..b size is (b-a)+1
                    var hi = dim.High.Accept(ceval);
                    dt = new ArrayType_v1
                    {
                        ElementType = dt,
                        Length      =
                            (int)(hi.ToInt64() - lo.ToInt64()) + 1
                    };
                }
                else
                {
                    dt = new ArrayType_v1 {
                        ElementType = dt, Length = (int)lo.ToInt64()
                    };
                }
            }
            return(dt);
        }
Example #3
0
 public StringBuilder VisitArray(ArrayType_v1 array)
 {
     throw new NotImplementedException();
 }
        public DataType VisitArray(ArrayType_v1 array)
        {
            var dt = array.ElementType.Accept(this);

            return(new ArrayType(dt, array.Length));
        }
Example #5
0
 public DataType VisitArray(ArrayType_v1 array)
 {
     throw new NotImplementedException();
 }
Example #6
0
 public int VisitArray(ArrayType_v1 array)
 {
     return(Align(array.ElementType !.Accept(this)) * array.Length);
 }