ttx 0.1.0
Loading...
Searching...
No Matches
capability.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"
7
8namespace ttx::terminal {
10struct Capability {
11 di::StringView long_name;
12 di::TransparentStringView short_name;
13 di::Variant<di::Void, u32, di::TransparentStringView> value = {};
14 di::StringView description;
15 bool enabled = true;
16
17 auto serialize() const -> di::String;
18
19 auto operator==(Capability const&) const -> bool = default;
20 auto operator<=>(Capability const&) const = default;
21
22 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Capability>) {
23 return di::make_fields<"Capability">(
24 di::field<"long_name", &Capability::long_name>, di::field<"short_name", &Capability::short_name>,
25 di::field<"value", &Capability::value>, di::field<"description", &Capability::description>);
26 }
27};
28
30struct Terminfo {
31 di::Span<di::TransparentStringView const> names;
32 di::Span<Capability const> capabilities;
33
34 auto serialize() const -> di::String;
35
36 auto operator==(Terminfo const&) const -> bool = default;
37 auto operator<=>(Terminfo const&) const = default;
38
39 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Terminfo>) {
40 return di::make_fields<"Terminfo">(di::field<"names", &Terminfo::names>,
41 di::field<"capabilities", &Terminfo::capabilities>);
42 }
43};
44
45auto get_ttx_terminfo() -> Terminfo const&;
46auto lookup_terminfo_string(di::StringView hex_name) -> TerminfoString;
47}
Definition capability.h:8
auto get_ttx_terminfo() -> Terminfo const &
Definition capability.cpp:43
auto lookup_terminfo_string(di::StringView hex_name) -> TerminfoString
Definition capability.cpp:47
Represents a Termcap capability.
Definition capability.h:10
di::StringView long_name
Human understandable name for diagnostic print-out.
Definition capability.h:11
auto serialize() const -> di::String
Definition capability.cpp:11
di::Variant< di::Void, u32, di::TransparentStringView > value
Void means a boolean capabillity.
Definition capability.h:13
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Capability >)
Definition capability.h:22
bool enabled
Allows for marking entries as not yet enabled, but will be once supported.
Definition capability.h:15
di::StringView description
Description for diagnostic print-out.
Definition capability.h:14
di::TransparentStringView short_name
Short name stored in terminfo file.
Definition capability.h:12
Represents a terminfo entry.
Definition capability.h:30
auto serialize() const -> di::String
Definition capability.cpp:28
di::Span< di::TransparentStringView const > names
Definition capability.h:31
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Terminfo >)
Definition capability.h:39
di::Span< Capability const > capabilities
Definition capability.h:32