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:
parent
0395b25e3f
commit
4f72f6b886
15 changed files with 236 additions and 32 deletions
|
@ -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())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue