ACPI AML decompiler w/ CFG recovery and structured pseudocode
1#ifndef TOBI_RD_H
2#define TOBI_RD_H
3
4#include <stddef.h>
5#include <stdint.h>
6
7typedef struct tobi_rd {
8 const uint8_t *data;
9 size_t len;
10 size_t pos;
11 size_t base;
12 int failed;
13} tobi_rd;
14
15void tobi_rd_init(tobi_rd *rd, const uint8_t *data, size_t len, size_t base);
16
17size_t tobi_rd_off(const tobi_rd *rd);
18
19size_t tobi_rd_left(const tobi_rd *rd);
20
21int tobi_rd_u8(tobi_rd *rd, uint8_t *out);
22
23int tobi_rd_peek(const tobi_rd *rd, uint8_t *out);
24
25int tobi_rd_u16(tobi_rd *rd, uint16_t *out);
26
27int tobi_rd_u32(tobi_rd *rd, uint32_t *out);
28
29int tobi_rd_u64(tobi_rd *rd, uint64_t *out);
30
31int tobi_rd_bytes(tobi_rd *rd, uint8_t *out, size_t n);
32
33int tobi_rd_skip(tobi_rd *rd, size_t n);
34
35int tobi_rd_sub(tobi_rd *rd, size_t n, tobi_rd *sub);
36
37int tobi_rd_pkg_len(tobi_rd *rd, size_t *pkg_len, size_t *encoded_len);
38
39#endif