public override void VisitOutArgument <TExpression>(IOutArgument <TExpression> outArgument)
 {
     Value = new Argument()
     {
         OutArgument = new OutArgumentFactory(outArgument).Value
     };
 }
 public static void VisitOutArgumentChildren<TExpression>(
     IOutArgument<TExpression> outArgument,
     IGenericExpressionVisitor visitor)
     where TExpression : IExpression
 {
     VisitIfNotNull(outArgument.Expression, visitor);
 }
 public override void Visit(IOutArgument outArgument)
 {
     if (Process(outArgument))
     {
         visitor.Visit(outArgument);
     }
     base.Visit(outArgument);
 }
Beispiel #4
0
 /// <summary>
 /// Returns a shallow copy of the given out argument expression.
 /// </summary>
 /// <param name="outArgument"></param>
 public OutArgument Copy(IOutArgument outArgument)
 {
     return new OutArgument(outArgument);
 }
 public virtual void onASTElement(IOutArgument outArgument) { }
Beispiel #6
0
 /// <summary>
 /// Rewrites the given out argument expression.
 /// </summary>
 /// <param name="outArgument"></param>
 public virtual IExpression Rewrite(IOutArgument outArgument)
 {
     var mutableOutArgument = outArgument as OutArgument;
       if (mutableOutArgument == null) return outArgument;
       this.RewriteChildren(mutableOutArgument);
       return mutableOutArgument;
 }
Beispiel #7
0
 public void Visit(IOutArgument outArgument)
 {
     Contract.Requires(outArgument != null);
       throw new NotImplementedException();
 }
Beispiel #8
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="outArgument"></param>
 public OutArgument(IOutArgument outArgument)
     : base(outArgument)
 {
     this.expression = outArgument.Expression;
 }
Beispiel #9
0
 /// <summary>
 /// Generates IL for the specified out argument.
 /// </summary>
 /// <param name="outArgument">The out argument.</param>
 public override void TraverseChildren(IOutArgument outArgument)
 {
     this.LoadAddressOf(outArgument.Expression, null);
 }
Beispiel #10
0
 public void Visit(IOutArgument outArgument)
 {
     this.traverser.Traverse(outArgument);
 }
Beispiel #11
0
 public virtual void onASTElement(IOutArgument outArgument)
 {
 }
Beispiel #12
0
 //^ ensures this.path.Count == old(this.path.Count);
 /// <summary>
 /// Traverses the given out argument expression.
 /// </summary>
 /// <param name="outArgument"></param>
 public virtual void Visit(IOutArgument outArgument)
 {
     if (this.stopTraversal) return;
       //^ int oldCount = this.path.Count;
       this.path.Push(outArgument);
       this.Visit(outArgument.Expression);
       //^ assume this.path.Count == oldCount+1; //True because all of the virtual methods of this class promise not to decrease this.path.Count.
       this.path.Pop();
 }
 /// <summary>
 /// Rewrites the given out argument expression.
 /// </summary>
 /// <param name="outArgument"></param>
 public virtual IExpression Rewrite(IOutArgument outArgument)
 {
     return outArgument;
 }
 public override void TraverseChildren(IOutArgument outArgument) {
   base.TraverseChildren(outArgument);
   ((OutArgument)outArgument).Type = outArgument.Type;
 }
Beispiel #15
0
 public override void Visit(IOutArgument outArgument)
 {
     allElements.Add(new InvokInfo(Traverser, "IOutArgument", outArgument));
 }
Beispiel #16
0
 public override void TraverseChildren(IOutArgument outArgument)
 {
     base.TraverseChildren(outArgument);
     ((OutArgument)outArgument).Type = outArgument.Type;
 }
Beispiel #17
0
 public void Visit(IOutArgument outArgument)
 {
     this.result = this.rewriter.Rewrite(outArgument);
 }
Beispiel #18
0
 public void Visit(IOutArgument outArgument)
 {
     this.result = this.copier.Copy(outArgument);
 }
Beispiel #19
0
 /// <summary>
 /// Traverses the out argument expression.
 /// </summary>
 public void Traverse(IOutArgument outArgument)
 {
     Contract.Requires(outArgument != null);
       if (this.preorderVisitor != null) this.preorderVisitor.Visit(outArgument);
       if (this.StopTraversal) return;
       this.TraverseChildren(outArgument);
       if (this.StopTraversal) return;
       if (this.postorderVisitor != null) this.postorderVisitor.Visit(outArgument);
 }
