38 lines
783 B
C++
38 lines
783 B
C++
#pragma once
|
|
|
|
#include <llvm/IR/Value.h>
|
|
|
|
enum NodeType
|
|
{
|
|
NODE_IGNORE,
|
|
NODE_LITERAL
|
|
};
|
|
|
|
enum DataType
|
|
{
|
|
DATATYPE_VOID,
|
|
DATATYPE_INTEGER,
|
|
DATATYPE_FLOAT,
|
|
DATATYPE_BOOL,
|
|
DATATYPE_CHAR,
|
|
DATATYPE_STRING
|
|
};
|
|
|
|
class Node
|
|
{
|
|
private:
|
|
NodeType _nodeType;
|
|
DataType _dataType;
|
|
llvm::Value *_value;
|
|
|
|
public:
|
|
Node(NodeType nodeType, DataType dataType, llvm::Value *value) : _nodeType(nodeType), _dataType(dataType), _value(value) {}
|
|
Node(const Node &other) : _nodeType(other._nodeType), _dataType(other._dataType), _value(other._value) {}
|
|
|
|
NodeType getNodeType() const { return _nodeType; }
|
|
DataType getDataType() const { return _dataType; }
|
|
llvm::Value *getValue() const { return _value; }
|
|
|
|
public:
|
|
virtual ~Node() = default;
|
|
}; |