SubString.h 1.5 KB

12345678910111213141516171819202122232425262728
  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 SubString sealed : public JavascriptString
  9. {
  10. Field(void const *) originalFullStringReference; // Only here to prevent recycler to free this buffer.
  11. Field(void const *) unused; // Recycler would allocate this space anyway due to bucket sizing, so make it explicit
  12. SubString(void const * originalFullStringReference, const char16* subString, charcount_t length, ScriptContext *scriptContext);
  13. protected:
  14. DEFINE_VTABLE_CTOR(SubString, JavascriptString);
  15. public:
  16. static JavascriptString* New(JavascriptString* string, charcount_t start, charcount_t length);
  17. static JavascriptString* New(const char16* stringStr, charcount_t start, charcount_t length, ScriptContext *scriptContext);
  18. virtual const char16* GetSz() override;
  19. virtual void const * GetOriginalStringReference() override;
  20. virtual size_t GetAllocatedByteCount() const override;
  21. virtual bool IsSubstring() const override;
  22. virtual void CachePropertyRecord(_In_ PropertyRecord const* propertyRecord) override;
  23. };
  24. }