8 #include <hilti/ast/expression.h> 9 #include <hilti/ast/operator.h> 10 #include <hilti/ast/types/unknown.h> 13 namespace expression {
19 :
NodeBase(nodes(std::move(operands)), std::move(
meta)), _kind(op) {}
21 auto kind()
const {
return _kind; }
25 if ( _cache.operands.empty() )
26 _cache.operands = childs<Expression>(0, -1);
28 return _cache.operands;
32 return kind() == other.kind() &&
operands() == other.operands();
38 bool isLhs()
const {
return false; }
42 auto type()
const {
return type::unknown; }
46 auto isEqual(
const Expression& other)
const {
return node::isEqual(
this, other); }
51 void clearCache() { _cache.operands.clear(); }
54 operator_::Kind _kind;
56 mutable struct { std::vector<Expression>
operands; } _cache;
auto isConstant() const
Definition: unresolved-operator.h:44
Definition: unresolved-operator.h:16
Definition: expression.h:16
bool isTemporary() const
Definition: unresolved-operator.h:40
const auto & operands() const
Definition: unresolved-operator.h:24
auto isEqual(const Expression &other) const
Definition: unresolved-operator.h:46
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:83
bool isLhs() const
Definition: unresolved-operator.h:38
auto properties() const
Definition: unresolved-operator.h:49
auto type() const
Definition: unresolved-operator.h:42
auto & meta() const
Definition: node.h:449