IteratorObjectEnumerator.h 1.4 KB

1234567891011121314151617181920212223242526272829303132
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. #pragma once
  6. namespace Js
  7. {
  8. class IteratorObjectEnumerator sealed : public JavascriptEnumerator
  9. {
  10. public:
  11. static Var Create(ScriptContext* scriptContext, Var iteratorObject);
  12. virtual Var GetCurrentIndex() override;
  13. virtual Var GetCurrentValue() override;
  14. virtual Var GetCurrentAndMoveNext(PropertyId& propertyId, PropertyAttributes* attributes = nullptr);
  15. virtual BOOL MoveNext(PropertyAttributes* attributes = nullptr) override;
  16. virtual void Reset() override;
  17. protected:
  18. IteratorObjectEnumerator(ScriptContext* scriptContext, Var iteratorObject);
  19. DEFINE_VTABLE_CTOR(IteratorObjectEnumerator, JavascriptEnumerator);
  20. virtual void MarshalToScriptContext(Js::ScriptContext * scriptContext) override
  21. {
  22. AssertMsg(false, "IteratorObjectEnumerator should never get marshaled");
  23. }
  24. private:
  25. void EnsureIterator();
  26. RecyclableObject* iteratorObject;
  27. Var value;
  28. BOOL done;
  29. };
  30. }