Skip to content

Commit cc40991

Browse files
committed
Replace 0 terminated array by std::vector
1 parent 797f94f commit cc40991

File tree

1 file changed

+20
-29
lines changed

1 file changed

+20
-29
lines changed

src/util.cpp

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5298,14 +5298,15 @@ QCString stripLeadingAndTrailingEmptyLines(const QCString &s,int &docLine)
52985298

52995299
static std::unordered_map<std::string,SrcLangExt> g_extLookup;
53005300

5301-
static struct Lang2ExtMap
5301+
struct Lang2ExtMap
53025302
{
53035303
const char *langName;
53045304
const char *parserName;
53055305
SrcLangExt parserId;
53065306
const char *defExt;
5307-
}
5308-
g_lang2extMap[] =
5307+
};
5308+
5309+
static std::vector<Lang2ExtMap> g_lang2extMap =
53095310
{
53105311
// language parser parser option
53115312
{ "idl", "c", SrcLangExt::IDL, ".idl" },
@@ -5327,36 +5328,31 @@ g_lang2extMap[] =
53275328
{ "sql", "sql", SrcLangExt::SQL, ".sql" },
53285329
{ "md", "md", SrcLangExt::Markdown, ".md" },
53295330
{ "lex", "lex", SrcLangExt::Lex, ".l" },
5330-
{ 0, 0, static_cast<SrcLangExt>(0),0}
53315331
};
53325332

53335333
bool updateLanguageMapping(const QCString &extension,const QCString &language)
53345334
{
5335-
const Lang2ExtMap *p = g_lang2extMap;
53365335
QCString langName = language.lower();
5337-
while (p->langName)
5338-
{
5339-
if (langName==p->langName) break;
5340-
p++;
5341-
}
5342-
if (!p->langName) return FALSE;
5336+
auto it1 = std::find_if(g_lang2extMap.begin(),g_lang2extMap.end(),
5337+
[&langName](const auto &info) { return info.langName==langName; });
5338+
if (it1 == g_lang2extMap.end()) return false;
53435339

53445340
// found the language
5345-
SrcLangExt parserId = p->parserId;
5341+
SrcLangExt parserId = it1->parserId;
53465342
QCString extName = extension.lower();
53475343
if (extName.isEmpty()) return FALSE;
53485344
if (extName.at(0)!='.') extName.prepend(".");
5349-
auto it = g_extLookup.find(extName.str());
5350-
if (it!=g_extLookup.end())
5345+
auto it2 = g_extLookup.find(extName.str());
5346+
if (it2!=g_extLookup.end())
53515347
{
5352-
g_extLookup.erase(it); // language was already register for this ext
5348+
g_extLookup.erase(it2); // language was already register for this ext
53535349
}
53545350
//printf("registering extension %s\n",qPrint(extName));
53555351
g_extLookup.insert(std::make_pair(extName.str(),parserId));
5356-
if (!Doxygen::parserManager->registerExtension(extName,p->parserName))
5352+
if (!Doxygen::parserManager->registerExtension(extName,it1->parserName))
53575353
{
53585354
err("Failed to assign extension %s to parser %s for language %s\n",
5359-
extName.data(),p->parserName,qPrint(language));
5355+
extName.data(),it1->parserName,qPrint(language));
53605356
}
53615357
else
53625358
{
@@ -5460,25 +5456,20 @@ SrcLangExt getLanguageFromFileName(const QCString& fileName, SrcLangExt defLang)
54605456
SrcLangExt getLanguageFromCodeLang(QCString &fileName)
54615457
{
54625458
// try the extension
5463-
SrcLangExt lang = getLanguageFromFileName(fileName, SrcLangExt::Unknown);
5459+
auto lang = getLanguageFromFileName(fileName, SrcLangExt::Unknown);
54645460
if (lang == SrcLangExt::Unknown)
54655461
{
54665462
// try the language names
5467-
const Lang2ExtMap *p = g_lang2extMap;
54685463
QCString langName = fileName.lower();
54695464
if (langName.at(0)=='.') langName = langName.mid(1);
5470-
while (p->langName)
5465+
auto it = std::find_if(g_lang2extMap.begin(),g_lang2extMap.end(),
5466+
[&langName](const auto &info) { return info.langName==langName; });
5467+
if (it != g_lang2extMap.end())
54715468
{
5472-
if (langName==p->langName)
5473-
{
5474-
// found the language
5475-
lang = p->parserId;
5476-
fileName = p->defExt;
5477-
break;
5478-
}
5479-
p++;
5469+
lang = it->parserId;
5470+
fileName = it->defExt;
54805471
}
5481-
if (!p->langName)
5472+
else // default to C++
54825473
{
54835474
return SrcLangExt::Cpp;
54845475
}

0 commit comments

Comments
 (0)