| 3350 | } |
| 3351 | |
| 3352 | bool isLikelyStreamRead(const Token *op) |
| 3353 | { |
| 3354 | if (!op) |
| 3355 | return false; |
| 3356 | |
| 3357 | if (!op->isCpp()) |
| 3358 | return false; |
| 3359 | |
| 3360 | if (!Token::Match(op, "&|>>") || !op->isBinaryOp()) |
| 3361 | return false; |
| 3362 | |
| 3363 | if (!Token::Match(op->astOperand2(), "%name%|.|*|[") && op->str() != op->astOperand2()->str()) |
| 3364 | return false; |
| 3365 | |
| 3366 | const Token *parent = op; |
| 3367 | while (parent->astParent() && parent->astParent()->str() == op->str()) |
| 3368 | parent = parent->astParent(); |
| 3369 | if (parent->astParent() && !Token::Match(parent->astParent(), "%oror%|&&|(|,|.|!|;|return")) |
| 3370 | return false; |
| 3371 | if (op->str() == "&" && parent->astParent()) |
| 3372 | return false; |
| 3373 | if (!parent->astOperand1() || !parent->astOperand2()) |
| 3374 | return false; |
| 3375 | return (!parent->astOperand1()->valueType() || !parent->astOperand1()->valueType()->isIntegral()); |
| 3376 | } |
| 3377 | |
| 3378 | bool isCPPCast(const Token* tok) |
| 3379 | { |
no test coverage detected