MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / FindConfigParamEntry

Function FindConfigParamEntry

engine/Poseidon/IO/ParamFileExt.cpp:292–349  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

290}
291
292const ParamEntry* FindConfigParamEntry(const char* path)
293{
294 if (*path == 0)
295 {
296 return nullptr;
297 }
298 // check path base
299 const ParamEntry* entry = nullptr;
300 Poseidon::Foundation::RString base = Poseidon::PathFirstFolder(path);
301 if (!strcmpi(base, "cfg"))
302 {
303 entry = &Pars;
304 }
305 else if (!strcmpi(base, "rsc"))
306 {
307 entry = &Res;
308 }
309 else
310 {
311 LOG_DEBUG(Core, "Invalid base in {}", path);
312 return nullptr;
313 }
314 path += strlen(base) + 1;
315
316 while (strlen(path) > 0)
317 {
318 Poseidon::Foundation::RString base = Poseidon::PathFirstFolder(path);
319 if (base.GetLength() <= 0)
320 {
321 ParamEntry* nEntry = entry->FindEntry(path);
322 if (!nEntry)
323 {
324 break;
325 }
326 if (!nEntry->IsClass())
327 {
328 break;
329 }
330 entry = nEntry;
331 break;
332 }
333 else
334 {
335 ParamEntry* nEntry = entry->FindEntry(base);
336 if (!nEntry)
337 {
338 break;
339 }
340 if (!nEntry->IsClass())
341 {
342 break;
343 }
344 entry = nEntry;
345 path += strlen(base) + 1;
346 }
347 }
348 return entry;
349}

Callers 2

CalculateConfigCRCFunction · 0.85

Calls 5

PathFirstFolderFunction · 0.70
strcmpiFunction · 0.50
GetLengthMethod · 0.45
FindEntryMethod · 0.45
IsClassMethod · 0.45

Tested by

no test coverage detected