Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
tui_commands.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <cstddef>
7#include <cstdint>
8
9#include "contur/core/error.h"
10
11namespace contur {
12
23
26 {
28 std::uint32_t intervalMs = 100;
29
31 std::size_t step = 1;
32 };
33
36 {
39
41 std::size_t step = 1;
42
44 std::uint32_t intervalMs = 100;
45 };
46
50 [[nodiscard]] constexpr bool commandRequiresStep(TuiCommandKind kind) noexcept
51 {
52 return kind == TuiCommandKind::Tick || kind == TuiCommandKind::AutoPlayStart ||
54 }
55
59 [[nodiscard]] constexpr bool commandRequiresInterval(TuiCommandKind kind) noexcept
60 {
61 return kind == TuiCommandKind::AutoPlayStart;
62 }
63
67 [[nodiscard]] inline Result<void> validatePlaybackConfig(const TuiPlaybackConfig &config)
68 {
69 if (config.step == 0 || config.intervalMs == 0)
70 {
72 }
73 return Result<void>::ok();
74 }
75
79 [[nodiscard]] inline Result<void> validateCommand(const TuiCommand &command)
80 {
81 if (commandRequiresStep(command.kind) && command.step == 0)
82 {
84 }
85 if (commandRequiresInterval(command.kind) && command.intervalMs == 0)
86 {
88 }
89 return Result<void>::ok();
90 }
91
95 [[nodiscard]] constexpr TuiPlaybackConfig playbackConfigFromCommand(const TuiCommand &command) noexcept
96 {
97 return TuiPlaybackConfig{command.intervalMs, command.step};
98 }
99
100} // namespace contur
A result type that holds either a success value of type T or an ErrorCode.
Definition error.h:104
static Result error(ErrorCode code)
Constructs a failed Result with the given error code.
Definition error.h:113
static Result ok(T value)
Constructs a successful Result containing the given value.
Definition error.h:107
Error codes and Result<T> type for fallible operations.
Definition block.h:15
Result< void > validateCommand(const TuiCommand &command)
Validates a TUI command payload.
constexpr bool commandRequiresInterval(TuiCommandKind kind) noexcept
Returns true when command kind requires non-zero interval value.
Result< void > validatePlaybackConfig(const TuiPlaybackConfig &config)
Validates autoplay configuration.
std::uint64_t Tick
Simulation clock tick counter.
Definition types.h:18
TuiCommandKind
Supported command kinds for TUI playback/navigation.
constexpr TuiPlaybackConfig playbackConfigFromCommand(const TuiCommand &command) noexcept
Builds playback configuration from command payload values.
constexpr bool commandRequiresStep(TuiCommandKind kind) noexcept
Returns true when command kind requires non-zero step value.
Generic command payload accepted by TUI controller.
std::size_t step
Step size used by tick/seek/autoplay commands.
std::uint32_t intervalMs
Interval in milliseconds used by autoplay start.
TuiCommandKind kind
Command discriminator.
Autoplay configuration used by controller/runtime scheduling logic.
std::size_t step
Number of ticks per autoplay step.
std::uint32_t intervalMs
Autoplay interval in milliseconds.