JavascriptStringEnumerator.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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 JavascriptStringEnumerator : public JavascriptEnumerator
  9. {
  10. private:
  11. JavascriptString* stringObject;
  12. int index;
  13. protected:
  14. DEFINE_VTABLE_CTOR(JavascriptStringEnumerator, JavascriptEnumerator);
  15. DEFINE_MARSHAL_ENUMERATOR_TO_SCRIPT_CONTEXT(JavascriptStringEnumerator);
  16. public:
  17. JavascriptStringEnumerator(JavascriptString* stringObject, ScriptContext * requestContext);
  18. virtual Var GetCurrentIndex() override;
  19. virtual Var GetCurrentValue() override;
  20. virtual BOOL MoveNext(PropertyAttributes* attributes = nullptr) override;
  21. virtual void Reset() override;
  22. virtual Var GetCurrentAndMoveNext(PropertyId& propertyId, PropertyAttributes* attributes = nullptr) override;
  23. };
  24. class JavascriptStringObjectEnumerator : public JavascriptEnumerator
  25. {
  26. private:
  27. JavascriptStringEnumerator* stringEnumerator;
  28. JavascriptStringObject* stringObject;
  29. JavascriptEnumerator* objectEnumerator;
  30. BOOL enumNonEnumerable;
  31. bool enumSymbols;
  32. protected:
  33. DEFINE_VTABLE_CTOR(JavascriptStringObjectEnumerator, JavascriptEnumerator);
  34. DEFINE_MARSHAL_ENUMERATOR_TO_SCRIPT_CONTEXT(JavascriptStringObjectEnumerator);
  35. public:
  36. JavascriptStringObjectEnumerator(JavascriptStringObject* stringObject, ScriptContext * requestContext, BOOL enumNonEnumerable, bool enumSymbols = false);
  37. virtual Var GetCurrentIndex() override;
  38. virtual Var GetCurrentValue() override;
  39. virtual BOOL MoveNext(PropertyAttributes* attributes = nullptr) override;
  40. virtual void Reset() override;
  41. virtual bool GetCurrentPropertyId(PropertyId *propertyId) override;
  42. virtual Var GetCurrentAndMoveNext(PropertyId& propertyId, PropertyAttributes* attributes = nullptr) override;
  43. };
  44. }