mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 08:44:58 +00:00
AK: Make Deprecated{Fly,}String and StringImpl const-correct
This commit is contained in:
parent
4b3e229157
commit
a56dfd5c77
5 changed files with 27 additions and 28 deletions
|
@ -24,9 +24,9 @@ struct DeprecatedFlyStringImplTraits : public Traits<StringImpl*> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static Singleton<HashTable<StringImpl*, DeprecatedFlyStringImplTraits>> s_table;
|
static Singleton<HashTable<StringImpl const*, DeprecatedFlyStringImplTraits>> s_table;
|
||||||
|
|
||||||
static HashTable<StringImpl*, DeprecatedFlyStringImplTraits>& fly_impls()
|
static HashTable<StringImpl const*, DeprecatedFlyStringImplTraits>& fly_impls()
|
||||||
{
|
{
|
||||||
return *s_table;
|
return *s_table;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static DeprecatedFlyString from_fly_impl(NonnullRefPtr<StringImpl> impl)
|
static DeprecatedFlyString from_fly_impl(NonnullRefPtr<StringImpl const> impl)
|
||||||
{
|
{
|
||||||
VERIFY(impl->is_fly());
|
VERIFY(impl->is_fly());
|
||||||
DeprecatedFlyString string;
|
DeprecatedFlyString string;
|
||||||
|
@ -91,7 +91,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RefPtr<StringImpl> m_impl;
|
RefPtr<StringImpl const> m_impl;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace AK {
|
||||||
|
|
||||||
// DeprecatedString is a convenience wrapper around StringImpl, suitable for passing
|
// DeprecatedString is a convenience wrapper around StringImpl, suitable for passing
|
||||||
// around as a value type. It's basically the same as passing around a
|
// around as a value type. It's basically the same as passing around a
|
||||||
// RefPtr<StringImpl>, with a bit of syntactic sugar.
|
// RefPtr<StringImpl const>, with a bit of syntactic sugar.
|
||||||
//
|
//
|
||||||
// Note that StringImpl is an immutable object that cannot shrink or grow.
|
// Note that StringImpl is an immutable object that cannot shrink or grow.
|
||||||
// Its allocation size is snugly tailored to the specific string it contains.
|
// Its allocation size is snugly tailored to the specific string it contains.
|
||||||
|
@ -48,7 +48,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedString(DeprecatedString const& other)
|
DeprecatedString(DeprecatedString const& other)
|
||||||
: m_impl(const_cast<DeprecatedString&>(other).m_impl)
|
: m_impl(other.m_impl)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,21 +73,21 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedString(StringImpl const& impl)
|
DeprecatedString(StringImpl const& impl)
|
||||||
: m_impl(const_cast<StringImpl&>(impl))
|
: m_impl(impl)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedString(StringImpl const* impl)
|
DeprecatedString(StringImpl const* impl)
|
||||||
: m_impl(const_cast<StringImpl*>(impl))
|
: m_impl(impl)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedString(RefPtr<StringImpl>&& impl)
|
DeprecatedString(RefPtr<StringImpl const>&& impl)
|
||||||
: m_impl(move(impl))
|
: m_impl(move(impl))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedString(NonnullRefPtr<StringImpl>&& impl)
|
DeprecatedString(NonnullRefPtr<StringImpl const>&& impl)
|
||||||
: m_impl(move(impl))
|
: m_impl(move(impl))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,6 @@ public:
|
||||||
return StringImpl::the_empty_stringimpl();
|
return StringImpl::the_empty_stringimpl();
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] StringImpl* impl() { return m_impl.ptr(); }
|
|
||||||
[[nodiscard]] StringImpl const* impl() const { return m_impl.ptr(); }
|
[[nodiscard]] StringImpl const* impl() const { return m_impl.ptr(); }
|
||||||
|
|
||||||
DeprecatedString& operator=(DeprecatedString&& other)
|
DeprecatedString& operator=(DeprecatedString&& other)
|
||||||
|
@ -323,7 +322,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RefPtr<StringImpl> m_impl;
|
RefPtr<StringImpl const> m_impl;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
|
|
|
@ -34,7 +34,7 @@ StringImpl::~StringImpl()
|
||||||
DeprecatedFlyString::did_destroy_impl({}, *this);
|
DeprecatedFlyString::did_destroy_impl({}, *this);
|
||||||
}
|
}
|
||||||
|
|
||||||
NonnullRefPtr<StringImpl> StringImpl::create_uninitialized(size_t length, char*& buffer)
|
NonnullRefPtr<StringImpl const> StringImpl::create_uninitialized(size_t length, char*& buffer)
|
||||||
{
|
{
|
||||||
VERIFY(length);
|
VERIFY(length);
|
||||||
void* slot = kmalloc(allocation_size_for_stringimpl(length));
|
void* slot = kmalloc(allocation_size_for_stringimpl(length));
|
||||||
|
@ -45,7 +45,7 @@ NonnullRefPtr<StringImpl> StringImpl::create_uninitialized(size_t length, char*&
|
||||||
return new_stringimpl;
|
return new_stringimpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<StringImpl> StringImpl::create(char const* cstring, size_t length, ShouldChomp should_chomp)
|
RefPtr<StringImpl const> StringImpl::create(char const* cstring, size_t length, ShouldChomp should_chomp)
|
||||||
{
|
{
|
||||||
if (!cstring)
|
if (!cstring)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -70,7 +70,7 @@ RefPtr<StringImpl> StringImpl::create(char const* cstring, size_t length, Should
|
||||||
return new_stringimpl;
|
return new_stringimpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<StringImpl> StringImpl::create(char const* cstring, ShouldChomp shouldChomp)
|
RefPtr<StringImpl const> StringImpl::create(char const* cstring, ShouldChomp shouldChomp)
|
||||||
{
|
{
|
||||||
if (!cstring)
|
if (!cstring)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -81,12 +81,12 @@ RefPtr<StringImpl> StringImpl::create(char const* cstring, ShouldChomp shouldCho
|
||||||
return create(cstring, strlen(cstring), shouldChomp);
|
return create(cstring, strlen(cstring), shouldChomp);
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<StringImpl> StringImpl::create(ReadonlyBytes bytes, ShouldChomp shouldChomp)
|
RefPtr<StringImpl const> StringImpl::create(ReadonlyBytes bytes, ShouldChomp shouldChomp)
|
||||||
{
|
{
|
||||||
return StringImpl::create(reinterpret_cast<char const*>(bytes.data()), bytes.size(), shouldChomp);
|
return StringImpl::create(reinterpret_cast<char const*>(bytes.data()), bytes.size(), shouldChomp);
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<StringImpl> StringImpl::create_lowercased(char const* cstring, size_t length)
|
RefPtr<StringImpl const> StringImpl::create_lowercased(char const* cstring, size_t length)
|
||||||
{
|
{
|
||||||
if (!cstring)
|
if (!cstring)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -99,7 +99,7 @@ RefPtr<StringImpl> StringImpl::create_lowercased(char const* cstring, size_t len
|
||||||
return impl;
|
return impl;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<StringImpl> StringImpl::create_uppercased(char const* cstring, size_t length)
|
RefPtr<StringImpl const> StringImpl::create_uppercased(char const* cstring, size_t length)
|
||||||
{
|
{
|
||||||
if (!cstring)
|
if (!cstring)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -112,7 +112,7 @@ RefPtr<StringImpl> StringImpl::create_uppercased(char const* cstring, size_t len
|
||||||
return impl;
|
return impl;
|
||||||
}
|
}
|
||||||
|
|
||||||
NonnullRefPtr<StringImpl> StringImpl::to_lowercase() const
|
NonnullRefPtr<StringImpl const> StringImpl::to_lowercase() const
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < m_length; ++i) {
|
for (size_t i = 0; i < m_length; ++i) {
|
||||||
if (is_ascii_upper_alpha(characters()[i]))
|
if (is_ascii_upper_alpha(characters()[i]))
|
||||||
|
@ -121,7 +121,7 @@ NonnullRefPtr<StringImpl> StringImpl::to_lowercase() const
|
||||||
return const_cast<StringImpl&>(*this);
|
return const_cast<StringImpl&>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
NonnullRefPtr<StringImpl> StringImpl::to_uppercase() const
|
NonnullRefPtr<StringImpl const> StringImpl::to_uppercase() const
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < m_length; ++i) {
|
for (size_t i = 0; i < m_length; ++i) {
|
||||||
if (is_ascii_lower_alpha(characters()[i]))
|
if (is_ascii_lower_alpha(characters()[i]))
|
||||||
|
|
|
@ -24,15 +24,15 @@ size_t allocation_size_for_stringimpl(size_t length);
|
||||||
|
|
||||||
class StringImpl : public RefCounted<StringImpl> {
|
class StringImpl : public RefCounted<StringImpl> {
|
||||||
public:
|
public:
|
||||||
static NonnullRefPtr<StringImpl> create_uninitialized(size_t length, char*& buffer);
|
static NonnullRefPtr<StringImpl const> create_uninitialized(size_t length, char*& buffer);
|
||||||
static RefPtr<StringImpl> create(char const* cstring, ShouldChomp = NoChomp);
|
static RefPtr<StringImpl const> create(char const* cstring, ShouldChomp = NoChomp);
|
||||||
static RefPtr<StringImpl> create(char const* cstring, size_t length, ShouldChomp = NoChomp);
|
static RefPtr<StringImpl const> create(char const* cstring, size_t length, ShouldChomp = NoChomp);
|
||||||
static RefPtr<StringImpl> create(ReadonlyBytes, ShouldChomp = NoChomp);
|
static RefPtr<StringImpl const> create(ReadonlyBytes, ShouldChomp = NoChomp);
|
||||||
static RefPtr<StringImpl> create_lowercased(char const* cstring, size_t length);
|
static RefPtr<StringImpl const> create_lowercased(char const* cstring, size_t length);
|
||||||
static RefPtr<StringImpl> create_uppercased(char const* cstring, size_t length);
|
static RefPtr<StringImpl const> create_uppercased(char const* cstring, size_t length);
|
||||||
|
|
||||||
NonnullRefPtr<StringImpl> to_lowercase() const;
|
NonnullRefPtr<StringImpl const> to_lowercase() const;
|
||||||
NonnullRefPtr<StringImpl> to_uppercase() const;
|
NonnullRefPtr<StringImpl const> to_uppercase() const;
|
||||||
|
|
||||||
void operator delete(void* ptr)
|
void operator delete(void* ptr)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue