mirror of
https://github.com/WerWolv/ImHex-Patterns.git
synced 2026-03-27 23:37:04 -05:00
39 lines
774 B
Rust
39 lines
774 B
Rust
#pragma author WerWolv
|
|
#pragma description Valve Binary Value Data Format (.vdf)
|
|
|
|
#pragma eval_depth 0x10000
|
|
|
|
import std.mem;
|
|
import std.sys;
|
|
|
|
enum Type : u8 {
|
|
Set = 0x00,
|
|
String = 0x01,
|
|
Integer = 0x02,
|
|
EndSet = 0x08
|
|
};
|
|
|
|
struct Entry {
|
|
Type type;
|
|
|
|
char name[];
|
|
|
|
if (type == Type::Set) {
|
|
Entry entries[while (std::mem::read_unsigned($, 1) != Type::EndSet)];
|
|
Type endSet [[hidden]];
|
|
std::assert(endSet == Type::EndSet, "Invalid end of set byte!");
|
|
}
|
|
else if (type == Type::Integer)
|
|
u32 value;
|
|
else if (type == Type::String) {
|
|
char value[];
|
|
}
|
|
};
|
|
|
|
struct Set {
|
|
Entry entry [[inline]];
|
|
Type endSet [[hidden]];
|
|
std::assert(endSet == Type::EndSet, "Invalid end of set byte!");
|
|
};
|
|
|
|
Set set[while (std::mem::read_unsigned($ - 1, 1) != Type::EndSet)] @ 0x00; |