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

Function compareKnownValue

lib/astutils.cpp:1424–1443  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1422}
1423
1424static bool compareKnownValue(const Token * const tok1, const Token * const tok2, const std::function<bool(const ValueFlow::Value&, const ValueFlow::Value&, bool)> &compare)
1425{
1426 static const auto isKnownFn = std::mem_fn(&ValueFlow::Value::isKnown);
1427
1428 const auto v1 = std::find_if(tok1->values().cbegin(), tok1->values().cend(), isKnownFn);
1429 if (v1 == tok1->values().end()) {
1430 return false;
1431 }
1432 if (v1->isNonValue() || v1->isContainerSizeValue() || v1->isBufferSizeValue() || v1->isSymbolicValue())
1433 return false;
1434 const auto v2 = std::find_if(tok2->values().cbegin(), tok2->values().cend(), isKnownFn);
1435 if (v2 == tok2->values().end()) {
1436 return false;
1437 }
1438 if (v1->valueType != v2->valueType) {
1439 return false;
1440 }
1441 const bool sameLifetime = isSameLifetime(tok1, tok2);
1442 return compare(*v1, *v2, sameLifetime);
1443}
1444
1445bool isEqualKnownValue(const Token * const tok1, const Token * const tok2)
1446{

Callers 2

isEqualKnownValueFunction · 0.85
isDifferentKnownValuesFunction · 0.85

Calls 2

isSameLifetimeFunction · 0.85
endMethod · 0.45

Tested by

no test coverage detected