MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / evalAssignment

Function evalAssignment

lib/vf_analyzers.cpp:493–510  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

491 }
492
493 template<class Value, REQUIRES("Value must ValueFlow::Value", std::is_convertible<Value&, const ValueFlow::Value&> )>
494 static bool evalAssignment(Value& lhsValue, const std::string& assign, const ValueFlow::Value& rhsValue)
495 {
496 bool error = false;
497 if (lhsValue.isSymbolicValue() && rhsValue.isIntValue()) {
498 if (assign != "+=" && assign != "-=")
499 return false;
500 assignValueIfMutable(lhsValue.intvalue, calculateAssign(assign, lhsValue.intvalue, rhsValue.intvalue, &error));
501 } else if (lhsValue.isIntValue() && rhsValue.isIntValue()) {
502 assignValueIfMutable(lhsValue.intvalue, calculateAssign(assign, lhsValue.intvalue, rhsValue.intvalue, &error));
503 } else if (lhsValue.isFloatValue() && rhsValue.isIntValue()) {
504 assignValueIfMutable(lhsValue.floatValue,
505 calculateAssign(assign, lhsValue.floatValue, rhsValue.intvalue, &error));
506 } else {
507 return false;
508 }
509 return !error;
510 }
511
512 const Token* findMatch(const Token* tok) const
513 {

Callers 2

isWritableFunction · 0.85
writeValueFunction · 0.85

Calls 2

assignValueIfMutableFunction · 0.85
calculateAssignFunction · 0.85

Tested by

no test coverage detected