Go to the documentation of this file. 1 #ifndef EXPR_EXPRNODE_H
2 #define EXPR_EXPRNODE_H
33 template<
class ...UniquePtrs>
35 TreeNode(tag,
std::forward<UniquePtrs>(input)...) {}
41 virtual Datum Eval(
const std::vector<NullableDatumRef>& record)
const = 0;
44 virtual Datum Eval(
const char* record)
const = 0;
47 std::shared_ptr<const SysTable_Type>
ReturnType()
const {
52 std::shared_ptr<const SysTable_Type>
m_type;
57 #endif // QUERY_EXPR_EXPRNODE_H
TreeNode is the base class of all tree structures in TDB (e.g., parsing tree, logical plan,...
Definition: TreeNode.h:45
virtual Datum Eval(const std::vector< NullableDatumRef > &record) const =0
Evaluate function upon a deserialized record.
std::shared_ptr< const SysTable_Type > ReturnType() const
Derive the return type of this expression.
Definition: ExprNode.h:47
virtual ~ExprNode()
Deconstructor.
Definition: ExprNode.h:38
ExprNode is an abstract class of all expressions.
Definition: ExprNode.h:20
A Datum stores and possibly manage the memory resource of a read-only value of a plain fixed-length C...
Definition: datum.h:250
std::shared_ptr< const SysTable_Type > m_type
Definition: ExprNode.h:52
ExprNode(NodeTag tag, UniquePtrs &&...input)
Base constructor for all expression nodes.
Definition: ExprNode.h:34
NodeTag
Definition: NodeTag.h:12