gfy-cpp
Loading...
Searching...
No Matches
memory.hpp
Go to the documentation of this file.
1#ifndef __MEMORY_HPP__
2#define __MEMORY_HPP__
3
4#include "token.hpp"
5
6#include <string>
7#include <variant>
8#include <vector>
9#include <map>
10#include <memory>
11
12using namespace std;
13
20struct variable_t {
21 variant<int, float, string, bool> value;
23 bool strongly_typed = false;
24};
25
32struct function_t {
33 vector<variable_t> args;
34 vector<Token> body;
35};
36
44class Memory {
45 public:
56 static int cast_int(const unique_ptr<variable_t>& var);
57
68 static float cast_float(const unique_ptr<variable_t>& var);
69
80 static string cast_string(const unique_ptr<variable_t>& var);
81
92 static bool cast_boolean(const unique_ptr<variable_t>& var);
93
101 void set_variable(const string& name, const variable_t& value);
102
111 unique_ptr<variable_t> get_variable(const string& name);
112
122 void add_function(const string& name, const function_t& func);
123
124 // TODO: add a function to get a function from the memory
125
126 private:
127 map<string, variable_t> variables;
128 map<string, function_t> functions;
129
130};
131
132#endif // __MEMORY_HPP__
Memory class.
Definition memory.hpp:44
static int cast_int(const unique_ptr< variable_t > &var)
Cast a variable to integer.
Definition memory.cpp:5
static bool cast_boolean(const unique_ptr< variable_t > &var)
Cast a variable to boolean.
Definition memory.cpp:26
static string cast_string(const unique_ptr< variable_t > &var)
Cast a variable to string.
Definition memory.cpp:19
unique_ptr< variable_t > get_variable(const string &name)
Get the variable value.
Definition memory.cpp:37
static float cast_float(const unique_ptr< variable_t > &var)
Cast a variable to float.
Definition memory.cpp:12
void set_variable(const string &name, const variable_t &value)
Set the variable value.
Definition memory.cpp:33
map< string, variable_t > variables
Definition memory.hpp:127
map< string, function_t > functions
Definition memory.hpp:128
void add_function(const string &name, const function_t &func)
Add a function to the memory.
Definition memory.cpp:44
Function type.
Definition memory.hpp:32
vector< Token > body
Definition memory.hpp:34
vector< variable_t > args
Definition memory.hpp:33
Variable type.
Definition memory.hpp:20
variant< int, float, string, bool > value
Definition memory.hpp:21
bool strongly_typed
Definition memory.hpp:23
Type type
Definition memory.hpp:22
Type
Token types.
Definition token.hpp:12