Loading [MathJax]/extensions/tex2jax.js
ttx 0.1.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
hyperlink.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/container/string/prelude.h"
4#include "di/reflect/prelude.h"
5#include "di/util/clone.h"
6
7namespace ttx::terminal {
8struct Hyperlink;
9
10namespace detail {
11 struct HyperlinkOps {
12 using Key = di::String;
13
14 constexpr static auto get_key(Hyperlink const& hyperlink) -> di::String const&;
15 };
16}
17
21struct Hyperlink {
23 using DefaultOps = detail::HyperlinkOps;
24
27 constexpr static auto max_uri_length = 2083zu;
28
31 constexpr static auto max_id_length = 230u;
32
33 di::String uri;
34 di::String id;
35
36 auto clone() const -> Hyperlink {
37 return {
38 di::clone(uri),
39 di::clone(id),
40 };
41 }
42
43 auto operator==(Hyperlink const&) const -> bool = default;
44 auto operator<=>(Hyperlink const&) const = default;
45
46 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Hyperlink>) {
47 return di::make_fields<"Hyperlink">(di::field<"id", &Hyperlink::id>, di::field<"uri", &Hyperlink::uri>);
48 }
49};
50
51namespace detail {
52 constexpr auto HyperlinkOps::get_key(Hyperlink const& hyperlink) -> di::String const& {
53 return hyperlink.id;
54 }
55}
56}
Definition capability.h:8