SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Loading...
Searching...
No Matches
dmxpp.h
Go to the documentation of this file.
1#pragma once
2
3#include "structs/Value.h"
4
5class BufferStream;
6
7namespace dmxpp {
8
9constexpr int MAX_FORMAT = 64;
10constexpr int MAX_HEADER = 40 + 2 * MAX_FORMAT; // DMX_MAX_HEADER_LENGTH in SDK
11
12namespace Format {
13
14constexpr std::string_view TEXT = "keyvalues2";
15constexpr std::string_view BINARY = "binary";
16constexpr std::string_view SRCTOOLS_UTF8_TEXT = "unicode_keyvalues2";
17constexpr std::string_view SRCTOOLS_UTF8_BINARY = "unicode_binary";
18
19} // namespace Format
20
21class DMX {
22public:
23 DMX(const std::byte* dmxData, std::size_t dmxSize);
24
25 DMX(const unsigned char* dmxData, std::size_t dmxSize);
26
27 explicit DMX(const std::vector<std::byte>& dmxData);
28
29 explicit DMX(const std::vector<unsigned char>& dmxData);
30
31 [[nodiscard]] explicit operator bool() const;
32
33 [[nodiscard]] std::string_view getFormatType() const;
34
35 [[nodiscard]] int getFormatVersion() const;
36
37 [[nodiscard]] std::string_view getEncodingType() const;
38
39 [[nodiscard]] int getEncodingVersion() const;
40
41 [[nodiscard]] const std::vector<DMXElement>& getElements() const;
42
43protected:
44 [[nodiscard]] bool openText(const std::byte* dmxData, std::size_t dmxSize);
45
46 [[nodiscard]] bool openBinary(BufferStream& stream);
47
48private:
49 bool opened = false;
50
51 // Header
52 std::string formatType;
53 int formatVersion = -1;
54 std::string encodingType;
55 int encodingVersion = -1;
56
57 // Elements
58 std::vector<DMXElement> elements;
59};
60
61} // namespace dmxpp
int getFormatVersion() const
Definition: dmxpp.cpp:78
bool openBinary(BufferStream &stream)
Definition: dmxpp.cpp:98
const std::vector< DMXElement > & getElements() const
Definition: dmxpp.cpp:90
std::string_view getEncodingType() const
Definition: dmxpp.cpp:82
bool openText(const std::byte *dmxData, std::size_t dmxSize)
Definition: dmxpp.cpp:94
std::string_view getFormatType() const
Definition: dmxpp.cpp:74
int getEncodingVersion() const
Definition: dmxpp.cpp:86
constexpr std::string_view TEXT
Definition: dmxpp.h:14
constexpr std::string_view SRCTOOLS_UTF8_BINARY
Definition: dmxpp.h:17
constexpr std::string_view BINARY
Definition: dmxpp.h:15
constexpr std::string_view SRCTOOLS_UTF8_TEXT
Definition: dmxpp.h:16
Definition: dmxpp.h:7
constexpr int MAX_HEADER
Definition: dmxpp.h:10
constexpr int MAX_FORMAT
Definition: dmxpp.h:9