diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-12-19 21:13:31 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-04 03:33:18 -0500 |
| commit | 0a908c49625fe0e54bc45e29fe8c4908d20b0dbe (patch) | |
| tree | 98b2b6d7ebb5224b33c2ad55690ff9ceb72d16df /src/shared/directoryentry.h | |
| parent | 72394faa750ac05871f62583c7c922879a20bc7b (diff) | |
added a map for directories in DirectoryEntry
more optimizations for filetree
Diffstat (limited to 'src/shared/directoryentry.h')
| -rw-r--r-- | src/shared/directoryentry.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/shared/directoryentry.h b/src/shared/directoryentry.h index d33b495a..79bc5cf2 100644 --- a/src/shared/directoryentry.h +++ b/src/shared/directoryentry.h @@ -271,7 +271,22 @@ public: }
}
- DirectoryEntry *findSubDirectory(const std::wstring &name) const;
+ template <class F>
+ void forEachFileIndex(F&& f) const
+ {
+ for (auto&& p : m_Files) {
+ if (!f(p.second)) {
+ break;
+ }
+ }
+ }
+
+ FileEntry::Ptr getFileByIndex(FileEntry::Index index) const
+ {
+ return m_FileRegister->getFile(index);
+ }
+
+ DirectoryEntry *findSubDirectory(const std::wstring &name, bool alreadyLowerCase=false) const;
DirectoryEntry *findSubDirectoryRecursive(const std::wstring &path);
/** retrieve a file in this directory by name.
@@ -352,6 +367,7 @@ private: void removeDirRecursive();
private:
+ using SubDirectoriesMap = std::unordered_map<std::wstring, DirectoryEntry*>;
boost::shared_ptr<FileRegister> m_FileRegister;
boost::shared_ptr<OriginConnection> m_OriginConnection;
@@ -359,6 +375,7 @@ private: std::wstring m_Name;
std::map<std::wstring, FileEntry::Index> m_Files;
std::vector<DirectoryEntry*> m_SubDirectories;
+ SubDirectoriesMap m_SubDirectoriesMap;
DirectoryEntry *m_Parent;
std::set<int> m_Origins;
|
