ES5ArrayEnumerator.h 1.6 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 ES5ArrayEnumerator : public JavascriptArrayEnumeratorBase
  9. {
  10. private:
  11. Var originalInstance; // The containing object or the standalone array itself
  12. uint32 initialLength; // The initial array length when this enumerator is created
  13. uint32 dataIndex; // Current data index
  14. uint32 descriptorIndex; // Current descriptor index
  15. IndexPropertyDescriptor* descriptor; // Current descriptor
  16. void * descriptorValidationToken;
  17. protected:
  18. DEFINE_VTABLE_CTOR(ES5ArrayEnumerator, JavascriptArrayEnumeratorBase);
  19. DEFINE_MARSHAL_ENUMERATOR_TO_SCRIPT_CONTEXT(ES5ArrayEnumerator);
  20. private:
  21. ES5Array* GetArray() const { return ES5Array::FromVar(arrayObject); }
  22. public:
  23. ES5ArrayEnumerator(Var originalInstance, ES5Array* arrayObject, ScriptContext* scriptContext, BOOL enumNonEnumerable, bool enumSymbols = false);
  24. virtual Var GetCurrentIndex() override;
  25. virtual Var GetCurrentValue() override;
  26. virtual void Reset() override;
  27. virtual Var GetCurrentAndMoveNext(PropertyId& propertyId, PropertyAttributes* attributes = nullptr) override;
  28. };
  29. }