Beispiel #20
0
    /// <summary>
    /// Returns a shallow copy of the given out argument expression.
    /// </summary>
    /// <param name="outArgument"></param>
    public OutArgument Copy(IOutArgument outArgument) {
      Contract.Requires(outArgument != null);
      Contract.Ensures(Contract.Result<OutArgument>() != null);

      return new OutArgument(outArgument);
    }
 public override void Visit(IOutArgument outArgument)
 {
     if(Process(outArgument)){visitor.Visit(outArgument);}
     base.Visit(outArgument);
 }
        public override void TraverseChildren(IOutArgument outArgument)
{ MethodEnter(outArgument);
            base.TraverseChildren(outArgument);
     MethodExit();   }
Beispiel #23
0
    /// <summary>
    /// Returns a deep copy of the given out argument expression.
    /// </summary>
    /// <param name="outArgument"></param>
    public OutArgument Copy(IOutArgument outArgument) {
      Contract.Requires(outArgument != null);
      Contract.Ensures(Contract.Result<OutArgument>() != null);

      var mutableCopy = this.shallowCopier.Copy(outArgument);
      this.CopyChildren((Expression)mutableCopy);
      mutableCopy.Expression = this.Copy(mutableCopy.Expression);
      return mutableCopy;
    }
Beispiel #24
0
 /// <summary>
 /// Performs some computation with the given out argument expression.
 /// </summary>
 /// <param name="outArgument"></param>
 public virtual void Visit(IOutArgument outArgument)
 {
 }
 public virtual void VisitOutArgument <TExpression>(IOutArgument <TExpression> outArgument)
     where TExpression : IExpression
 {
     Visit(outArgument);
 }
Beispiel #26
0
 /// <summary>
 /// Traverses the children of the out argument expression.
 /// </summary>
 public virtual void TraverseChildren(IOutArgument outArgument)
 {
     Contract.Requires(outArgument != null);
       this.TraverseChildren((IExpression)outArgument);
       if (this.StopTraversal) return;
       this.Traverse(outArgument.Expression);
 }
 public override void VisitOutArgument <TExpression>(IOutArgument <TExpression> outArgument)
 {
     Steps.Add(new WriteMethodParameterModifier(ParameterModifier.Out));
     Steps.Add(new WriteWhitespace());
     Steps.Add(new WriteExpression <TExpression>(outArgument.Expression));
 }
Beispiel #28
0
 /// <summary>
 /// Performs some computation with the given out argument expression.
 /// </summary>
 /// <param name="outArgument"></param>
 public virtual void Visit(IOutArgument outArgument)
 {
     this.Visit((IExpression)outArgument);
 }
 /// <summary>
 /// Performs some computation with the given out argument expression.
 /// </summary>
 /// <param name="outArgument"></param>
 public virtual void Visit(IOutArgument outArgument)
 {
 }
Beispiel #30
0
 public void Visit(IOutArgument outArgument)
 {
     throw new NotImplementedException();
 }
Beispiel #31
0
 /// <summary>
 /// Visits the specified out argument.
 /// </summary>
 /// <param name="outArgument">The out argument.</param>
 public override void Visit(IOutArgument outArgument)
 {
     OutArgument mutableOutArgument = new OutArgument(outArgument);
     this.resultExpression = this.myCodeCopier.DeepCopy(mutableOutArgument);
 }
 public override void TraverseChildren(IOutArgument outArgument) {
   base.TraverseChildren(outArgument);
 }
Beispiel #33
0
 /// <summary>
 /// Returns a deep copy of the given out argument expression.
 /// </summary>
 /// <param name="outArgument"></param>
 public OutArgument Copy(IOutArgument outArgument)
 {
     var mutableCopy = this.shallowCopier.Copy(outArgument);
       this.CopyChildren((Expression)mutableCopy);
       mutableCopy.Expression = this.Copy(mutableCopy.Expression);
       return mutableCopy;
 }
Beispiel #34
0
 public override void TraverseChildren(IOutArgument outArgument)
 {
     MethodEnter(outArgument);
     base.TraverseChildren(outArgument);
     MethodExit();
 }
Beispiel #35
0
 /// <summary>
 /// Visits the specified out argument.
 /// </summary>
 /// <param name="outArgument">The out argument.</param>
 public override void Visit(IOutArgument outArgument)
 {
     OutArgument mutableOutArgument = outArgument as OutArgument;
     if (alwaysMakeACopy || mutableOutArgument == null) mutableOutArgument = new OutArgument(outArgument);
     this.resultExpression = this.myCodeMutator.Visit(mutableOutArgument);
 }