Пример #1
0
 public override void VisitRefArgument <TExpression>(IRefArgument <TExpression> refArgument)
 {
     Value = new Argument()
     {
         RefArgument = new RefArgumentFactory(refArgument).Value
     };
 }
 public static void VisitRefArgumentChildren<TExpression>(
     IRefArgument<TExpression> refArgument,
     IGenericExpressionVisitor visitor)
     where TExpression : IExpression
 {
     VisitIfNotNull(refArgument.Expression, visitor);
 }
 public override void Visit(IRefArgument refArgument)
 {
     if (Process(refArgument))
     {
         visitor.Visit(refArgument);
     }
     base.Visit(refArgument);
 }
Пример #4
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="refArgument"></param>
 public RefArgument(IRefArgument refArgument)
     : base(refArgument)
 {
     this.expression = refArgument.Expression;
 }
Пример #5
0
 public virtual void onASTElement(IRefArgument refArgument) { }
Пример #6
0
 public void Visit(IRefArgument refArgument)
 {
     this.traverser.Traverse(refArgument);
 }
Пример #7
0
 public void Visit(IRefArgument refArgument)
 {
     Contract.Requires(refArgument != null);
       throw new NotImplementedException();
 }
 public override void Visit(IRefArgument refArgument)
 {
     if(Process(refArgument)){visitor.Visit(refArgument);}
     base.Visit(refArgument);
 }
Пример #9
0
 /// <summary>
 /// Traverses the ref argument expression.
 /// </summary>
 public void Traverse(IRefArgument refArgument)
 {
     Contract.Requires(refArgument != null);
       if (this.preorderVisitor != null) this.preorderVisitor.Visit(refArgument);
       if (this.StopTraversal) return;
       this.TraverseChildren(refArgument);
       if (this.StopTraversal) return;
       if (this.postorderVisitor != null) this.postorderVisitor.Visit(refArgument);
 }
Пример #10
0
 public override void TraverseChildren(IRefArgument refArgument) {
   base.TraverseChildren(refArgument);
   ((RefArgument)refArgument).Type = refArgument.Expression.Type;
 }
Пример #11
0
 public void Visit(IRefArgument refArgument)
 {
     this.result = this.copier.Copy(refArgument);
 }
Пример #12
0
 public override void Visit(IRefArgument refArgument)
 {
     allElements.Add(new InvokInfo(Traverser, "IRefArgument", refArgument));
 }
 /// <summary>
 /// Rewrites the given ref argument expression.
 /// </summary>
 /// <param name="refArgument"></param>
 public virtual IExpression Rewrite(IRefArgument refArgument)
 {
     return refArgument;
 }
Пример #14
0
 public override void TraverseChildren(IRefArgument refArgument)
 {
     base.TraverseChildren(refArgument);
     ((RefArgument)refArgument).Type = refArgument.Expression.Type;
 }
Пример #15
0
 /// <summary>
 /// Rewrites the given ref argument expression.
 /// </summary>
 /// <param name="refArgument"></param>
 public virtual IExpression Rewrite(IRefArgument refArgument)
 {
     var mutableRefArgument = refArgument as RefArgument;
       if (mutableRefArgument == null) return refArgument;
       this.RewriteChildren(mutableRefArgument);
       return mutableRefArgument;
 }
Пример #16
0
 /// <summary>
 /// Generates IL for the specified ref argument.
 /// </summary>
 /// <param name="refArgument">The ref argument.</param>
 public override void TraverseChildren(IRefArgument refArgument)
 {
     this.LoadAddressOf(refArgument.Expression, null);
 }
Пример #17
0
 /// <summary>
 /// Visits the specified ref argument.
 /// </summary>
 /// <param name="refArgument">The ref argument.</param>
 public override void Visit(IRefArgument refArgument)
 {
     RefArgument mutableRefArgument = refArgument as RefArgument;
     if (alwaysMakeACopy || mutableRefArgument == null) mutableRefArgument = new RefArgument(refArgument);
     this.resultExpression = this.myCodeMutator.Visit(mutableRefArgument);
 }
Пример #18
0
 public virtual void onASTElement(IRefArgument refArgument)
 {
 }
Пример #19
0
 /// <summary>
 /// Returns a shallow copy of the given ref argument expression.
 /// </summary>
 /// <param name="refArgument"></param>
 public RefArgument Copy(IRefArgument refArgument)
 {
     return new RefArgument(refArgument);
 }
