-
Notifications
You must be signed in to change notification settings - Fork 0
/
TypeDescriptor.hpp
72 lines (59 loc) · 2.15 KB
/
TypeDescriptor.hpp
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//
// Created by smith on 3/18/2019.
//
#ifndef EXPRINTER_TYPEDESCRIPTOR_HPP
#define EXPRINTER_TYPEDESCRIPTOR_HPP
#include <vector>
#include <iostream>
class TypeDescriptor {
public:
enum types { INTEGER, DOUBLE, STRING, BOOL, ARRAY, null };
int getIntValue();
std::string getStringValue();
double getDoubleValue();
bool getBoolValue();
types getTypeValue();
bool isEqual( int b);
TypeDescriptor createArray();
TypeDescriptor push(TypeDescriptor a);
TypeDescriptor pop();
int length();
int typeLength(TypeDescriptor a);
TypeDescriptor &operator [] (int);
TypeDescriptor turnIntoArray();
TypeDescriptor removeComma(TypeDescriptor a);
TypeDescriptor keepTogether(TypeDescriptor a, TypeDescriptor b);
TypeDescriptor floorDivision(TypeDescriptor a, TypeDescriptor b);
TypeDescriptor & operator = (const int &d);
TypeDescriptor & operator = (const double &d);
TypeDescriptor & operator = (const std::string &d);
TypeDescriptor & operator = (const bool &d);
//Operations
friend std::ostream & operator << (std::ostream &out, const TypeDescriptor &c);
TypeDescriptor operator - ();
TypeDescriptor operator + ( TypeDescriptor &d);
TypeDescriptor operator == ( TypeDescriptor &d);
TypeDescriptor operator - ( TypeDescriptor &d);
TypeDescriptor operator * ( TypeDescriptor &d);
TypeDescriptor operator / ( TypeDescriptor &d);
TypeDescriptor operator % ( TypeDescriptor &d);
TypeDescriptor operator > ( TypeDescriptor &d);
TypeDescriptor operator >= ( TypeDescriptor &d);
TypeDescriptor operator < ( TypeDescriptor &d);
TypeDescriptor operator <= ( TypeDescriptor &d);
TypeDescriptor operator != ( TypeDescriptor &d);
TypeDescriptor operator || ( TypeDescriptor &d);
TypeDescriptor operator && ( TypeDescriptor &d);
TypeDescriptor operator ! ( void );
TypeDescriptor();
~TypeDescriptor();
private:
int _intValue = 0;
std::string _stringValue = "";
double _doubleValue = 0.0;
bool _boolValue;
std::vector<TypeDescriptor> _arrayValue;
int _arraySize = 0;
types _type = null;
};
#endif //EXPRINTER_TYPEDESCRIPTOR_HPP