diff options
Diffstat (limited to 'src/dged/settings-parse.h')
| -rw-r--r-- | src/dged/settings-parse.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/dged/settings-parse.h b/src/dged/settings-parse.h new file mode 100644 index 0000000..63a0f1e --- /dev/null +++ b/src/dged/settings-parse.h @@ -0,0 +1,44 @@ +#include <stdbool.h> +#include <stdint.h> +#include <stddef.h> + +#include "vec.h" + +enum token_type { + Token_Comment, + Token_Key, + Token_StringValue, + Token_BoolValue, + Token_IntValue, + Token_Table, + Token_InlineTable, + + Token_Error, +}; + +struct token { + enum token_type type; + void *data; + uint32_t len; + uint32_t row; + uint32_t col; +}; + +typedef size_t (*getbytes)(size_t nbytes, uint8_t *buf, void *userdata); +struct reader { + getbytes getbytes; + void *userdata; +}; + +struct parser { + uint32_t row; + uint32_t col; + + struct reader reader; + VEC(uint8_t) buffer; +}; + +struct parser parser_create(struct reader reader); +void parser_destroy(struct parser *parser); + +bool parser_next_token(struct parser *state, struct token *token_out); |