Пример #20
0
 //^ ensures this.path.Count == old(this.path.Count);
 /// <summary>
 /// Traverses the given ref argument expression.
 /// </summary>
 /// <param name="refArgument"></param>
 public virtual void Visit(IRefArgument refArgument)
 {
     if (this.stopTraversal) return;
       //^ int oldCount = this.path.Count;
       this.path.Push(refArgument);
       this.Visit(refArgument.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();
 }
Пример #21
0
    /// <summary>
    /// Returns a shallow copy of the given ref argument expression.
    /// </summary>
    /// <param name="refArgument"></param>
    public RefArgument Copy(IRefArgument refArgument) {
      Contract.Requires(refArgument != null);
      Contract.Ensures(Contract.Result<RefArgument>() != null);

      return new RefArgument(refArgument);
    }
Пример #22
0
 public void Visit(IRefArgument refArgument)
 {
     this.result = this.rewriter.Rewrite(refArgument);
 }
Пример #23
0
        public override void TraverseChildren(IRefArgument refArgument)
{ MethodEnter(refArgument);
            base.TraverseChildren(refArgument);
     MethodExit();   }
Пример #24
0
    /// <summary>
    /// Returns a deep copy of the given ref argument expression.
    /// </summary>
    /// <param name="refArgument"></param>
    public RefArgument Copy(IRefArgument refArgument) {
      Contract.Requires(refArgument != null);
      Contract.Ensures(Contract.Result<RefArgument>() != null);

      var mutableCopy = this.shallowCopier.Copy(refArgument);
      this.CopyChildren((Expression)mutableCopy);
      mutableCopy.Expression = this.Copy(mutableCopy.Expression);
      return mutableCopy;
    }
Пример #25
0
 /// <summary>
 /// Performs some computation with the given ref argument expression.
 /// </summary>
 /// <param name="refArgument"></param>
 public virtual void Visit(IRefArgument refArgument)
 {
 }
 public virtual void VisitRefArgument <TExpression>(IRefArgument <TExpression> refArgument)
     where TExpression : IExpression
 {
     Visit(refArgument.Expression);
 }
Пример #27
0
 /// <summary>
 /// Traverses the children of the ref argument expression.
 /// </summary>
 public virtual void TraverseChildren(IRefArgument refArgument)
 {
     Contract.Requires(refArgument != null);
       this.TraverseChildren((IExpression)refArgument);
       if (this.StopTraversal) return;
       this.Traverse(refArgument.Expression);
 }
 public override void VisitRefArgument <TExpression>(IRefArgument <TExpression> refArgument)
 {
     Steps.Add(new WriteMethodParameterModifier(ParameterModifier.Ref));
     Steps.Add(new WriteWhitespace());
     Steps.Add(new WriteExpression <TExpression>(refArgument.Expression));
 }
Пример #29
0
 /// <summary>
 /// Performs some computation with the given ref argument expression.
 /// </summary>
 /// <param name="refArgument"></param>
 public virtual void Visit(IRefArgument refArgument)
 {
     this.Visit((IExpression)refArgument);
 }
 /// <summary>
 /// Performs some computation with the given ref argument expression.
 /// </summary>
 /// <param name="refArgument"></param>
 public virtual void Visit(IRefArgument refArgument)
 {
 }
Пример #31
0
 public void Visit(IRefArgument refArgument)
 {
     throw new NotImplementedException();
 }
Пример #32
0
 /// <summary>
 /// Visits the specified ref argument.
 /// </summary>
 /// <param name="refArgument">The ref argument.</param>
 public override void Visit(IRefArgument refArgument)
 {
     RefArgument mutableRefArgument = new RefArgument(refArgument);
     this.resultExpression = this.myCodeCopier.DeepCopy(mutableRefArgument);
 }
 public override void TraverseChildren(IRefArgument refArgument) {
   base.TraverseChildren(refArgument);
 }
Пример #34
0
 /// <summary>
 /// Returns a deep copy of the given ref argument expression.
 /// </summary>
 /// <param name="refArgument"></param>
 public RefArgument Copy(IRefArgument refArgument)
 {
     var mutableCopy = this.shallowCopier.Copy(refArgument);
       this.CopyChildren((Expression)mutableCopy);
       mutableCopy.Expression = this.Copy(mutableCopy.Expression);
       return mutableCopy;
 }
Пример #35
0
 public override void TraverseChildren(IRefArgument refArgument)
 {
     MethodEnter(refArgument);
     base.TraverseChildren(refArgument);
     MethodExit();
 }
Пример #36
0
 /// <summary>
 /// Visits the specified ref argument.
 /// </summary>
 /// <param name="refArgument">The ref argument.</param>
 public override void Visit(IRefArgument refArgument)
 {
     RefArgument mutableRefArgument = refArgument as RefArgument;
     if (mutableRefArgument == null) {
       this.resultExpression = refArgument;
       return;
     }
     this.resultExpression = this.myCodeMutator.Visit(mutableRefArgument);
 }