Advertisement
Guest User

IEnumerable<T> & IEnumerator<T> Contract

a guest
Jan 5th, 2011
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.09 KB | None | 0 0
  1. [ContractClassFor(typeof(IEnumerable))]
  2. internal abstract class IEnumerableContract : IEnumerable
  3. {
  4.     // Methods
  5.     protected IEnumerableContract()
  6.     {
  7.     }
  8.  
  9.     [return: Fresh]
  10.     [Escapes(true, false), Pure, GlobalAccess(false)]
  11.     public IEnumerator GetEnumerator()
  12.     {
  13.         IEnumerator enumerator;
  14.         Contract.Ensures((bool)(Contract.Result<IEnumerator>() != null), null, "Contract.Result<IEnumerator>() != null");
  15.         Contract.Ensures((bool)(Contract.Result<IEnumerator>().Model == this.Model), null, "Contract.Result<IEnumerator>().Model == this.Model");
  16.         Contract.Ensures((bool)(Contract.Result<IEnumerator>().CurrentIndex == -1), null, "Contract.Result<IEnumerator>().CurrentIndex == -1");
  17.         return enumerator;
  18.     }
  19.  
  20.     // Properties
  21.     public object[] Model
  22.     {
  23.         get
  24.         {
  25.             object[] objArray;
  26.             Contract.Ensures((bool)(Contract.Result<object[]>() != null), null, "Contract.Result<object[]>() != null");
  27.             return objArray;
  28.         }
  29.     }
  30. }
  31.  
  32.  
  33. [ContractClassFor(typeof(IEnumerator))]
  34. internal abstract class IEnumeratorContract : IEnumerator
  35. {
  36.     // Methods
  37.     protected IEnumeratorContract() { }
  38.  
  39.     public bool MoveNext()
  40.     {
  41.         bool flag;
  42.         Contract.Ensures((bool)(this.Model == Contract.OldValue<object[]>(this.Model)), null, "this.Model == Contract.OldValue(this.Model)");
  43.         Contract.Ensures((bool)(this.CurrentIndex < this.Model.Length), null, "this.CurrentIndex < this.Model.Length");
  44.         Contract.Ensures((bool)(this.CurrentIndex >= 0), null, "this.CurrentIndex >= 0");
  45.         Contract.Ensures((bool)(this.CurrentIndex == (Contract.OldValue<int>(this.CurrentIndex) + 1)), null, "this.CurrentIndex == Contract.OldValue(this.CurrentIndex) + 1");
  46.         return flag;
  47.     }
  48.  
  49.     public void Reset() { }
  50.  
  51.     // Properties
  52.     public object Current
  53.     {
  54.         get
  55.         {
  56.             object obj2;
  57.             Contract.Ensures((bool)(Contract.Result<object>() == this.Model[this.CurrentIndex]), null, "Contract.Result<object>() == this.Model[this.CurrentIndex]");
  58.             return obj2;
  59.         }
  60.     }
  61.  
  62.     public int CurrentIndex
  63.     {
  64.         get
  65.         {
  66.             int num;
  67.             return num;
  68.         }
  69.     }
  70.  
  71.     public object[] Model
  72.     {
  73.         get
  74.         {
  75.             object[] objArray;
  76.             return objArray;
  77.         }
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement