ilcclib.Converter.CIL.CILConverter.ArrayAccessExpression C# (CSharp) Method

ArrayAccessExpression() private method

private ArrayAccessExpression ( CParser ArrayAccessExpression ) : void
ArrayAccessExpression CParser
return void
        public void ArrayAccessExpression(CParser.ArrayAccessExpression ArrayAccessExpression)
        {
            var LeftExpression = ArrayAccessExpression.Left;
            var LeftCType = (LeftExpression.GetCachedCType(this) as CBasePointerType);
            var LeftType = ConvertCTypeToType(LeftCType);
            var ElementCType = LeftCType.ElementCType;
            var ElementType = ConvertCTypeToType(ElementCType);
            var IndexExpression = ArrayAccessExpression.Index;

            DoGenerateAddress(false, () =>
            {
                Traverse(LeftExpression);
            });
            DoGenerateAddress(false, () =>
            {
                Traverse(new CParser.BinaryExpression(IndexExpression, "*", new CParser.SizeofTypeExpression(ElementCType)));
                //Traverse(IndexExpression);
            });

            //SafeILGenerator.Sizeof(ElementType);
            //SafeILGenerator.BinaryOperation(SafeBinaryOperator.MultiplySigned);

            SafeILGenerator.BinaryOperation(SafeBinaryOperator.AdditionSigned);

            // For fixed array types, get always the address?
            if (ElementCType is CArrayType && (ElementCType as CArrayType).Size != 0)
            {
            }
            else if (!GenerateAddress)
            {
                SafeILGenerator.LoadIndirect(ConvertCTypeToType(ElementCType));
            }
        }