MCPcopy Create free account
hub / github.com/ModOrganizer2/modorganizer / getSubDirectory

Method getSubDirectory

src/shared/directoryentry.cpp:705–737  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

703}
704
705DirectoryEntry* DirectoryEntry::getSubDirectory(std::wstring_view name, bool create,
706 DirectoryStats& stats, int originID)
707{
708 std::wstring nameLc = ToLowerCopy(name);
709
710 std::scoped_lock lock(m_SubDirMutex);
711
712 SubDirectoriesLookup::iterator itor;
713 elapsed(stats.subdirLookupTimes, [&] {
714 itor = m_SubDirectoriesLookup.find(nameLc);
715 });
716
717 if (itor != m_SubDirectoriesLookup.end()) {
718 ++stats.subdirExists;
719 return itor->second;
720 }
721
722 if (create) {
723 ++stats.subdirCreate;
724
725 auto* entry = new DirectoryEntry(std::wstring(name.begin(), name.end()), this,
726 originID, m_FileRegister, m_OriginConnection);
727
728 elapsed(stats.addDirectoryTimes, [&] {
729 addDirectoryToList(entry, std::move(nameLc));
730 // nameLc is moved from this point
731 });
732
733 return entry;
734 } else {
735 return nullptr;
736 }
737}
738
739DirectoryEntry* DirectoryEntry::getSubDirectory(env::Directory& dir, bool create,
740 DirectoryStats& stats, int originID)

Callers 1

onDirectoryStartMethod · 0.80

Calls 4

ToLowerCopyFunction · 0.85
findMethod · 0.45
endMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected