* @throws std::runtime_error thrown on invalid literals, missing sizeof arguments or invalid expressions, * missing __has_include() arguments or expressions, undefined function-like macros, invalid number literals * @throws std::overflow_error thrown on overflow or division by zero */
| 3003 | * @throws std::overflow_error thrown on overflow or division by zero |
| 3004 | */ |
| 3005 | static long long evaluate(simplecpp::TokenList &expr, const simplecpp::DUI &dui, const std::map<std::string, std::size_t> &sizeOfType) |
| 3006 | { |
| 3007 | simplifyComments(expr); |
| 3008 | simplifySizeof(expr, sizeOfType); |
| 3009 | simplifyHasInclude(expr, dui); |
| 3010 | simplifyName(expr); |
| 3011 | simplifyNumbers(expr); |
| 3012 | expr.constFold(); |
| 3013 | // TODO: handle invalid expressions |
| 3014 | return expr.cfront() && expr.cfront() == expr.cback() && expr.cfront()->number ? stringToLL(expr.cfront()->str()) : 0LL; |
| 3015 | } |
| 3016 | |
| 3017 | static const simplecpp::Token *gotoNextLine(const simplecpp::Token *tok) |
| 3018 | { |
no test coverage detected