|
| constexpr std::string_view | getGUID () const override |
| | Get the GUID corresponding to the pack file type.
|
| constexpr std::string_view | getGUID () const override |
| | Get the GUID corresponding to the pack file type.
|
| constexpr bool | hasEntryChecksums () const override |
| | Returns true if the format has a checksum for each entry.
|
| std::vector< std::string > | verifyEntryChecksums () const override |
| | Verify the checksums of each file, if a file fails the check its path will be added to the vector If there is no checksum ability in the format, it will return an empty vector.
|
| bool | hasPackFileChecksum () const override |
| | Returns true if the entire file has a checksum.
|
| bool | verifyPackFileChecksum () const override |
| | Verify the checksum of the entire file, returns true on success Will return true if there is no checksum ability in the format.
|
| bool | hasPackFileSignature () const override |
| | Returns true if the file is signed.
|
| bool | verifyPackFileSignature () const override |
| | Verify the file signature, returns true on success Will return true if there is no signature ability in the format.
|
| std::optional< std::vector< std::byte > > | readEntry (const std::string &path_) const override |
| | Try to read the entry's data to a bytebuffer.
|
| bool | removeEntry (const std::string &filename_) override |
| | Remove an entry.
|
| std::size_t | removeDirectory (const std::string &dirName_) override |
| | Remove a directory.
|
| bool | bake (const std::string &outputDir_, BakeOptions options, const EntryCallback &callback) override |
| | If output folder is an empty string, it will overwrite the original.
|
| std::string | getTruncatedFilestem () const override |
| | /home/user/pak01_dir.vpk -> pak01
|
| Attribute | getSupportedEntryAttributes () const override |
| | Returns a list of supported entry attributes Mostly for GUI programs that show entries and their metadata in a table ;)
|
| | operator std::string () const override |
| bool | sign (const std::string &filename_) |
| | Sign the VPK with the given private key KeyValues file. (See below comment)
|
| bool | sign (const std::vector< std::byte > &privateKey, const std::vector< std::byte > &publicKey) |
| | Sign the VPK with the given keypair. Run this after VPK::bake if modifying the VPK file contents.
|
| uint32_t | getVersion () const |
| | Returns 1 for v1, 2 for v2.
|
| void | setVersion (uint32_t version) |
| | Change the version of the VPK. Valid values are 1 and 2.
|
| uint32_t | getChunkSize () const |
| | Get the VPK chunk size in bytes (size of generated archives when baking)
|
| void | setChunkSize (uint32_t newChunkSize) |
| | Set the VPK chunk size in bytes (size of generated archives when baking)
|
| | PackFile (const PackFile &other)=delete |
| PackFile & | operator= (const PackFile &other)=delete |
| | PackFile (PackFile &&other) noexcept=default |
| PackFile & | operator= (PackFile &&other) noexcept=default |
| virtual | ~PackFile ()=default |
template<typename T>
requires requires (const T&) {{T::GUID} -> std::convertible_to<std::string_view>;} |
| bool | isInstanceOf () const |
| | Check if the pack file is an instance of the given pack file class.
|
| virtual constexpr bool | isCaseSensitive () const |
| | Does the format support case-sensitive file names?
|
| bool | hasEntry (const std::string &path, bool includeUnbaked=true) const |
| | Check if an entry exists given the file path.
|
| std::optional< Entry > | findEntry (const std::string &path_, bool includeUnbaked=true) const |
| | Try to find an entry given the file path.
|
| std::optional< std::vector< std::byte > > | operator[] (const std::string &path_) const |
| std::optional< std::string > | readEntryText (const std::string &path) const |
| | Try to read the entry's data to a string.
|
| virtual constexpr bool | isReadOnly () const noexcept |
| void | addEntry (const std::string &entryPath, const std::string &filepath, EntryOptions options={}) |
| | Add a new entry from a file path - the first parameter is the path in the PackFile, the second is the path on disk.
|
| void | addEntry (const std::string &path, std::vector< std::byte > &&buffer, EntryOptions options={}) |
| | Add a new entry from a buffer.
|
| void | addEntry (const std::string &path, std::span< const std::byte > buffer, EntryOptions options={}) |
| | Add a new entry from a buffer.
|
| void | addDirectory (const std::string &entryBaseDir, const std::string &dir, EntryOptions options={}) |
| | Adds new entries using the contents of a given directory.
|
| void | addDirectory (const std::string &entryBaseDir_, const std::string &dir, const EntryCreation &creation) |
| | Adds new entries using the contents of a given directory.
|
| virtual bool | renameEntry (const std::string &oldPath_, const std::string &newPath_) |
| | Rename an existing entry.
|
| virtual bool | renameDirectory (const std::string &oldDir_, const std::string &newDir_) |
| | Rename an existing directory.
|
| bool | extractEntry (const std::string &entryPath, const std::string &filepath) const |
| | Extract the given entry to disk at the given file path.
|
| bool | extractDirectory (const std::string &dir_, const std::string &outputDir) const |
| | Extract the given directory to disk under the given output directory.
|
| bool | extractAll (const std::string &outputDir, bool createUnderPackFileDir=true) const |
| | Extract the contents of the pack file to disk at the given directory.
|
| bool | extractAll (const std::string &outputDir, const EntryPredicate &predicate, bool stripSharedDirs=true) const |
| | Extract the contents of the pack file to disk at the given directory - only entries which match the predicate are extracted.
|
| const EntryTrie & | getBakedEntries () const |
| | Get entries saved to disk.
|
| const EntryTrie & | getUnbakedEntries () const |
| | Get entries that have been added but not yet baked.
|
| std::size_t | getEntryCount (bool includeUnbaked=true) const |
| | Get the number of entries in the pack file.
|
| void | runForAllEntries (const EntryCallback &operation, bool includeUnbaked=true) const |
| | Run a callback for each entry in the pack file.
|
| void | runForAllEntries (const std::string &parentDir, const EntryCallback &operation, bool recursive=true, bool includeUnbaked=true) const |
| | Run a callback for each entry in the pack file under the parent directory.
|
| std::string_view | getFilepath () const |
| | /home/user/pak01_dir.vpk
|
| std::string | getTruncatedFilepath () const |
| | /home/user/pak01_dir.vpk -> /home/user/pak01
|
| std::string | getFilename () const |
| | /home/user/pak01_dir.vpk -> pak01_dir.vpk
|
| std::string | getTruncatedFilename () const |
| | /home/user/pak01_dir.vpk -> pak01.vpk
|
| std::string | getFilestem () const |
| | /home/user/pak01_dir.vpk -> pak01_dir
|
|
| static std::unique_ptr< PackFile > | create (const std::string &path) |
| | Create a new directory FPX file - should end in "_dir.fpx"! This is not enforced but STRONGLY recommended.
|
| static std::unique_ptr< PackFile > | open (const std::string &path, const EntryCallback &callback=nullptr) |
| | Open an FPX file.
|
| static std::unique_ptr< PackFile > | create (const std::string &path, uint32_t version=2) |
| | Create a new directory VPK file - should end in "_dir.vpk"! This is not enforced but STRONGLY recommended.
|
| static std::unique_ptr< PackFile > | open (const std::string &path, const EntryCallback &callback=nullptr) |
| | Open a VPK file.
|
| static bool | generateKeyPairFiles (const std::string &name) |
| | Generate keypair files, which can be used to sign a VPK Input is a truncated file path, e.g.
|
| static std::unique_ptr< PackFile > | open (const std::string &path, const EntryCallback &callback=nullptr, const OpenPropertyRequest &requestProperty=nullptr) |
| | Open a generic pack file. The parser is selected based on the file extension.
|
| static std::vector< std::string > | getOpenableExtensions () |
| | Returns a sorted list of supported extensions for opening, e.g. {".bsp", ".vpk"}.
|
| static std::string | escapeEntryPathForWrite (const std::string &path) |
| | On Windows, some characters and file names are invalid - this escapes the given entry path.
|
|
| enum class | OpenProperty { DECRYPTION_KEY
} |
| using | OpenPropertyRequest = std::function<std::vector<std::byte>(PackFile* packFile, OpenProperty property)> |
| template<typename R> |
| using | EntryCallbackBase = std::function<R(const std::string& path, const Entry& entry)> |
| | Accepts the entry's path and metadata.
|
| using | EntryCallback = EntryCallbackBase<void> |
| using | EntryPredicate = EntryCallbackBase<bool> |
| using | EntryCreation = std::function<EntryOptions(const std::string& path)> |
| using | EntryTrie = tsl::htrie_map<char, Entry> |
| using | OpenFactoryFunctionBasic = std::function<std::unique_ptr<PackFile>(const std::string& path, const EntryCallback& callback)> |
| using | OpenFactoryFunction = std::function<std::unique_ptr<PackFile>(const std::string& path, const EntryCallback& callback, const OpenPropertyRequest& requestProperty)> |
| void | addEntryInternal (Entry &entry, const std::string &path, std::vector< std::byte > &buffer, EntryOptions options) override |
| bool | hasExtendedHeader () const |
| bool | hasCompression () const |
| uint32_t | getHeaderLength () const |
| | PackFile (const PackFile &other)=delete |
| | PackFile (PackFile &&other) noexcept=default |
| | PackFile (std::string fullFilePath_) |
| | PackFile (std::string fullFilePath_) |
| void | runForAllEntriesInternal (const std::function< void(const std::string &, Entry &)> &operation, bool includeUnbaked=true) |
| void | runForAllEntriesInternal (const std::string &parentDir, const std::function< void(const std::string &, Entry &)> &operation, bool recursive=true, bool includeUnbaked=true) |
| std::vector< std::string > | verifyEntryChecksumsUsingCRC32 () const |
| std::string | getBakeOutputDir (const std::string &outputDir) const |
| void | mergeUnbakedEntries () |
| void | setFullFilePath (const std::string &outputDir) |
| std::string | cleanEntryPath (const std::string &path) const |
| int32_t | numArchives = -1 |
| uint32_t | currentlyFilledChunkSize = 0 |
| uint32_t | chunkSize = VPK_DEFAULT_CHUNK_SIZE |
| std::vector< FreedChunk > | freedChunks |
| Header1 | header1 {} |
| Header2 | header2 {} |
| Footer2 | footer2 {} |
| std::vector< MD5Entry > | md5Entries |
| std::string | fullFilePath |
| EntryTrie | entries |
| EntryTrie | unbakedEntries |
Definition at line 13 of file FPX.h.