aboutsummaryrefslogtreecommitdiff
path: root/ttwhy/scanners/concepts.cppm
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2026-09-22 18:56:44 +0200
committerFelix Morgner <felix.morgner@gmail.com>2026-09-22 18:56:44 +0200
commit22f6534081acfabdab4956d337604a21e7da5b64 (patch)
treea857b256a120d154667f2ed68cbf5151afe0cfbf /ttwhy/scanners/concepts.cppm
parent676586f2034ff112b309dccc430893d73e919191 (diff)
downloadttwhy-22f6534081acfabdab4956d337604a21e7da5b64.tar.xz
ttwhy-22f6534081acfabdab4956d337604a21e7da5b64.zip
lib: generalize concepts
Diffstat (limited to 'ttwhy/scanners/concepts.cppm')
-rw-r--r--ttwhy/scanners/concepts.cppm13
1 files changed, 8 insertions, 5 deletions
diff --git a/ttwhy/scanners/concepts.cppm b/ttwhy/scanners/concepts.cppm
index 69d6459..5c29b5f 100644
--- a/ttwhy/scanners/concepts.cppm
+++ b/ttwhy/scanners/concepts.cppm
@@ -17,11 +17,14 @@ namespace ttwhy
{ a.is_pending() } -> std::same_as<bool>;
};
- export template<typename Sink>
- concept ansi_sink = requires(Sink sink) {
- { sink(std::declval<ttwhy::scanners::character_event>()) } -> std::same_as<void>;
- { sink(std::declval<ttwhy::scanners::control_event>()) } -> std::same_as<void>;
- { sink(std::declval<ttwhy::scanners::navigation_event>()) } -> std::same_as<void>;
+ export template<typename Sink, typename Event>
+ concept event_sink = requires(Sink sink, Event event) {
+ { sink(event) } -> std::same_as<void>;
};
+ export template<typename Sink>
+ concept terminal_event_sink =
+ event_sink<Sink, scanners::character_event> && event_sink<Sink, scanners::control_event> &&
+ event_sink<Sink, scanners::navigation_event>;
+
} // namespace ttwhy