LibGUI: Optimize GUI::Variant move constructor

This commit is contained in:
Sahan Fernando 2020-12-03 22:44:00 +11:00 committed by Andreas Kling
parent d0812e9019
commit 4062add8ed
Notes: sideshowbarker 2024-07-19 01:04:02 +09:00
2 changed files with 11 additions and 3 deletions
Libraries/LibGUI

View file

@ -26,6 +26,7 @@
#include <AK/FlyString.h>
#include <AK/JsonValue.h>
#include <AK/RefPtr.h>
#include <LibGUI/Variant.h>
namespace GUI {
@ -255,10 +256,8 @@ Variant& Variant::operator=(Variant&& other)
{
if (&other == this)
return *this;
// FIXME: Move, not copy!
clear();
copy_from(other);
other.clear();
move_from(AK::move(other));
return *this;
}
@ -267,6 +266,14 @@ Variant::Variant(const Variant& other)
copy_from(other);
}
void Variant::move_from(Variant&& other)
{
m_type = other.m_type;
m_value = other.m_value;
other.m_type = Type::Invalid;
other.m_value.as_string = nullptr;
}
void Variant::copy_from(const Variant& other)
{
ASSERT(!is_valid());

View file

@ -250,6 +250,7 @@ public:
private:
void copy_from(const Variant&);
void move_from(Variant&&);
struct RawPoint {
int x;