JavascriptRegExpEnumerator.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. #include "RuntimeLibraryPch.h"
  6. namespace Js
  7. {
  8. JavascriptRegExpEnumerator::JavascriptRegExpEnumerator(JavascriptRegExpConstructor* regExpObject, EnumeratorFlags flags, ScriptContext * requestContext) :
  9. JavascriptEnumerator(requestContext),
  10. flags(flags),
  11. regExpObject(regExpObject)
  12. {
  13. index = (uint)-1;
  14. }
  15. void JavascriptRegExpEnumerator::Reset()
  16. {
  17. index = (uint)-1;
  18. }
  19. JavascriptString * JavascriptRegExpEnumerator::MoveAndGetNext(PropertyId& propertyId, PropertyAttributes* attributes)
  20. {
  21. propertyId = Constants::NoProperty;
  22. ScriptContext* scriptContext = this->GetScriptContext();
  23. JavascriptString * item = nullptr;
  24. if (regExpObject->GetSpecialEnumerablePropertyName(++index, &item, scriptContext))
  25. {
  26. if (attributes != nullptr)
  27. {
  28. *attributes = PropertyEnumerable;
  29. }
  30. return item;
  31. }
  32. index = regExpObject->GetSpecialEnumerablePropertyCount();
  33. return nullptr;
  34. }
  35. }