The Labs \ Source Viewer \ SSCLI \ Microsoft.JScript \ EnumeratorObject

  1. // ==++==
  2. //
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. //
  14. // ==--==
  15. namespace Microsoft.JScript
  16. {
  17.    
  18.     using System;
  19.     using System.Collections;
  20.    
  21.     public class EnumeratorObject : JSObject
  22.     {
  23.         private IEnumerable collection;
  24.         protected IEnumerator enumerator;
  25.         private object obj;
  26.        
  27.         internal EnumeratorObject(EnumeratorPrototype parent) : base(parent)
  28.         {
  29.             this.enumerator = null;
  30.             this.collection = null;
  31.             this.noExpando = false;
  32.         }
  33.        
  34.         internal EnumeratorObject(EnumeratorPrototype parent, IEnumerable collection) : base(parent)
  35.         {
  36.             this.collection = collection;
  37.             if (collection != null)
  38.                 this.enumerator = collection.GetEnumerator();
  39.             LoadObject();
  40.             this.noExpando = false;
  41.         }
  42.        
  43.         internal virtual bool atEnd()
  44.         {
  45.             if (this.enumerator != null)
  46.                 return this.obj == null;
  47.             else
  48.                 return true;
  49.         }
  50.        
  51.         internal virtual object item()
  52.         {
  53.             if (this.enumerator != null)
  54.                 return this.obj;
  55.             else
  56.                 return null;
  57.         }
  58.        
  59.         protected void LoadObject()
  60.         {
  61.             if (this.enumerator != null && this.enumerator.MoveNext())
  62.                 this.obj = this.enumerator.Current;
  63.             else
  64.                 this.obj = null;
  65.         }
  66.        
  67.         internal virtual void moveFirst()
  68.         {
  69.             if (this.collection != null)
  70.                 this.enumerator = this.collection.GetEnumerator();
  71.             LoadObject();
  72.         }
  73.        
  74.         internal virtual void moveNext()
  75.         {
  76.             if (this.enumerator != null)
  77.                 LoadObject();
  78.         }
  79.        
  80.     }
  81.    
  82. }

Developer Fusion