Vita
terminal.h
Go to the documentation of this file.
1
13#if !defined(VITA_TERMINAL_H)
14#define VITA_TERMINAL_H
15
16#include "kernel/gp/symbol.h"
17
18namespace vita
19{
26class terminal : public symbol
27{
28public:
29 using symbol::symbol;
30
31 [[nodiscard]] unsigned arity() const final;
32
33 [[nodiscard]] virtual bool parametric() const;
34
35 [[nodiscard]] virtual terminal_param_t init() const;
36
37 [[nodiscard]] virtual std::string display(terminal_param_t,
38 format = c_format) const;
39
40 [[nodiscard]] static const terminal *cast(const symbol *);
41};
42
46inline unsigned terminal::arity() const
47{
48 return 0;
49}
50
59inline bool terminal::parametric() const
60{
61 return false;
62}
63
72inline terminal_param_t terminal::init() const
73{
74 return 0.0;
75}
76
83inline const terminal *terminal::cast(const symbol *s)
84{
85 Expects(s->arity() == 0);
86 return static_cast<const terminal *>(s);
87}
88
89} // namespace vita
90
91#endif // include guard
Together functions and terminals are referred to as symbols.
Definition: symbol.h:36
format
Symbol rendering format.
Definition: symbol.h:39
symbol(const std::string &, category_t=0)
Definition: symbol.cc:35
A symbol with zero-arity.
Definition: terminal.h:27
virtual bool parametric() const
A parametric terminal needs an additional parameter to be evaluated.
Definition: terminal.h:59
static const terminal * cast(const symbol *)
This is a short cut function.
Definition: terminal.h:83
virtual std::string display(terminal_param_t, format=c_format) const
Definition: terminal.cc:24
unsigned arity() const final
Definition: terminal.h:46
virtual terminal_param_t init() const
Used to initialize the internal parameter of the terminal.
Definition: terminal.h:72
The main namespace for the project.