QualifiedName.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * Copyright (c) 2020, the SerenityOS developers.
  3. * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #pragma once
  8. #include <AK/DeprecatedFlyString.h>
  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. QualifiedName(FlyString const& local_name, DeprecatedFlyString const& prefix, DeprecatedFlyString const& namespace_);
  16. FlyString const& local_name() const { return m_impl->local_name; }
  17. Optional<FlyString> const& prefix() const { return m_impl->prefix; }
  18. Optional<FlyString> const& namespace_() const { return m_impl->namespace_; }
  19. DeprecatedFlyString deprecated_prefix() const
  20. {
  21. if (!m_impl->prefix.has_value())
  22. return {};
  23. return m_impl->prefix->to_deprecated_fly_string();
  24. }
  25. DeprecatedFlyString deprecated_namespace_() const
  26. {
  27. if (!m_impl->namespace_.has_value())
  28. return {};
  29. return m_impl->namespace_->to_deprecated_fly_string();
  30. }
  31. FlyString const& as_string() const { return m_impl->as_string; }
  32. struct Impl : public RefCounted<Impl> {
  33. Impl(FlyString const& local_name, Optional<FlyString> const& prefix, Optional<FlyString> const& namespace_);
  34. ~Impl();
  35. void make_internal_string();
  36. FlyString local_name;
  37. Optional<FlyString> prefix;
  38. Optional<FlyString> namespace_;
  39. FlyString as_string;
  40. };
  41. void set_prefix(Optional<FlyString> value);
  42. private:
  43. NonnullRefPtr<Impl> m_impl;
  44. };
  45. }