1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:38:11 +00:00

AK: Add FlyString, a simple flyweight string class

FlyString is a flyweight string class that wraps a RefPtr<StringImpl>
known to be unique among the set of FlyStrings. The class is very
unoptimized at the moment.

When to use FlyString:

- When you want O(1) string comparison
- When you want to deduplicate a lot of identical strings

When not to use FlyString:

- For strings that don't need either of the above features
- For strings that are likely to be unique
This commit is contained in:
Andreas Kling 2020-03-22 10:12:55 +01:00
parent 0395b25e3f
commit 4f72f6b886
15 changed files with 236 additions and 32 deletions

View file

@ -28,6 +28,7 @@
#include <AK/Memory.h>
#include <AK/String.h>
#include <AK/StringView.h>
#include <AK/FlyString.h>
#include <AK/Vector.h>
namespace AK {
@ -39,6 +40,13 @@ StringView::StringView(const String& string)
{
}
StringView::StringView(const FlyString& string)
: m_impl(string.impl())
, m_characters(string.characters())
, m_length(string.length())
{
}
StringView::StringView(const ByteBuffer& buffer)
: m_characters((const char*)buffer.data())
, m_length(buffer.size())