11#ifndef O2_FRAMEWORK_EXPRESSIONS_HELPERS_H_
12#define O2_FRAMEWORK_EXPRESSIONS_HELPERS_H_
16#include <fmt/format.h>
23 using datum_t = std::variant<std::monostate, size_t, LiteralNode::var_t, std::string>;
26 atype::type
type = atype::NA;
30 explicit DatumSpec(std::string binding,
size_t hash_, atype::type type_) :
datum{binding},
hash{hash_},
type{type_} {}
49 atype::type
type = atype::NA;
87 return this->node_ptr != rhs.node_ptr;
GLint GLint GLsizei GLint GLenum GLenum type
bool operator==(DatumSpec const &lhs, DatumSpec const &rhs)
std::ostream & operator<<(std::ostream &os, DatumSpec const &spec)
ColumnOperationSpec(BasicOp op_, size_t index_=0)
ColumnOperationSpec()=default
DatumSpec(size_t index, atype::type type_)
DatumSpec(std::string binding, size_t hash_, atype::type type_)
DatumSpec & operator=(DatumSpec &&)=default
DatumSpec(DatumSpec &&)=default
std::variant< std::monostate, size_t, LiteralNode::var_t, std::string > datum_t
datum spec either contains an index, a value of a literal or a binding label
DatumSpec & operator=(DatumSpec const &)=default
DatumSpec(DatumSpec const &)=default
DatumSpec(LiteralNode::var_t literal, atype::type type_)
LiteralValue::stored_type var_t
helper struct used to parse trees
bool operator!=(NodeRecord const &rhs)
Node * node_ptr
pointer to the actual tree node
NodeRecord(Node *node_, size_t index_)