QualifiedName.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * Copyright (c) 2020, the SerenityOS developers.
  3. * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
  4. * Copyright (c) 2023, Shannon Booth <shannon@serenityos.org>
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause
  7. */
  8. #pragma once
  9. #include <AK/FlyString.h>
  10. #include <AK/Optional.h>
  11. namespace Web::DOM {
  12. class QualifiedName {
  13. public:
  14. QualifiedName(FlyString const& local_name, Optional<FlyString> const& prefix, Optional<FlyString> const& namespace_);
  15. FlyString const& local_name() const { return m_impl->local_name; }
  16. Optional<FlyString> const& prefix() const { return m_impl->prefix; }
  17. Optional<FlyString> const& namespace_() const { return m_impl->namespace_; }
  18. FlyString const& as_string() const { return m_impl->as_string; }
  19. struct Impl : public RefCounted<Impl> {
  20. Impl(FlyString const& local_name, Optional<FlyString> const& prefix, Optional<FlyString> const& namespace_);
  21. ~Impl();
  22. void make_internal_string();
  23. FlyString local_name;
  24. Optional<FlyString> prefix;
  25. Optional<FlyString> namespace_;
  26. FlyString as_string;
  27. };
  28. void set_prefix(Optional<FlyString> value);
  29. private:
  30. NonnullRefPtr<Impl> m_impl;
  31. };
  32. }