7 #include <hilti/ast/expression.h> 14 Ternary(Expression cond, Expression true_, Expression false_,
Meta m =
Meta())
15 :
NodeBase({std::move(cond), std::move(true_), std::move(false_)}, std::move(m)) {}
17 const auto& condition()
const {
return child<Expression>(0); }
18 const auto& true_()
const {
return child<Expression>(1); }
19 const auto& false_()
const {
return child<Expression>(2); }
21 bool operator==(
const Ternary& other)
const {
22 return condition() == other.condition() && true_() == other.true_() && false_() == other.false_();
25 void setFalse(
const Expression& expr) {
children()[2] = expr; }
28 bool isLhs()
const {
return false; }
30 bool isTemporary()
const {
return true_().isTemporary() || false_().isTemporary(); }
33 return true_().type();
38 auto isEqual(
const Expression& other)
const {
return node::isEqual(
this, other); }
auto isEqual(const Expression &other) const
Definition: ternary.h:38
bool isTemporary() const
Definition: ternary.h:30
bool isLhs() const
Definition: ternary.h:28
const auto & children() const
Definition: node.h:471
Definition: expression.h:18
auto properties() const
Definition: ternary.h:41
auto isConstant() const
Definition: ternary.h:36
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:97
const Type & type() const
Definition: ternary.h:32
Definition: expression.h:21