File tree Expand file tree Collapse file tree 2 files changed +14
-7
lines changed Expand file tree Collapse file tree 2 files changed +14
-7
lines changed Original file line number Diff line number Diff line change 4747
4848ExprIdToken::ExprIdToken (const Token* tok) : tok(tok), exprid(tok ? tok->exprId () : 0) {}
4949
50+ ExprIdToken::ExprIdToken (nonneg int exprId) : exprid(exprId) {}
51+
5052nonneg int ExprIdToken::getExpressionId () const {
51- return tok ? tok-> exprId () : exprid;
53+ return exprid;
5254}
5355
5456std::size_t ExprIdToken::Hash::operator ()(ExprIdToken etok) const
@@ -239,16 +241,12 @@ void ProgramMemory::copyOnWrite()
239241ProgramMemory::Map::const_iterator ProgramMemory::find (nonneg int exprid) const
240242{
241243 const auto & cvalues = utils::as_const (*mValues );
242- return std::find_if (cvalues.cbegin (), cvalues.cend (), [&exprid](const Map::value_type& entry) {
243- return entry.first .getExpressionId () == exprid;
244- });
244+ return cvalues.find (ExprIdToken::create (exprid));
245245}
246246
247247ProgramMemory::Map::iterator ProgramMemory::find (nonneg int exprid)
248248{
249- return std::find_if (mValues ->begin (), mValues ->end (), [&exprid](const Map::value_type& entry) {
250- return entry.first .getExpressionId () == exprid;
251- });
249+ return mValues ->find (ExprIdToken::create (exprid));
252250}
253251
254252static ValueFlow::Value execute (const Token* expr, ProgramMemory& pm, const Settings& settings);
Original file line number Diff line number Diff line change @@ -90,6 +90,15 @@ struct ExprIdToken {
9090 struct Hash {
9191 std::size_t operator ()(ExprIdToken etok) const ;
9292 };
93+
94+ /* * create object for hashed lookups */
95+ static ExprIdToken create (nonneg int exprId) {
96+ return ExprIdToken (exprId);
97+ }
98+
99+ private:
100+ // for hashed lookups only
101+ explicit ExprIdToken (nonneg int exprId);
93102};
94103
95104struct CPPCHECKLIB ProgramMemory {
You can’t perform that action at this time.
0 commit comments