Skip to content

Commit 20db3ff

Browse files
authored
SymbolDatabase: made mTokenizer and mSettings references (#4857)
1 parent a3cacf1 commit 20db3ff

9 files changed

Lines changed: 161 additions & 161 deletions

lib/astutils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,7 @@ std::vector<ValueType> getParentValueTypes(const Token* tok, const Settings* set
717717
const ValueType* vtCont = contTok->valueType();
718718
if (!vtCont->containerTypeToken)
719719
return {};
720-
ValueType vtParent = ValueType::parseDecl(vtCont->containerTypeToken, settings, true); // TODO: set isCpp
720+
ValueType vtParent = ValueType::parseDecl(vtCont->containerTypeToken, *settings, true); // TODO: set isCpp
721721
return {std::move(vtParent)};
722722
}
723723
if (Token::Match(tok->astParent(), "return|(|{|%assign%") && parent) {

lib/checkclass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2980,7 +2980,7 @@ void CheckClass::checkThisUseAfterFree()
29802980
for (const Variable &var : classScope->varlist) {
29812981
// Find possible "self pointer".. pointer/smartpointer member variable of "self" type.
29822982
if (var.valueType() && var.valueType()->smartPointerType != classScope->definedType && var.valueType()->typeScope != classScope) {
2983-
const ValueType valueType = ValueType::parseDecl(var.typeStartToken(), mSettings, true); // this is only called for C++
2983+
const ValueType valueType = ValueType::parseDecl(var.typeStartToken(), *mSettings, true); // this is only called for C++
29842984
if (valueType.smartPointerType != classScope->definedType)
29852985
continue;
29862986
}

lib/checktype.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ void CheckType::checkFloatToIntegerOverflow()
407407
while (scope && scope->type != Scope::ScopeType::eLambda && scope->type != Scope::ScopeType::eFunction)
408408
scope = scope->nestedIn;
409409
if (scope && scope->type == Scope::ScopeType::eFunction && scope->function && scope->function->retDef) {
410-
const ValueType &valueType = ValueType::parseDecl(scope->function->retDef, mSettings, mTokenizer->isCPP());
410+
const ValueType &valueType = ValueType::parseDecl(scope->function->retDef, *mSettings, mTokenizer->isCPP());
411411
vtfloat = tok->astOperand1()->valueType();
412412
checkFloatToIntegerOverflow(tok, &valueType, vtfloat, tok->astOperand1()->values());
413413
}

lib/clangimport.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ void clangimport::AstNode::setValueType(Token *tok)
630630
if (!decl.front())
631631
break;
632632

633-
const ValueType valueType = ValueType::parseDecl(decl.front(), mData->mSettings, true); // TODO: set isCpp
633+
const ValueType valueType = ValueType::parseDecl(decl.front(), *mData->mSettings, true); // TODO: set isCpp
634634
if (valueType.type != ValueType::Type::UNKNOWN_TYPE) {
635635
tok->setValueType(new ValueType(valueType));
636636
break;
@@ -1543,7 +1543,7 @@ static void setValues(Tokenizer *tokenizer, SymbolDatabase *symbolDatabase)
15431543

15441544
for (Token *tok = const_cast<Token*>(tokenizer->tokens()); tok; tok = tok->next()) {
15451545
if (Token::simpleMatch(tok, "sizeof (")) {
1546-
ValueType vt = ValueType::parseDecl(tok->tokAt(2), settings, tokenizer->isCPP());
1546+
ValueType vt = ValueType::parseDecl(tok->tokAt(2), *settings, tokenizer->isCPP());
15471547
const int sz = vt.typeSize(settings->platform, true);
15481548
if (sz <= 0)
15491549
continue;

lib/symboldatabase.cpp

Lines changed: 138 additions & 138 deletions
Large diffs are not rendered by default.

lib/symboldatabase.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1325,7 +1325,7 @@ class CPPCHECKLIB ValueType {
13251325
debugPath()
13261326
{}
13271327

1328-
static ValueType parseDecl(const Token *type, const Settings *settings, bool isCpp);
1328+
static ValueType parseDecl(const Token *type, const Settings &settings, bool isCpp);
13291329

13301330
static Type typeFromString(const std::string &typestr, bool longType);
13311331

@@ -1345,7 +1345,7 @@ class CPPCHECKLIB ValueType {
13451345
return (type >= ValueType::Type::FLOAT && type <= ValueType::Type::LONGDOUBLE);
13461346
}
13471347

1348-
bool fromLibraryType(const std::string &typestr, const Settings *settings);
1348+
bool fromLibraryType(const std::string &typestr, const Settings &settings);
13491349

13501350
bool isEnum() const {
13511351
return typeScope && typeScope->type == Scope::eEnum;
@@ -1366,7 +1366,7 @@ class CPPCHECKLIB ValueType {
13661366
class CPPCHECKLIB SymbolDatabase {
13671367
friend class TestSymbolDatabase;
13681368
public:
1369-
SymbolDatabase(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger);
1369+
SymbolDatabase(const Tokenizer &tokenizer, const Settings &settings, ErrorLogger *errorLogger);
13701370
~SymbolDatabase();
13711371

13721372
/** @brief Information about all namespaces/classes/structures */
@@ -1510,8 +1510,8 @@ class CPPCHECKLIB SymbolDatabase {
15101510
void setValueType(Token* tok, const Variable& var, SourceLocation loc = SourceLocation::current());
15111511
void setValueType(Token* tok, const Enumerator& enumerator, SourceLocation loc = SourceLocation::current());
15121512

1513-
const Tokenizer *mTokenizer;
1514-
const Settings *mSettings;
1513+
const Tokenizer &mTokenizer;
1514+
const Settings &mSettings;
15151515
ErrorLogger *mErrorLogger;
15161516

15171517
/** variable symbol table */

lib/tokenize.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9141,7 +9141,7 @@ void Tokenizer::simplifyBorland()
91419141
void Tokenizer::createSymbolDatabase()
91429142
{
91439143
if (!mSymbolDatabase)
9144-
mSymbolDatabase = new SymbolDatabase(this, mSettings, mErrorLogger);
9144+
mSymbolDatabase = new SymbolDatabase(*this, *mSettings, mErrorLogger);
91459145
mSymbolDatabase->validate();
91469146
}
91479147

lib/valueflow.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ static void setTokenValue(Token* tok,
748748
if (contains({ValueFlow::Value::ValueType::INT, ValueFlow::Value::ValueType::SYMBOLIC}, value.valueType) &&
749749
Token::simpleMatch(parent->astOperand1(), "dynamic_cast"))
750750
return;
751-
const ValueType &valueType = ValueType::parseDecl(castType, settings, true); // TODO: set isCpp
751+
const ValueType &valueType = ValueType::parseDecl(castType, *settings, true); // TODO: set isCpp
752752
if (value.isImpossible() && value.isIntValue() && value.intvalue < 0 && astIsUnsigned(tok) &&
753753
valueType.sign == ValueType::SIGNED && tok->valueType() &&
754754
ValueFlow::getSizeOf(*tok->valueType(), settings) >= ValueFlow::getSizeOf(valueType, settings))
@@ -1051,7 +1051,7 @@ static void setTokenValueCast(Token *parent, const ValueType &valueType, const V
10511051

10521052
static nonneg int getSizeOfType(const Token *typeTok, const Settings *settings)
10531053
{
1054-
const ValueType &valueType = ValueType::parseDecl(typeTok, settings, true); // TODO: set isCpp
1054+
const ValueType &valueType = ValueType::parseDecl(typeTok, *settings, true); // TODO: set isCpp
10551055
if (valueType.pointer > 0)
10561056
return settings->platform.sizeof_pointer;
10571057
if (valueType.type == ValueType::Type::BOOL || valueType.type == ValueType::Type::CHAR)
@@ -1268,7 +1268,7 @@ static Token * valueFlowSetConstantValue(Token *tok, const Settings *settings, b
12681268
setTokenValue(tok->next(), std::move(value), settings);
12691269
}
12701270
} else if (!tok2->type()) {
1271-
const ValueType& vt = ValueType::parseDecl(tok2, settings, true); // TODO: set isCpp
1271+
const ValueType& vt = ValueType::parseDecl(tok2, *settings, true); // TODO: set isCpp
12721272
size_t sz = ValueFlow::getSizeOf(vt, settings);
12731273
const Token* brac = tok2->astParent();
12741274
while (Token::simpleMatch(brac, "[")) {
@@ -4652,7 +4652,7 @@ static bool isContainerOfPointers(const Token* tok, const Settings* settings)
46524652
return true;
46534653
}
46544654

4655-
ValueType vt = ValueType::parseDecl(tok, settings, true); // TODO: set isCpp
4655+
ValueType vt = ValueType::parseDecl(tok, *settings, true); // TODO: set isCpp
46564656
return vt.pointer > 0;
46574657
}
46584658

@@ -8275,7 +8275,7 @@ static bool valueFlowIsSameContainerType(const ValueType& contType, const Token*
82758275
if (!tok || !tok->valueType() || !tok->valueType()->containerTypeToken)
82768276
return false;
82778277

8278-
const ValueType tokType = ValueType::parseDecl(tok->valueType()->containerTypeToken, settings, true);
8278+
const ValueType tokType = ValueType::parseDecl(tok->valueType()->containerTypeToken, *settings, true);
82798279
return contType.isTypeEqual(&tokType);
82808280
}
82818281

@@ -8295,7 +8295,7 @@ static std::vector<ValueFlow::Value> getInitListSize(const Token* tok,
82958295
if (valueType->container->stdStringLike) {
82968296
initList = astIsGenericChar(args[0]) && !astIsPointer(args[0]);
82978297
} else if (containerTypeToken && settings) {
8298-
ValueType vt = ValueType::parseDecl(containerTypeToken, settings, true); // TODO: set isCpp
8298+
ValueType vt = ValueType::parseDecl(containerTypeToken, *settings, true); // TODO: set isCpp
82998299
if (vt.pointer > 0 && astIsPointer(args[0]))
83008300
initList = true;
83018301
else if (vt.type == ValueType::ITERATOR && astIsIterator(args[0]))
@@ -8704,7 +8704,7 @@ static bool getMinMaxValues(const std::string &typestr, const Settings *settings
87048704
return false;
87058705
typeTokens.simplifyPlatformTypes();
87068706
typeTokens.simplifyStdType();
8707-
const ValueType &vt = ValueType::parseDecl(typeTokens.front(), settings, true); // TODO: set isCpp
8707+
const ValueType &vt = ValueType::parseDecl(typeTokens.front(), *settings, true); // TODO: set isCpp
87088708
return getMinMaxValues(&vt, settings->platform, minvalue, maxvalue);
87098709
}
87108710

test/testsymboldatabase.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7907,11 +7907,11 @@ class TestSymbolDatabase : public TestFixture {
79077907
settingsWin64.library.mPodTypes["xyz::x"] = u32;
79087908
settingsWin64.library.mPodTypes["podtype2"] = podtype2;
79097909
ValueType vt;
7910-
ASSERT_EQUALS(true, vt.fromLibraryType("u32", &settingsWin64));
7911-
ASSERT_EQUALS(true, vt.fromLibraryType("xyz::x", &settingsWin64));
7910+
ASSERT_EQUALS(true, vt.fromLibraryType("u32", settingsWin64));
7911+
ASSERT_EQUALS(true, vt.fromLibraryType("xyz::x", settingsWin64));
79127912
ASSERT_EQUALS(ValueType::Type::INT, vt.type);
79137913
ValueType vt2;
7914-
ASSERT_EQUALS(true, vt2.fromLibraryType("podtype2", &settingsWin64));
7914+
ASSERT_EQUALS(true, vt2.fromLibraryType("podtype2", settingsWin64));
79157915
ASSERT_EQUALS(ValueType::Type::INT, vt2.type);
79167916
ASSERT_EQUALS("unsigned int *", typeOf(";void *data = new u32[10];", "new", "test.cpp", &settingsWin64));
79177917
ASSERT_EQUALS("unsigned int *", typeOf(";void *data = new xyz::x[10];", "new", "test.cpp", &settingsWin64));
@@ -7927,7 +7927,7 @@ class TestSymbolDatabase : public TestFixture {
79277927
s32.mType = "int";
79287928
settingsUnix32.library.mPlatforms[settingsUnix32.platform.toString()].mPlatformTypes["s32"] = s32;
79297929
ValueType vt;
7930-
ASSERT_EQUALS(true, vt.fromLibraryType("s32", &settingsUnix32));
7930+
ASSERT_EQUALS(true, vt.fromLibraryType("s32", settingsUnix32));
79317931
ASSERT_EQUALS(ValueType::Type::INT, vt.type);
79327932
}
79337933
{
@@ -7938,7 +7938,7 @@ class TestSymbolDatabase : public TestFixture {
79387938
lpctstr.mType = "wchar_t";
79397939
settingsWin64.library.mPlatforms[settingsWin64.platform.toString()].mPlatformTypes["LPCTSTR"] = lpctstr;
79407940
ValueType vt;
7941-
ASSERT_EQUALS(true, vt.fromLibraryType("LPCTSTR", &settingsWin64));
7941+
ASSERT_EQUALS(true, vt.fromLibraryType("LPCTSTR", settingsWin64));
79427942
ASSERT_EQUALS(ValueType::Type::WCHAR_T, vt.type);
79437943
}
79447944
{

0 commit comments

Comments
 (0)