public virtual void VisitCastExpression <TTypeReference, TExpression>(
     ICastExpression <TTypeReference, TExpression> castExpression)
     where TTypeReference : ITypeReference
     where TExpression : IExpression
 {
     Visit(castExpression);
 }
    /// <summary>Handles the specified expression.</summary>
    /// <param name="castExpression">As expression.</param>
    /// <param name="scopeParameters">The parameters.</param>
    /// <returns>Returns the string.</returns>
    public ExpressionDescriptor Handle(ICastExpression castExpression, Dictionary<string, string> scopeParameters)
    {
      var operand = castExpression.Op;
      if (operand == null)
      {
        return null;
      }

      var type = castExpression.TargetType;
      if (type == null)
      {
        return null;
      }

      var expressionDescriptor = ExpressionTemplateBuilder.Handle(operand, scopeParameters);
      if (expressionDescriptor == null)
      {
        return null;
      }

      var result = new ExpressionDescriptor
      {
        Template = string.Format("({0}){1}", type.GetText(), expressionDescriptor.Template)
      };

      foreach (var variable in expressionDescriptor.TemplateVariables)
      {
        result.TemplateVariables[variable.Key] = variable.Value;
      }

      return result;
    }
예제 #3
0
 public override void VisitCastExpression <TTypeReference, TExpression>(
     ICastExpression <TTypeReference, TExpression> castExpression)
 {
     Value = new Expression()
     {
         CastExpression = new CastExpressionFactory(castExpression).Value
     };
 }
 public override void VisitCastExpression <TTypeReference, TExpression>(
     ICastExpression <TTypeReference, TExpression> castExpression)
 {
     Steps.Add(new WriteStartParenthesis());
     Steps.Add(new WriteChildNode <TTypeReference>(castExpression.Type));
     Steps.Add(new WriteEndParenthesis());
     Steps.Add(new WriteExpression <TExpression>(castExpression.Expression));
 }
 public static void VisitCastExpressionChildren<TTypeReference, TExpression>(
     ICastExpression<TTypeReference, TExpression> castExpression,
     IGenericExpressionVisitor visitor)
     where TTypeReference : ITypeReference
     where TExpression : IExpression
 {
     VisitIfNotNull(castExpression.Expression, visitor);
 }
예제 #6
0
 public override IExpression Visit(ICastExpression entity, int context)
 {
     return(new CastExpression
     {
         Reference = (IVariableReference)entity.Reference.Accept(_refAnon, context),
         Operator = entity.Operator,
         TargetType = entity.TargetType.ToAnonymousName()
     });
 }
예제 #7
0
 public EnumeratorStatement(IStatementBlock sourceBlock)
     : base(sourceBlock)
 {
     enumMember                = this.Statements.Locals.AddNew(this.Statements.Locals.GetUnusedName("__enumerator"), typeof(IEnumerator).GetTypeReference());
     enumMember.AutoDeclare    = false;
     currentMember             = this.Statements.Locals.AddNew(this.Statements.Locals.GetUnusedName("__current"), typeof(void).GetTypeReference());
     currentMember.AutoDeclare = true;
     currentMemberInit         = new CastExpression(enumMember.GetReference().GetProperty("Current"), itemType);
     currentMember.InitializationExpression = currentMemberInit;
 }
예제 #8
0
        public override bool Equals(object obj)
        {
            if (this == obj)
            {
                return(true);
            }

            ICastExpression expression = obj as ICastExpression;

            if (expression == null)
            {
                return(false);
            }

            return(this.Expression.Equals(expression.Expression) &&
                   this.TargetType.Equals(expression.TargetType));
        }
예제 #9
0
        private static void WriteCast(LanguageWriter w, ICastExpression exp)
        {
            TypeRef type  = new TypeRef(exp.TargetType);
            bool    paren = !type.IsFunctionPointer;

            if (paren)
            {
                w.Write("(");
            }
            type.WriteNameWithRef(w);
            if (paren)
            {
                w.Write(")");
            }

            WriteExpression(w, exp.Expression, PREC_CAST > GetExpressionPrecedence(exp.Expression));
        }
예제 #10
0
 public override void TranslateExpression(ICastExpression castExpression)
 {
     this.Provider.GenerateCodeFromExpression(castExpression.GenerateCodeDom(this.Options), base.Target, this.Options.Options);
 }
예제 #11
0
 public abstract void TranslateExpression(ICastExpression castExpression);
예제 #12
0
 public int Visit(ICastExpression expr, int context)
 {
     throw new NotImplementedException();
 }
