Skip to content

Commit a346840

Browse files
authored
feat: merge pull request #2 from Meridiano/patch-1
refactor: Improve loader handling
2 parents 43093a8 + da09f59 commit a346840

1 file changed

Lines changed: 12 additions & 15 deletions

File tree

src/REL/IDDB.cpp

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,11 @@ namespace REL
131131
{ IDDB::Loader::OBSE, { L"versionlib" } },
132132
};
133133

134-
std::unordered_map<IDDB::Loader, std::string> g_loaderMap{
135-
{ IDDB::Loader::SKSE, "SKSE" },
136-
{ IDDB::Loader::F4SE, "F4SE" },
137-
{ IDDB::Loader::SFSE, "SFSE" },
138-
{ IDDB::Loader::OBSE, "OBSE" },
134+
std::unordered_map<IDDB::Loader, std::pair<std::string, std::wstring>> g_loaderMap{
135+
{ IDDB::Loader::SKSE, { "SKSE", L"SKSE" } },
136+
{ IDDB::Loader::F4SE, { "F4SE", L"F4SE" } },
137+
{ IDDB::Loader::SFSE, { "SFSE", L"SFSE" } },
138+
{ IDDB::Loader::OBSE, { "OBSE", L"OBSE" } },
139139
};
140140

141141
wchar_t buffer[REX::W32::MAX_PATH];
@@ -145,15 +145,12 @@ namespace REL
145145
auto loader = plugin.parent_path().parent_path();
146146
auto loaderName = loader.filename().wstring();
147147
std::transform(loaderName.begin(), loaderName.end(), loaderName.begin(), std::towupper);
148-
if (loaderName == L"SKSE") {
149-
m_loader = Loader::SKSE;
150-
} else if (loaderName == L"F4SE") {
151-
m_loader = Loader::F4SE;
152-
} else if (loaderName == L"SFSE") {
153-
m_loader = Loader::SFSE;
154-
} else if (loaderName == L"OBSE") {
155-
m_loader = Loader::OBSE;
156-
}
148+
for (auto& entry : g_loaderMap)
149+
if (loaderName == entry.second.second)
150+
{
151+
m_loader = entry.first;
152+
break;
153+
}
157154

158155
if (m_loader == Loader::None)
159156
REX::FAIL("Failed to determine Address Library loader!");
@@ -173,7 +170,7 @@ namespace REL
173170
}
174171

175172
if (m_path.empty())
176-
REX::FAIL("Failed to determine Address Library path!\nLoader: {}", g_loaderMap[m_loader]);
173+
REX::FAIL("Failed to determine Address Library path!\nLoader: {}", g_loaderMap[m_loader].first);
177174

178175
if (m_format == Format::V0) {
179176
load_v0();

0 commit comments

Comments
 (0)