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

Function checkTypeCombination

lib/checktype.cpp:315–337  ·  view source on GitHub ↗

--------------------------------------------------------------------------- Checking for long cast of int result const long x = var1 * var2; ---------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

313// Checking for long cast of int result const long x = var1 * var2;
314//---------------------------------------------------------------------------
315static bool checkTypeCombination(ValueType src, ValueType tgt, const Settings& settings)
316{
317 static const std::pair<ValueType::Type, ValueType::Type> typeCombinations[] = {
318 { ValueType::Type::INT, ValueType::Type::LONG },
319 { ValueType::Type::INT, ValueType::Type::LONGLONG },
320 { ValueType::Type::LONG, ValueType::Type::LONGLONG },
321 { ValueType::Type::FLOAT, ValueType::Type::DOUBLE },
322 { ValueType::Type::FLOAT, ValueType::Type::LONGDOUBLE },
323 { ValueType::Type::DOUBLE, ValueType::Type::LONGDOUBLE },
324 };
325
326 src.reference = Reference::None;
327 tgt.reference = Reference::None;
328
329 const std::size_t sizeSrc = src.getSizeOf(settings, ValueType::Accuracy::ExactOrZero, ValueType::SizeOf::Pointer);
330 const std::size_t sizeTgt = tgt.getSizeOf(settings, ValueType::Accuracy::ExactOrZero, ValueType::SizeOf::Pointer);
331 if (!(sizeSrc > 0 && sizeTgt > 0 && sizeSrc < sizeTgt))
332 return false;
333
334 return std::any_of(std::begin(typeCombinations), std::end(typeCombinations), [&](const std::pair<ValueType::Type, ValueType::Type>& p) {
335 return src.type == p.first && tgt.type == p.second;
336 });
337}
338
339void CheckTypeImpl::checkLongCast()
340{

Callers 1

checkLongCastMethod · 0.85

Calls 3

getSizeOfMethod · 0.80
beginFunction · 0.70
endFunction · 0.70

Tested by

no test coverage detected