summaryrefslogtreecommitdiff
path: root/src/MemoryData.h
blob: b290c36e264dd9c01de3aa950a47dac4be8ca7a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#ifndef ARZU_INTERPRETER_MEMORY_DATA
#define ARZU_INTERPRETER_MEMORY_DATA

#include <list>
#include <string>
using namespace std;

class MemoryData {
public:
	enum Type {
		TNone,
		TName,
		TFunc,
		TInt,
	};

protected:
	Type type;

public:

	Type get_type() const;
	virtual MemoryData* clone();

	MemoryData();
	virtual ~MemoryData() = default;
};

struct Name : public MemoryData {
	string value;
	Name();
	Name(string&);

	MemoryData* clone() override;
};

struct Int : public MemoryData {
	int value;
	Int(int);

	MemoryData* clone() override;
};

struct Function : public MemoryData {
	list<string> argumentNames;
	int scopeStart;
	int scopeEnd;
	Function(list<string>, int, int);

	MemoryData* clone() override;
};

#endif