ladybird/Userland/Libraries/LibWeb/DOM/QualifiedName.h
Andreas Kling cf5eeb9f4b LibWeb: Share QualifiedName data between identical instances
Adopt the same pattern as AK::FlyString, reducing sizeof(QualifiedName)
to the size of a pointer.

This reduces the size of DOM::Element by 24 bytes.
2022-02-19 14:45:59 +01:00

40 lines
994 B
C++

/*
* Copyright (c) 2020, the SerenityOS developers.
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/FlyString.h>
namespace Web::DOM {
class QualifiedName {
public:
QualifiedName(FlyString const& local_name, FlyString const& prefix, FlyString const& namespace_);
FlyString const& local_name() const { return m_impl->local_name; }
FlyString const& prefix() const { return m_impl->prefix; }
FlyString const& namespace_() const { return m_impl->namespace_; }
String const& as_string() const { return m_impl->as_string; }
struct Impl : public RefCounted<Impl> {
Impl(FlyString const& local_name, FlyString const& prefix, FlyString const& namespace_);
~Impl();
void make_internal_string();
FlyString local_name;
FlyString prefix;
FlyString namespace_;
String as_string;
};
private:
NonnullRefPtr<Impl> m_impl;
};
}