A lot of formatting and an untested implementation of espr_create_tree.

This commit is contained in:
2022-09-08 12:23:16 +10:00
parent 4d7bdcf3cc
commit ff95aeafbf
4 changed files with 507 additions and 351 deletions

View File

@@ -109,6 +109,10 @@ extern "C" {
char _pad[4];
};
struct sized_buf {
char *data;
size_t size;
};
//
// === ENUMS ===
@@ -172,7 +176,7 @@ extern "C" {
Group *group;
Record *record;
} header;
char *const data;
char *data;
enum node_type type;
uint32_t _pad;
};
@@ -196,8 +200,8 @@ extern "C" {
* will be passed to pre and post when they are called.
*/
struct walker_callbacks {
void (*pre)(Node n, void *data, void **carry_out);
void (*post)(Node n, void *data, void **carry_in);
void (*pre)(Node n, void *data, void **carry_out, void *from_parent, void **to_children);
void (*post)(Node n, void *data, void *carry_in);
void *data;
};
@@ -227,7 +231,8 @@ extern "C" {
struct meta_node {
Node n;
MetaNode *parent;
MetaNode *child;
MetaNode *first_child;
MetaNode *last_child;
MetaNode *prev;
MetaNode *next;
};
@@ -349,7 +354,7 @@ extern "C" {
*/
void espr_decompress(char *data, size_t size, char *buf, size_t buf_size);
MetaNode *espr_create_tree(struct sized_buf in, struct sized_buf tree);
// End C++ guard
#ifdef __cplusplus