SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Loading...
Searching...
No Matches
RIFF.h
Go to the documentation of this file.
1#pragma once
2
3#include <filesystem>
4#include <span>
5#include <utility>
6#include <vector>
7
9
10namespace sndpp {
11
15
16class RIFF {
17public:
18 explicit RIFF(uint32_t type, uint32_t signature = RIFF_SIGNATURE);
19
20 explicit RIFF(std::vector<std::byte>&& riffData, uint32_t type_);
21
22 explicit RIFF(std::span<const std::byte> riffData, uint32_t type_);
23
24 explicit RIFF(const std::filesystem::path& riffPath, uint32_t type_);
25
26 [[nodiscard]] explicit operator bool() const;
27
28 [[nodiscard]] uint32_t getSignature() const;
29
30 [[nodiscard]] bool isBigEndian() const;
31
32 [[nodiscard]] const std::vector<std::pair<uint32_t, std::span<std::byte>>>& getChunks() const;
33
34 [[nodiscard]] bool hasChunk(uint32_t chunkType) const;
35
36 [[nodiscard]] std::vector<std::byte> getFirstChunk(uint32_t chunkType) const;
37
38 [[nodiscard]] bool hasNthChunk(uint32_t chunkType, uint32_t n) const;
39
40 [[nodiscard]] std::vector<std::byte> getNthChunk(uint32_t chunkType, uint32_t n) const;
41
42protected:
43 uint32_t signature;
44 uint32_t type;
45 std::vector<std::pair<uint32_t, std::span<std::byte>>> chunks;
46
47 std::vector<std::byte> data;
48};
49
50} // namespace sndpp
std::vector< std::byte > getFirstChunk(uint32_t chunkType) const
Definition RIFF.cpp:75
std::vector< std::byte > data
Definition RIFF.h:47
const std::vector< std::pair< uint32_t, std::span< std::byte > > > & getChunks() const
Definition RIFF.cpp:65
std::vector< std::byte > getNthChunk(uint32_t chunkType, uint32_t n) const
Definition RIFF.cpp:91
uint32_t signature
Definition RIFF.h:43
uint32_t type
Definition RIFF.h:44
bool hasChunk(uint32_t chunkType) const
Definition RIFF.cpp:69
uint32_t getSignature() const
Definition RIFF.cpp:57
RIFF(uint32_t type, uint32_t signature=RIFF_SIGNATURE)
Definition RIFF.cpp:11
std::vector< std::pair< uint32_t, std::span< std::byte > > > chunks
Definition RIFF.h:45
bool isBigEndian() const
Definition RIFF.cpp:61
bool hasNthChunk(uint32_t chunkType, uint32_t n) const
Definition RIFF.cpp:84
Definition RIFF.h:10
constexpr auto FFIR_SIGNATURE
Definition RIFF.h:14
constexpr auto RIFX_SIGNATURE
Definition RIFF.h:13
constexpr auto RIFF_SIGNATURE
Definition RIFF.h:12
consteval uint32_t makeFourCC(const char fourCC[4])
Creates a FourCC identifier from a string of 4 characters.
Definition Binary.h:20