#pragma once #include "libNPK.h" #include #include namespace NPK { class NPKFileList : public IFileList { public: public: virtual bool loadListFromFile(const wchar_t* wszListFile, const char* prefix, bool bNpkBase, bool bNpkName, bool bFileOffset, bool bFileSize, bool bFileCRC, bool bEnableDuplicate) override; virtual bool dumpToLocalFile(const wchar_t* wszListFile, bool bNpkBase, bool bNpkName, bool bFileOffset, bool bFileSize, bool bFileCRC); virtual bool mergeOtherListInto(const IFileList* sourceFileList, bool bEnableDuplicate) override; virtual bool applyToLocalNPKFiles(const wchar_t* wszNPKBase) override; virtual int32_t getFileCounts(void) const override; virtual bool getFileItem(int32_t index, FileItemFullInfo* fullInfo) const override; virtual bool getFileItem(const char* szKeyName, FileItemFullInfo* fileItemFullInfo) const override; public: bool addFileNode(const FileItemFullInfo& fullInfo, bool bEnableDuplicate); private: void clear(); std::wstring getNPKPathNameFromKeyName(const wchar_t* wszNPKBase, const char* keyName); private: std::vector m_fileList; std::unordered_map::size_type> m_hashList; }; }