mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 09:14:58 +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
|
@ -24,6 +24,7 @@
|
|||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <AK/FlyString.h>
|
||||
#include <AK/HashTable.h>
|
||||
#include <AK/Memory.h>
|
||||
#include <AK/StdLibExtras.h>
|
||||
|
@ -72,6 +73,8 @@ StringImpl::StringImpl(ConstructWithInlineBufferTag, size_t length)
|
|||
|
||||
StringImpl::~StringImpl()
|
||||
{
|
||||
if (m_fly)
|
||||
FlyString::did_destroy_impl({}, *this);
|
||||
#ifdef DEBUG_STRINGIMPL
|
||||
--g_stringimpl_count;
|
||||
g_all_live_stringimpls->remove(this);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue