/* * Copyright (c) 2020, the SerenityOS developers. * Copyright (c) 2022, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::DOM { class QualifiedName { public: QualifiedName(FlyString const& local_name, Optional const& prefix, Optional const& namespace_); QualifiedName(FlyString const& local_name, DeprecatedFlyString const& prefix, DeprecatedFlyString const& namespace_); FlyString const& local_name() const { return m_impl->local_name; } Optional const& prefix() const { return m_impl->prefix; } Optional const& namespace_() const { return m_impl->namespace_; } DeprecatedFlyString deprecated_prefix() const { if (!m_impl->prefix.has_value()) return {}; return m_impl->prefix->to_deprecated_fly_string(); } DeprecatedFlyString deprecated_namespace_() const { if (!m_impl->namespace_.has_value()) return {}; return m_impl->namespace_->to_deprecated_fly_string(); } FlyString const& as_string() const { return m_impl->as_string; } struct Impl : public RefCounted { Impl(FlyString const& local_name, Optional const& prefix, Optional const& namespace_); ~Impl(); void make_internal_string(); FlyString local_name; Optional prefix; Optional namespace_; FlyString as_string; }; void set_prefix(Optional value); private: NonnullRefPtr m_impl; }; }