Skip to content

Commit ee54387

Browse files
committed
improve adding generators
1 parent 2360804 commit ee54387

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

src/nbl/asset/utils/IShaderCompiler.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -303,19 +303,20 @@ void IShaderCompiler::CIncludeFinder::addSearchPath(const std::string& searchPat
303303
m_loaders.push_back(LoaderSearchPath{ loader, searchPath });
304304
}
305305

306-
void IShaderCompiler::CIncludeFinder::addGenerator(const core::smart_refctd_ptr<IIncludeGenerator>& generator)
306+
void IShaderCompiler::CIncludeFinder::addGenerator(const core::smart_refctd_ptr<IIncludeGenerator>& generatorToAdd)
307307
{
308-
if (!generator)
308+
if (!generatorToAdd)
309309
return;
310310

311-
auto itr = m_generators.begin();
312-
for (; itr != m_generators.end(); ++itr)
313-
{
314-
auto str = (*itr)->getPrefix();
315-
if (str.compare(generator->getPrefix()) <= 0) // Reverse Lexicographic Order
316-
break;
317-
}
318-
m_generators.insert(itr, generator);
311+
// this will find the place of first generator with prefix <= generatorToAdd or end
312+
auto found = std::lower_bound(m_generators.begin(), m_generators.end(), generatorToAdd->getPrefix(),
313+
[](const core::smart_refctd_ptr<IIncludeGenerator>& generator, const std::string_view& value)
314+
{
315+
auto element = generator->getPrefix();
316+
return element.compare(value) > 0; // first to return false is lower_bound -> first element that is <= value
317+
});
318+
319+
m_generators.insert(found, generatorToAdd);
319320
}
320321

321322
std::string IShaderCompiler::CIncludeFinder::trySearchPaths(const std::string& includeName) const

0 commit comments

Comments
 (0)