ArgumentsObjectEnumerator.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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 ArgumentsObjectEnumerator : public JavascriptEnumerator
  9. {
  10. protected:
  11. ArgumentsObject* argumentsObject;
  12. uint32 formalArgIndex;
  13. bool doneFormalArgs;
  14. JavascriptEnumerator* objectEnumerator;
  15. BOOL enumNonEnumerable;
  16. bool enumSymbols;
  17. protected:
  18. DEFINE_VTABLE_CTOR(ArgumentsObjectEnumerator, JavascriptEnumerator);
  19. DEFINE_MARSHAL_ENUMERATOR_TO_SCRIPT_CONTEXT(ArgumentsObjectEnumerator);
  20. public:
  21. ArgumentsObjectEnumerator(ArgumentsObject* argumentsObject, ScriptContext* requestcontext, BOOL enumNonEnumerable, bool enumSymbols = false);
  22. virtual Var GetCurrentIndex() override;
  23. virtual Var GetCurrentValue() override;
  24. virtual BOOL MoveNext(PropertyAttributes* attributes = nullptr) override;
  25. virtual void Reset() override;
  26. virtual bool GetCurrentPropertyId(PropertyId *propertyId) override;
  27. };
  28. class ES5ArgumentsObjectEnumerator : public ArgumentsObjectEnumerator
  29. {
  30. protected:
  31. DEFINE_VTABLE_CTOR(ES5ArgumentsObjectEnumerator, ArgumentsObjectEnumerator);
  32. DEFINE_MARSHAL_ENUMERATOR_TO_SCRIPT_CONTEXT(ES5ArgumentsObjectEnumerator);
  33. public:
  34. ES5ArgumentsObjectEnumerator(ArgumentsObject* argumentsObject, ScriptContext* requestcontext, BOOL enumNonEnumerable, bool enumSymbols = false);
  35. virtual BOOL MoveNext(PropertyAttributes* attributes = nullptr) override;
  36. virtual void Reset() override;
  37. private:
  38. uint enumeratedFormalsInObjectArrayCount; // The number of enumerated formals for far.
  39. };
  40. }