Tokenizer: Added MAXTIME so cppcheck can be compiled with a hard max time. Will be used for the daca2.

This commit is contained in:
Daniel Marjamäki 2013-11-02 17:31:14 +01:00
parent e948f4c9ee
commit f0a621a952
2 changed files with 21 additions and 0 deletions

View File

@ -43,6 +43,9 @@ Tokenizer::Tokenizer() :
_varId(0), _varId(0),
_codeWithTemplates(false), //is there any templates? _codeWithTemplates(false), //is there any templates?
m_timerResults(NULL) m_timerResults(NULL)
#ifdef MAXTIME
,maxtime(std::time(0) + MAXTIME)
#endif
{ {
} }
@ -54,6 +57,9 @@ Tokenizer::Tokenizer(const Settings *settings, ErrorLogger *errorLogger) :
_varId(0), _varId(0),
_codeWithTemplates(false), //is there any templates? _codeWithTemplates(false), //is there any templates?
m_timerResults(NULL) m_timerResults(NULL)
#ifdef MAXTIME
,maxtime(std::time(0) + MAXTIME)
#endif
{ {
// make sure settings are specified // make sure settings are specified
assert(_settings); assert(_settings);
@ -514,6 +520,11 @@ void Tokenizer::simplifyTypedef()
if (_settings && _settings->terminated()) if (_settings && _settings->terminated())
return; return;
#ifdef MAXTIME
if (std::time(0) > maxtime)
return;
#endif
if (goback) { if (goback) {
//jump back once, see the comment at the end of the function //jump back once, see the comment at the end of the function
goback = false; goback = false;
@ -6458,6 +6469,11 @@ bool Tokenizer::simplifyKnownVariablesSimplify(Token **tok2, Token *tok3, unsign
if (_errorLogger && !list.getFiles().empty()) if (_errorLogger && !list.getFiles().empty())
_errorLogger->reportProgress(list.getFiles()[0], "Tokenize (simplifyKnownVariables)", tok3->progressValue()); _errorLogger->reportProgress(list.getFiles()[0], "Tokenize (simplifyKnownVariables)", tok3->progressValue());
#ifdef MAXTIME
if (std::time(0) > maxtime)
return false;
#endif
bool ret = false; bool ret = false;
Token* bailOutFromLoop = 0; Token* bailOutFromLoop = 0;

View File

@ -28,6 +28,7 @@
#include <string> #include <string>
#include <map> #include <map>
#include <list> #include <list>
#include <ctime>
class Settings; class Settings;
class SymbolDatabase; class SymbolDatabase;
@ -806,6 +807,10 @@ private:
* TimerResults * TimerResults
*/ */
TimerResults *m_timerResults; TimerResults *m_timerResults;
#ifdef MAXTIME
/** Tokenizer maxtime */
std::time_t maxtime;
#endif
}; };
/// @} /// @}