bool Option::Load(int &option, ExpressionPtr value) { ScalarExpressionPtr v = dynamic_pointer_cast<ScalarExpression>(value); if (!v || !v->isLiteralInteger()) { Logger::Error("Line %d: invalid integer: %s", value->getLocation()->line1, value->getText().c_str()); return false; } option = v->getLiteralInteger(); return true; }
bool ArrayPairExpression::outputCPPName(CodeGenerator &cg, AnalysisResultPtr ar) { assert(m_name); ScalarExpressionPtr sc = dynamic_pointer_cast<ScalarExpression>(m_name); if (sc) { if (sc->isLiteralString()) { string s = sc->getLiteralString(); int64 res; if (is_strictly_integer(s.c_str(), s.size(), res)) { cg_printf("%sL", s.c_str()); } else { m_name->outputCPP(cg, ar); } return true; } if (sc->isLiteralInteger()) { m_name->outputCPP(cg, ar); return true; } } m_name->outputCPP(cg, ar); return false; }
bool CaseStatement::isLiteralInteger() const { if (!m_condition->is(Expression::KindOfScalarExpression)) return false; ScalarExpressionPtr exp = dynamic_pointer_cast<ScalarExpression>(m_condition); return exp->isLiteralInteger(); }