From 5e569d0107aefe292b76ac0458f9420077f350a0 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Sat, 15 Feb 2020 17:22:12 -0500 Subject: re-enabled archive parsing --- src/shared/directoryentry.h | 79 +++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 35 deletions(-) (limited to 'src/shared/directoryentry.h') diff --git a/src/shared/directoryentry.h b/src/shared/directoryentry.h index 5ca7389d..a28ceeae 100644 --- a/src/shared/directoryentry.h +++ b/src/shared/directoryentry.h @@ -50,10 +50,10 @@ class DirectoryEntry { public: DirectoryEntry( - std::wstring name, DirectoryEntry *parent, OriginID originID); + std::wstring name, DirectoryEntry* parent, OriginID originID); DirectoryEntry( - std::wstring name, DirectoryEntry *parent, OriginID originID, + std::wstring name, DirectoryEntry* parent, OriginID originID, boost::shared_ptr fileRegister, boost::shared_ptr originConnection); @@ -85,7 +85,7 @@ public: return !m_Files.empty(); } - const DirectoryEntry *getParent() const + const DirectoryEntry* getParent() const { return m_Parent; } @@ -93,24 +93,32 @@ public: // add files to this directory (and subdirectories) from the specified origin. // That origin may exist or not void addFromOrigin( - const std::wstring &originName, - const std::wstring &directory, int priority, DirectoryStats& stats); + const std::wstring& originName, + const std::wstring& directory, int priority, DirectoryStats& stats); void addFromOrigin( - env::DirectoryWalker& walker, const std::wstring &originName, - const std::wstring &directory, int priority, DirectoryStats& stats); + env::DirectoryWalker& walker, const std::wstring& originName, + const std::wstring& directory, int priority, DirectoryStats& stats); + + void addFromAllBSAs( + const std::wstring& originName, const std::wstring& directory, + int priority, const std::vector& archives, + const std::set& enabledArchives, + const std::vector& loadOrder, + DirectoryStats& stats); void addFromBSA( - const std::wstring &originName, std::wstring &directory, - const std::wstring &fileName, int priority, int order); + const std::wstring& originName, const std::wstring& directory, + const std::wstring& archivePath, int priority, int order, + DirectoryStats& stats); void addFromList( - const std::wstring &originName, const std::wstring &directory, + const std::wstring& originName, const std::wstring& directory, env::Directory& root, int priority, DirectoryStats& stats); void propagateOrigin(OriginID origin); - const std::wstring &getName() const + const std::wstring& getName() const { return m_Name; } @@ -120,9 +128,9 @@ public: return m_FileRegister; } - bool originExists(const std::wstring &name) const; - FilesOrigin &getOriginByID(OriginID ID) const; - FilesOrigin &getOriginByName(const std::wstring &name) const; + bool originExists(const std::wstring& name) const; + FilesOrigin& getOriginByID(OriginID ID) const; + FilesOrigin& getOriginByName(const std::wstring& name) const; const FilesOrigin* findOriginByID(OriginID ID) const; OriginID anyOrigin() const; @@ -130,8 +138,8 @@ public: std::vector getFiles() const; void getSubDirectories( - std::vector::const_iterator &begin, - std::vector::const_iterator &end) const + std::vector::const_iterator& begin, + std::vector::const_iterator& end) const { begin = m_SubDirectories.begin(); end = m_SubDirectories.end(); @@ -179,16 +187,16 @@ public: return m_FileRegister->getFile(index); } - DirectoryEntry *findSubDirectory( - const std::wstring &name, bool alreadyLowerCase=false) const; + DirectoryEntry* findSubDirectory( + const std::wstring& name, bool alreadyLowerCase=false) const; - DirectoryEntry *findSubDirectoryRecursive(const std::wstring &path); + DirectoryEntry* findSubDirectoryRecursive(const std::wstring& path); /** retrieve a file in this directory by name. * @param name name of the file * @return fileentry object for the file or nullptr if no file matches */ - const FileEntryPtr findFile(const std::wstring &name, bool alreadyLowerCase=false) const; + const FileEntryPtr findFile(const std::wstring& name, bool alreadyLowerCase=false) const; const FileEntryPtr findFile(const DirectoryEntryFileKey& key) const; bool hasFile(const std::wstring& name) const; @@ -201,29 +209,29 @@ public: // path containing the file // const FileEntryPtr searchFile( - const std::wstring &path, const DirectoryEntry **directory=nullptr) const; + const std::wstring& path, const DirectoryEntry** directory=nullptr) const; void removeFile(FileIndex index); // remove the specified file from the tree. This can be a path leading to a // file in a subdirectory - bool removeFile(const std::wstring &filePath, OriginID *origin = nullptr); + bool removeFile(const std::wstring& filePath, OriginID* origin = nullptr); /** * @brief remove the specified directory * @param path directory to remove */ - void removeDir(const std::wstring &path); + void removeDir(const std::wstring& path); - bool remove(const std::wstring &fileName, OriginID *origin); + bool remove(const std::wstring& fileName, OriginID* origin); bool hasContentsFromOrigin(OriginID originID) const; - FilesOrigin &createOrigin( - const std::wstring &originName, - const std::wstring &directory, int priority, DirectoryStats& stats); + FilesOrigin& createOrigin( + const std::wstring& originName, + const std::wstring& directory, int priority, DirectoryStats& stats); - void removeFiles(const std::set &indices); + void removeFiles(const std::set& indices); void dump(const std::wstring& file) const; @@ -242,7 +250,7 @@ private: SubDirectories m_SubDirectories; SubDirectoriesLookup m_SubDirectoriesLookup; - DirectoryEntry *m_Parent; + DirectoryEntry* m_Parent; std::set m_Origins; bool m_Populated; bool m_TopLevel; @@ -252,20 +260,20 @@ private: FileEntryPtr insert( - std::wstring_view fileName, FilesOrigin &origin, FILETIME fileTime, + std::wstring_view fileName, FilesOrigin& origin, FILETIME fileTime, std::wstring_view archive, int order, DirectoryStats& stats); FileEntryPtr insert( - env::File& file, FilesOrigin &origin, + env::File& file, FilesOrigin& origin, std::wstring_view archive, int order, DirectoryStats& stats); void addFiles( - env::DirectoryWalker& walker, FilesOrigin &origin, + env::DirectoryWalker& walker, FilesOrigin& origin, const std::wstring& path, DirectoryStats& stats); void addFiles( - FilesOrigin &origin, BSA::Folder::Ptr archiveFolder, FILETIME &fileTime, - const std::wstring &archiveName, int order); + FilesOrigin& origin, BSA::Folder::Ptr archiveFolder, FILETIME fileTime, + const std::wstring& archiveName, int order, DirectoryStats& stats); void addDir(FilesOrigin& origin, env::Directory& d, DirectoryStats& stats); @@ -278,7 +286,8 @@ private: OriginID originID = InvalidOriginID); DirectoryEntry* getSubDirectoryRecursive( - const std::wstring &path, bool create, OriginID originID = InvalidOriginID); + const std::wstring& path, bool create, DirectoryStats& stats, + OriginID originID = InvalidOriginID); void removeDirRecursive(); -- cgit v1.3.1