Ultra
0.9.4
Loading...
Searching...
No Matches
src
kernel
gp
src
variable.h
Go to the documentation of this file.
1
12
13
#if !defined(ULTRA_SRC_VARIABLE_H)
14
#define ULTRA_SRC_VARIABLE_H
15
16
#include "
kernel/terminal.h
"
17
#include "
kernel/gp/src/interpreter.h
"
18
19
namespace
ultra::src
20
{
25
class
variable :
public
terminal
26
{
27
public
:
28
variable(std::size_t var_id,
const
std::string &
name
,
29
category_t
c =
symbol::default_category
)
30
:
terminal
(
name
, c), var_(var_id)
31
{}
32
33
[[nodiscard]]
value_t
eval(
const
ultra::interpreter
&i)
const
34
{
35
Expects(
dynamic_cast<
const
src::interpreter
*
>
(&i));
36
return
static_cast<
const
src::interpreter
&
>
(i).fetch_var(var_);
37
}
38
39
[[nodiscard]]
value_t
instance
() const final {
return
this
; }
40
41
private
:
42
std::size_t var_;
43
};
44
45
}
// namespace ultra
46
47
#endif
// include guard
ultra::interpreter
Definition
interpreter.h:60
ultra::src::interpreter
Definition
src/interpreter.h:26
ultra::src::variable::instance
value_t instance() const final
Definition
variable.h:39
ultra::symbol::category_t
unsigned category_t
Definition
symbol.h:55
ultra::symbol::default_category
static constexpr category_t default_category
Default category assigned when typing is not used.
Definition
symbol.h:58
ultra::symbol::name
const std::string & name() const noexcept
Definition
symbol.cc:51
ultra::terminal
Definition
terminal.h:41
ultra::value_t
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
interpreter.h
terminal.h
Generated by
1.15.0