Пример #1
0
 /// <summary>
 /// A copy constructor that allocates an instance that is the same as the given template, except for its containing block.
 /// </summary>
 /// <param name="containingBlock">The containing block of the copied precondition. This should be different from the containing block of the template precondition.</param>
 /// <param name="template">The statement to copy.</param>
 private LoopInvariant(BlockStatement containingBlock, LoopInvariant template)
     : base(containingBlock, template)
 {
 }
Пример #2
0
 /// <summary>
 /// Visits the specified loop invariant.
 /// </summary>
 /// <param name="loopInvariant">The loop invariant.</param>
 /// <returns></returns>
 protected virtual ILoopInvariant DeepCopy(LoopInvariant loopInvariant)
 {
     loopInvariant.Condition = this.Substitute(loopInvariant.Condition);
       if (loopInvariant.Description != null)
     loopInvariant.Description = this.Substitute(loopInvariant.Description);
       return loopInvariant;
 }
Пример #3
0
 /// <summary>
 /// Get the mutable copy of a loop invariant.
 /// </summary>
 /// <param name="loopInvariant"></param>
 /// <returns></returns>
 public virtual LoopInvariant GetMutableCopy(ILoopInvariant loopInvariant)
 {
     object cachedValue;
       if (this.cache.TryGetValue(loopInvariant, out cachedValue))
     return (LoopInvariant)cachedValue;
       var result = new LoopInvariant(loopInvariant);
       // Probably not necessary, no two loop invariants are shared.
       this.cache.Add(loopInvariant, result);
       this.cache.Add(result, result);
       return result;
 }
Пример #4
0
 /// <summary>
 /// Rewrites the children of the given loop invariant.
 /// </summary>
 public virtual void RewriteChildren(LoopInvariant loopInvariant)
 {
     this.RewriteChildren((ContractElement)loopInvariant);
 }
Пример #5
0
 /// <summary>
 /// Visits the specified loop invariant.
 /// </summary>
 /// <param name="loopInvariant">The loop invariant.</param>
 /// <returns></returns>
 public virtual ILoopInvariant Visit(LoopInvariant loopInvariant)
 {
     loopInvariant.Condition = this.Visit(loopInvariant.Condition);
       if (loopInvariant.Description != null)
     loopInvariant.Description = this.Visit(loopInvariant.Description);
       return loopInvariant;
 }
Пример #6
0
 /// <summary>
 /// Visits the specified loop invariant.
 /// </summary>
 /// <param name="loopInvariant">The loop invariant.</param>
 /// <returns></returns>
 public virtual ILoopInvariant Visit(ILoopInvariant loopInvariant)
 {
     LoopInvariant mutableLoopInvariant = loopInvariant as LoopInvariant;
       if (!this.copyOnlyIfNotAlreadyMutable || mutableLoopInvariant == null)
     mutableLoopInvariant = new LoopInvariant(loopInvariant);
       return this.Visit(mutableLoopInvariant);
 }