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

Function getCondTokFromEndImpl

lib/astutils.cpp:861–876  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

859}
860
861template<class T, REQUIRES("T must be a Token class", std::is_convertible<T*, const Token*> )>
862static T* getCondTokFromEndImpl(T* endBlock)
863{
864 if (!Token::simpleMatch(endBlock, "}"))
865 return nullptr;
866 T* startBlock = endBlock->link();
867 if (!Token::simpleMatch(startBlock, "{"))
868 return nullptr;
869 if (Token::simpleMatch(startBlock->previous(), "do"))
870 return getCondTok(startBlock->previous());
871 if (Token::simpleMatch(startBlock->previous(), ")"))
872 return getCondTok(startBlock->linkAt(-1));
873 if (Token::simpleMatch(startBlock->tokAt(-2), "} else {"))
874 return getCondTokFromEnd(startBlock->tokAt(-2));
875 return nullptr;
876}
877
878template<class T, REQUIRES("T must be a Token class", std::is_convertible<T*, const Token*> )>
879static T* getInitTokImpl(T* tok)

Callers 1

getCondTokFromEndFunction · 0.85

Calls 5

getCondTokFunction · 0.85
getCondTokFromEndFunction · 0.85
linkAtMethod · 0.80
simpleMatchFunction · 0.70
tokAtMethod · 0.45

Tested by

no test coverage detected