388 ExpressionValue* Expression::evaluateOperator (const ExpressionOperator* op, |
388 ExpressionValue* Expression::evaluateOperator (const ExpressionOperator* op, |
389 const List<ExpressionValue*>& values) |
389 const List<ExpressionValue*>& values) |
390 { |
390 { |
391 const OperatorInfo* info = &g_Operators[op->id()]; |
391 const OperatorInfo* info = &g_Operators[op->id()]; |
392 bool isconstexpr = true; |
392 bool isconstexpr = true; |
393 assert (values.size() == info->numoperands); |
393 ASSERT_EQ (values.size(), info->numoperands) |
394 |
394 |
395 for (ExpressionValue* val : values) |
395 for (ExpressionValue* val : values) |
396 { |
396 { |
397 if (val->isConstexpr() == false) |
397 if (val->isConstexpr() == false) |
398 { |
398 { |
577 m_symbols.removeAt (i); |
577 m_symbols.removeAt (i); |
578 |
578 |
579 m_symbols.insert (lower, newvalue); |
579 m_symbols.insert (lower, newvalue); |
580 } |
580 } |
581 |
581 |
582 assert (m_symbols.size() == 1 && m_symbols.first()->type() == EXPRSYM_Value); |
582 ASSERT_EQ (m_symbols.size(), 1) |
|
583 ASSERT_EQ (m_symbols.first()->type(), EXPRSYM_Value) |
583 ExpressionValue* val = static_cast<ExpressionValue*> (m_symbols.first()); |
584 ExpressionValue* val = static_cast<ExpressionValue*> (m_symbols.first()); |
584 return val; |
585 return val; |
585 } |
586 } |
586 |
587 |
587 // ============================================================================= |
588 // ============================================================================= |