Skip to content

Commit 370672c

Browse files
committed
Tokenizer: small construction cleanup
1 parent 367847c commit 370672c

File tree

8 files changed

+14
-48
lines changed

8 files changed

+14
-48
lines changed

lib/cppcheck.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -871,8 +871,7 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
871871
continue;
872872
}
873873

874-
Tokenizer tokenizer(&mSettings, this);
875-
tokenizer.setPreprocessor(&preprocessor);
874+
Tokenizer tokenizer(&mSettings, this, &preprocessor);
876875
if (mSettings.showtime != SHOWTIME_MODES::SHOWTIME_NONE)
877876
tokenizer.setTimerResults(&s_timerResults);
878877

lib/importproject.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,7 @@ namespace {
588588
// TODO : Better evaluation
589589
Settings s;
590590
std::istringstream istr(c);
591-
Tokenizer tokenizer(&s, nullptr);
591+
Tokenizer tokenizer(&s);
592592
tokenizer.tokenize(istr,"vcxproj");
593593
for (const Token *tok = tokenizer.tokens(); tok; tok = tok->next()) {
594594
if (tok->str() == "(" && tok->astOperand1() && tok->astOperand2()) {

lib/tokenize.cpp

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -155,35 +155,20 @@ static bool isClassStructUnionEnumStart(const Token * tok)
155155

156156
//---------------------------------------------------------------------------
157157

158-
Tokenizer::Tokenizer() :
159-
list(nullptr),
160-
mSettings(nullptr),
161-
mErrorLogger(nullptr),
162-
mSymbolDatabase(nullptr),
163-
mTemplateSimplifier(nullptr),
164-
mVarId(0),
165-
mUnnamedCount(0),
166-
mCodeWithTemplates(false), //is there any templates?
167-
mTimerResults(nullptr),
168-
mPreprocessor(nullptr)
169-
{}
170-
171-
Tokenizer::Tokenizer(const Settings *settings, ErrorLogger *errorLogger) :
158+
Tokenizer::Tokenizer(const Settings *settings, ErrorLogger *errorLogger, const Preprocessor *preprocessor) :
172159
list(settings),
173160
mSettings(settings),
174161
mErrorLogger(errorLogger),
175162
mSymbolDatabase(nullptr),
176-
mTemplateSimplifier(nullptr),
163+
mTemplateSimplifier(new TemplateSimplifier(this)),
177164
mVarId(0),
178165
mUnnamedCount(0),
179166
mCodeWithTemplates(false), //is there any templates?
180167
mTimerResults(nullptr),
181-
mPreprocessor(nullptr)
168+
mPreprocessor(preprocessor)
182169
{
183170
// make sure settings are specified
184171
assert(mSettings);
185-
186-
mTemplateSimplifier = new TemplateSimplifier(this);
187172
}
188173

189174
Tokenizer::~Tokenizer()
@@ -2768,16 +2753,11 @@ bool Tokenizer::simplifyUsing()
27682753
bool Tokenizer::createTokens(std::istream &code,
27692754
const std::string& FileName)
27702755
{
2771-
// make sure settings specified
2772-
assert(mSettings);
2773-
27742756
return list.createTokens(code, FileName);
27752757
}
27762758

27772759
void Tokenizer::createTokens(simplecpp::TokenList&& tokenList)
27782760
{
2779-
// make sure settings specified
2780-
assert(mSettings);
27812761
list.createTokens(std::move(tokenList));
27822762
}
27832763

@@ -9860,6 +9840,7 @@ void Tokenizer::simplifyNamespaceAliases()
98609840

98619841
bool Tokenizer::hasIfdef(const Token *start, const Token *end) const
98629842
{
9843+
assert(mPreprocessor);
98639844
if (!mPreprocessor)
98649845
return false;
98659846
return std::any_of(mPreprocessor->getDirectives().cbegin(), mPreprocessor->getDirectives().cend(), [&](const Directive& d) {

lib/tokenize.h

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ class CPPCHECKLIB Tokenizer {
5959
friend class TemplateSimplifier;
6060

6161
public:
62-
Tokenizer();
63-
Tokenizer(const Settings * settings, ErrorLogger *errorLogger);
62+
Tokenizer(const Settings * settings, ErrorLogger *errorLogger = nullptr, const Preprocessor *preprocessor = nullptr);
6463
~Tokenizer();
6564

6665
void setTimerResults(TimerResults *tr) {
@@ -377,9 +376,6 @@ class CPPCHECKLIB Tokenizer {
377376
*/
378377
static const Token * isFunctionHead(const Token *tok, const std::string &endsWith, bool cpp);
379378

380-
void setPreprocessor(const Preprocessor *preprocessor) {
381-
mPreprocessor = preprocessor;
382-
}
383379
const Preprocessor *getPreprocessor() const {
384380
return mPreprocessor;
385381
}
@@ -626,12 +622,6 @@ class CPPCHECKLIB Tokenizer {
626622
return mCodeWithTemplates;
627623
}
628624

629-
630-
void setSettings(const Settings *settings) {
631-
mSettings = settings;
632-
list.setSettings(settings);
633-
}
634-
635625
const SymbolDatabase *getSymbolDatabase() const {
636626
return mSymbolDatabase;
637627
}
@@ -707,15 +697,15 @@ class CPPCHECKLIB Tokenizer {
707697
void setPodTypes();
708698

709699
/** settings */
710-
const Settings * mSettings;
700+
const Settings * const mSettings;
711701

712702
/** errorlogger */
713703
ErrorLogger* const mErrorLogger;
714704

715705
/** Symbol database that all checks etc can use */
716706
SymbolDatabase *mSymbolDatabase;
717707

718-
TemplateSimplifier *mTemplateSimplifier;
708+
TemplateSimplifier * const mTemplateSimplifier;
719709

720710
/** E.g. "A" for code where "#ifdef A" is true. This is used to
721711
print additional information in error situations. */
@@ -750,7 +740,7 @@ class CPPCHECKLIB Tokenizer {
750740
*/
751741
TimerResults *mTimerResults;
752742

753-
const Preprocessor *mPreprocessor;
743+
const Preprocessor * const mPreprocessor;
754744
};
755745

756746
/// @}

test/testbufferoverrun.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,9 @@ class TestBufferOverrun : public TestFixture {
103103
preprocessor.setDirectives(tokens1);
104104

105105
// Tokenizer..
106-
Tokenizer tokenizer(settings, this);
106+
Tokenizer tokenizer(settings, this, &preprocessor);
107107
tokenizer.createTokens(std::move(tokens2));
108108
tokenizer.simplifyTokens1("");
109-
tokenizer.setPreprocessor(&preprocessor);
110109

111110
// Check for buffer overruns..
112111
runChecks<CheckBufferOverrun>(&tokenizer, settings, this);

test/testcondition.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,9 @@ class TestCondition : public TestFixture {
161161
preprocessor.setDirectives(tokens1);
162162

163163
// Tokenizer..
164-
Tokenizer tokenizer(settings, this);
164+
Tokenizer tokenizer(settings, this, &preprocessor);
165165
tokenizer.createTokens(std::move(tokens2));
166166
tokenizer.simplifyTokens1("");
167-
tokenizer.setPreprocessor(&preprocessor);
168167

169168
// Run checks..
170169
runChecks<CheckCondition>(&tokenizer, settings, this);

test/testother.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,10 +349,9 @@ class TestOther : public TestFixture {
349349
preprocessor.setDirectives(tokens1);
350350

351351
// Tokenizer..
352-
Tokenizer tokenizer(settings, this);
352+
Tokenizer tokenizer(settings, this, &preprocessor);
353353
tokenizer.createTokens(std::move(tokens2));
354354
tokenizer.simplifyTokens1("");
355-
tokenizer.setPreprocessor(&preprocessor);
356355

357356
// Check..
358357
runChecks<CheckOther>(&tokenizer, settings, this);

test/testunusedvar.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,7 @@ class TestUnusedVar : public TestFixture {
256256
preprocessor.setDirectives(*directives);
257257

258258
// Tokenize..
259-
Tokenizer tokenizer(&settings, this);
260-
tokenizer.setPreprocessor(&preprocessor);
259+
Tokenizer tokenizer(&settings, this, &preprocessor);
261260
std::istringstream istr(code);
262261
ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line);
263262

0 commit comments

Comments
 (0)