Ultra 0.9.4
Loading...
Searching...
No Matches
terminal.h
Go to the documentation of this file.
1
12
13#if !defined(ULTRA_TERMINAL_H)
14#define ULTRA_TERMINAL_H
15
16#include "kernel/symbol.h"
17#include "kernel/value.h"
18
19namespace ultra
20{
21
40class terminal : public symbol
41{
42public:
43 using symbol::symbol;
44
57 [[nodiscard]] virtual value_t instance() const = 0;
58
59 [[nodiscard]] std::string to_string(format = c_format) const override
60 {
61 return name();
62 }
63};
64
71template<class T> concept Terminal = std::derived_from<T, terminal>;
72
73} // namespace ultra
74
75#endif // include guard
format
Supported rendering formats for symbol stringification.
Definition symbol.h:72
symbol(const std::string &, category_t=default_category)
Definition symbol.cc:30
const std::string & name() const noexcept
Definition symbol.cc:51
Definition terminal.h:41
virtual value_t instance() const =0
symbol(const std::string &, category_t=default_category)
Definition symbol.cc:30
Definition terminal.h:71
std::variant< D_VOID, D_INT, D_DOUBLE, D_STRING, const D_NULLARY *, D_ADDRESS, const D_VARIABLE *, D_IVECTOR > value_t
Definition value.h:54