SingleCharString.h 1.2 KB

1234567891011121314151617181920212223242526272829
  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. // A JavascriptString containing a single char.
  9. // Caution: GetString and GetSz return interior pointers.
  10. // So, if allocated in Recycler memory, these objects must
  11. // remain pinned to prevent orphaning via interior pointers (GetString, GetSz)
  12. class SingleCharString sealed : public JavascriptString
  13. {
  14. public:
  15. static SingleCharString* New(char16 ch, ScriptContext* scriptContext);
  16. static SingleCharString* New(char16 ch, ScriptContext* scriptContext, ArenaAllocator* arena);
  17. virtual void const * GetOriginalStringReference() override;
  18. protected:
  19. DEFINE_VTABLE_CTOR(SingleCharString, JavascriptString);
  20. private:
  21. SingleCharString(char16 ch, StaticType * type);
  22. Field(char16) m_buff[2] = { 0 }; // the 2nd is always NULL so that GetSz works
  23. };
  24. } // namespace Js