예제 #13
0
 public override void VisitCastExpression(ICastExpression value)
 {
     VisitExpression(value.Expression);
 }
예제 #14
0
 public virtual void VisitCastExpression(ICastExpression value)
 {
     VisitType(value.TargetType);
     VisitExpression(value.Expression);
 }
 private void WriteCastExpression(ICastExpression expression, IFormatter formatter)
 {
     //formatter.Write("(");
     this.WriteExpression(expression.Expression, formatter);
     //formatter.Write(" ");
     //formatter.WriteKeyword("as");
     //formatter.Write(" ");
     //this.WriteType(expression.TargetType, formatter);
     //formatter.Write(")");
 }
예제 #16
0
 protected override IExpression ConvertCastExpr(ICastExpression ice)
 {
     return(CodeRecognizer.RemoveCast(base.ConvertCastExpr(ice)));
 }
예제 #17
0
 public void Visit(ICastExpression expr, SSTPrintingContext c)
 {
     c.Text("(").Type(expr.TargetType).Text(")").Space();
     expr.Reference.Accept(this, c);
 }
예제 #18
0
 public virtual void VisitCastExpression(ICastExpression value)
 {
     this.VisitType(value.TargetType);
     this.VisitExpression(value.Expression);
 }
예제 #19
0
            //===========================================================
            //		Expression 分岐
            //===========================================================
            public virtual void WriteExpression(IExpression expression)
            {
                if (expression == null)
                {
                    return;
                }

                mwg.Reflector.CppCli.ExpressionWriter.WriteExpression(this, expression, false);

#if FALSE
#pragma warning disable 612

                IMemberInitializerExpression expression3 = expression as IMemberInitializerExpression;
                if (expression3 != null)
                {
                    this.WriteMemberInitializerExpression(expression3);
                    return;
                }

                IAddressOutExpression expression27 = expression as IAddressOutExpression;
                if (expression27 != null)
                {
                    this.WriteAddressOutExpression(expression27);
                    return;
                }

                IAddressReferenceExpression expression26 = expression as IAddressReferenceExpression;
                if (expression26 != null)
                {
                    this.WriteAddressReferenceExpression(expression26);
                    return;
                }

                IDelegateCreateExpression iDelegateCreateExpression = expression as IDelegateCreateExpression;
                if (iDelegateCreateExpression != null)
                {
                    this.WriteDelegateCreateExpression(iDelegateCreateExpression);
                    return;
                }

                IMethodInvokeExpression iMethodInvokeExpression = expression as IMethodInvokeExpression;
                if (iMethodInvokeExpression != null)
                {
                    this.WriteMethodInvokeExpression(iMethodInvokeExpression);
                    return;
                }

                IVariableDeclarationExpression expression15 = expression as IVariableDeclarationExpression;
                if (expression15 != null)
                {
                    this.WriteVariableDeclaration(expression15.Variable);
                    return;
                }

                ITypeOfExpression iTypeOfExpression = expression as ITypeOfExpression;
                if (iTypeOfExpression != null)
                {
                    this.WriteTypeOfExpression(iTypeOfExpression);
                    return;
                }

                ISnippetExpression iSnippetExpression = expression as ISnippetExpression;
                if (iSnippetExpression != null)
                {
                    this.WriteSnippetExpression(iSnippetExpression);
                    return;
                }

                IUnaryExpression iUnaryExpression = expression as IUnaryExpression;
                if (iUnaryExpression != null)
                {
                    this.WriteUnaryExpression(iUnaryExpression);
                    return;
                }

                IObjectCreateExpression iObjectCreateExpression = expression as IObjectCreateExpression;
                if (iObjectCreateExpression != null)
                {
                    this.WriteObjectCreateExpression(iObjectCreateExpression);
                    return;
                }

                IVariableReferenceExpression iVariableReferenceExpression = expression as IVariableReferenceExpression;
                if (iVariableReferenceExpression != null)
                {
                    this.WriteVariableReferenceExpression(iVariableReferenceExpression);
                    return;
                }

                IThisReferenceExpression expression12 = expression as IThisReferenceExpression;
                if (expression12 != null)
                {
                    this.WriteThisReferenceExpression(expression12);
                    return;
                }

                ITryCastExpression iTryCastExpression = expression as ITryCastExpression;
                if (iTryCastExpression != null)
                {
                    this.WriteTryCastExpression(iTryCastExpression);
                    return;
                }

                IConditionExpression expression9 = expression as IConditionExpression;
                if (expression9 != null)
                {
                    this.WriteConditionExpression(expression9);
                    return;
                }

                IFieldReferenceExpression iFieldReferenceExpression = expression as IFieldReferenceExpression;
                if (iFieldReferenceExpression != null)
                {
                    this.WriteFieldReferenceExpression(iFieldReferenceExpression);
                    return;
                }

                IPropertyIndexerExpression iPropertyIndexerExpression = expression as IPropertyIndexerExpression;
                if (iPropertyIndexerExpression != null)
                {
                    this.WritePropertyIndexerExpression(iPropertyIndexerExpression);
                    return;
                }

                ITypeReferenceExpression iTypeReferenceExpression = expression as ITypeReferenceExpression;
                if (iTypeReferenceExpression != null)
                {
                    this.WriteTypeReferenceExpression(iTypeReferenceExpression);
                    return;
                }

                IMethodReferenceExpression iMethodReferenceExpression = expression as IMethodReferenceExpression;
                if (iMethodReferenceExpression != null)
                {
                    this.WriteMethodReferenceExpression(iMethodReferenceExpression);
                    return;
                }

                IPropertyReferenceExpression iPropertyReferenceExpression = expression as IPropertyReferenceExpression;
                if (iPropertyReferenceExpression != null)
                {
                    this.WritePropertyReferenceExpression(iPropertyReferenceExpression);
                    return;
                }

                ICastExpression expression5 = expression as ICastExpression;
                if (expression5 != null)
                {
                    this.WriteCastExpression(expression5);
                    return;
                }

                ICanCastExpression iCanCastExpression = expression as ICanCastExpression;
                if (iCanCastExpression != null)
                {
                    this.WriteCanCastExpression(iCanCastExpression);
                    return;
                }

                ICastExpression iCastExpression = expression as ICastExpression;
                if (iCastExpression != null)
                {
                    this.WriteCastExpression(iCastExpression);
                    return;
                }

                ILiteralExpression literalExpression = expression as ILiteralExpression;
                if (literalExpression != null)
                {
                    this.WriteLiteralExpression(literalExpression);
                    return;
                }

                IBinaryExpression iBinaryExpression = expression as IBinaryExpression;
                if (iBinaryExpression != null)
                {
                    mwg.Reflector.CppCli.ExpressionWriter.WriteExpression(this, expression, true);
                    //this.WriteBinaryExpression(iBinaryExpression);
                    return;
                }

                IArrayIndexerExpression expression30 = expression as IArrayIndexerExpression;
                if (expression30 != null)
                {
                    this.WriteArrayIndexerExpression(expression30);
                    return;
                }

                IAddressDereferenceExpression expression29 = expression as IAddressDereferenceExpression;
                if (expression29 != null)
                {
                    this.WriteAddressDereferenceExpression(expression29);
                    return;
                }

                IAddressOfExpression expression28 = expression as IAddressOfExpression;
                if (expression28 != null)
                {
                    this.WriteAddressOfExpression(expression28);
                    return;
                }

                IArgumentListExpression expression25 = expression as IArgumentListExpression;
                if (expression25 != null)
                {
                    this.WriteArgumentListExpression(expression25);
                    return;
                }

                IBaseReferenceExpression iBaseReferenceExpression = expression as IBaseReferenceExpression;
                if (iBaseReferenceExpression != null)
                {
                    this.WriteBaseReferenceExpression(iBaseReferenceExpression);
                    return;
                }

                IArgumentReferenceExpression expression13 = expression as IArgumentReferenceExpression;
                if (expression13 != null)
                {
                    this.WriteArgumentReferenceExpression(expression13);
                    return;
                }

                IArrayCreateExpression expression10 = expression as IArrayCreateExpression;
                if (expression10 != null)
                {
                    this.WriteArrayCreateExpression(expression10);
                    return;
                }

                IAssignExpression iAssignExpression = expression as IAssignExpression;
                if (iAssignExpression != null)
                {
                    this.WriteAssignExpression(iAssignExpression);
                    return;
                }

                IBlockExpression expression2 = expression as IBlockExpression;
                if (expression2 != null)
                {
                    this.WriteBlockExpression(expression2);
                    return;
                }
#pragma warning restore 612

                this.Write(expression.ToString());
#endif
            }
예제 #20
0
 public virtual void Visit(ICastExpression expr, TContext context)
 {
     expr.Reference.Accept(this, context);
 }
 public virtual IExpression TransformCastExpression(ICastExpression value)
 {
     value.Expression = this.TransformExpression(value.Expression);
     return value;
 }