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

Method insert

src/shared/directoryentry.cpp:531–575  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

529}
530
531FileEntryPtr DirectoryEntry::insert(std::wstring_view fileName, FilesOrigin& origin,
532 FILETIME fileTime, std::wstring_view archive,
533 int order, DirectoryStats& stats)
534{
535 std::wstring fileNameLower = ToLowerCopy(fileName);
536 FileEntryPtr fe;
537
538 DirectoryEntryFileKey key(std::move(fileNameLower));
539
540 {
541 std::unique_lock lock(m_FilesMutex);
542
543 FilesLookup::iterator itor;
544
545 elapsed(stats.filesLookupTimes, [&] {
546 itor = m_FilesLookup.find(key);
547 });
548
549 if (itor != m_FilesLookup.end()) {
550 lock.unlock();
551 ++stats.fileExists;
552 fe = m_FileRegister->getFile(itor->second);
553 } else {
554 ++stats.fileCreate;
555 fe = m_FileRegister->createFile(std::wstring(fileName.begin(), fileName.end()),
556 this, stats);
557
558 elapsed(stats.addFileTimes, [&] {
559 addFileToList(std::move(key.value), fe->getIndex());
560 });
561
562 // fileNameLower has moved from this point
563 }
564 }
565
566 elapsed(stats.addOriginToFileTimes, [&] {
567 fe->addOrigin(origin.getID(), fileTime, archive, order);
568 });
569
570 elapsed(stats.addFileToOriginTimes, [&] {
571 origin.addFile(fe->getIndex());
572 });
573
574 return fe;
575}
576
577FileEntryPtr DirectoryEntry::insert(env::File& file, FilesOrigin& origin,
578 std::wstring_view archive, int order,

Callers 8

DirectoryEntryMethod · 0.45
propagateOriginMethod · 0.45
onFileMethod · 0.45
addDirectoryToListMethod · 0.45
addFileMethod · 0.45
removeOriginMultiMethod · 0.45
addOriginMethod · 0.45

Calls 11

ToLowerCopyFunction · 0.85
unlockMethod · 0.80
getFileMethod · 0.80
addOriginMethod · 0.80
getIDMethod · 0.80
findMethod · 0.45
endMethod · 0.45
createFileMethod · 0.45
beginMethod · 0.45
getIndexMethod · 0.45
addFileMethod · 0.45

Tested by

no test coverage detected