Ultra 0.9.4
Loading...
Searching...
No Matches
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"
18
19namespace ultra::src
20{
25class variable : public terminal
26{
27public:
28 variable(std::size_t var_id, const std::string &name,
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
41private:
42 std::size_t var_;
43};
44
45} // namespace ultra
46
47#endif // include guard
Definition interpreter.h:60
Definition src/interpreter.h:26
value_t instance() const final
Definition variable.h:39
unsigned category_t
Definition symbol.h:55
static constexpr category_t default_category
Default category assigned when typing is not used.
Definition symbol.h:58
const std::string & name() const noexcept
Definition symbol.cc:51
Definition terminal.h:41
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