hoolang/Node.hpp

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;
};