SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Loading...
Searching...
No Matches
VPP.h
Go to the documentation of this file.
1#pragma once
2
3#include "../PackFile.h"
4
5namespace vpkpp {
6
7constexpr uint32_t VPP_SIGNATURE_LIL = 0x51890ACE;
8constexpr uint32_t VPP_SIGNATURE_BIG = 0xCE0A8951;
9constexpr uint32_t VPP_ALIGNMENT = 2048;
10constexpr std::string_view VPP_EXTENSION = ".vpp";
11constexpr std::string_view VPP_EXTENSION_PC = ".vpp_pc";
12constexpr std::string_view VPP_EXTENSION_XBOX2 = ".vpp_xbox2";
13
14class VPP : public PackFileReadOnly {
15public:
16 enum Flags : uint32_t {
19 FLAG_CONDENSED = 1 << 1
20 };
21
23 [[nodiscard]] static std::unique_ptr<PackFile> open(const std::string& path, const EntryCallback& callback = nullptr);
24
25 static constexpr inline std::string_view GUID = "C47C5C4D88AE4032967F8CDC93D6D2E1";
26
27 [[nodiscard]] constexpr std::string_view getGUID() const override {
28 return VPP::GUID;
29 }
30
31 [[nodiscard]] std::optional<std::vector<std::byte>> readEntry(const std::string& path_) const override;
32
33 [[nodiscard]] Attribute getSupportedEntryAttributes() const override;
34
35protected:
37
39 uint32_t entryBaseOffset = 0;
40 std::vector<std::byte> uncondensedData;
41
42private:
46};
48
49} // namespace vpkpp
#define SOURCEPP_BITFLAGS_ENUM(Enum)
Defines bitwise operators for an enum or enum class.
Definition: Macros.h:26
#define VPKPP_REGISTER_PACKFILE_OPEN(extension, function)
Definition: PackFile.h:242
PackFileReadOnly(const std::string &fullFilePath_)
Definition: PackFile.cpp:720
EntryCallbackBase< void > EntryCallback
Definition: PackFile.h:30
Definition: VPP.h:14
constexpr std::string_view getGUID() const override
Get the GUID corresponding to the pack file type.
Definition: VPP.h:27
static std::unique_ptr< PackFile > open(const std::string &path, const EntryCallback &callback=nullptr)
Open a VPP file.
Definition: VPP.cpp:12
static constexpr std::string_view GUID
Definition: VPP.h:25
Flags flags
Definition: VPP.h:38
Attribute getSupportedEntryAttributes() const override
Returns a list of supported entry attributes Mostly for GUI programs that show entries and their meta...
Definition: VPP.cpp:261
Flags
Definition: VPP.h:16
@ FLAG_NONE
Definition: VPP.h:17
@ FLAG_COMPRESSED
Definition: VPP.h:18
@ FLAG_CONDENSED
Definition: VPP.h:19
std::vector< std::byte > uncondensedData
Definition: VPP.h:40
std::optional< std::vector< std::byte > > readEntry(const std::string &path_) const override
Try to read the entry's data to a bytebuffer.
Definition: VPP.cpp:220
uint32_t entryBaseOffset
Definition: VPP.h:39
Definition: Attribute.h:5
constexpr uint32_t VPP_ALIGNMENT
Definition: VPP.h:9
constexpr std::string_view VPP_EXTENSION_PC
Definition: VPP.h:11
constexpr uint32_t VPP_SIGNATURE_BIG
Definition: VPP.h:8
Attribute
Definition: Attribute.h:7
constexpr std::string_view VPP_EXTENSION
Definition: VPP.h:10
constexpr uint32_t VPP_SIGNATURE_LIL
Definition: VPP.h:7
constexpr std::string_view VPP_EXTENSION_XBOX2
Definition: VPP.h:12