From aa19580474f96c9aacf5e85008013891ad2a7045 Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Mon, 18 Nov 2024 17:02:20 +0100 Subject: Start working on advanced formatting --- src/format.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/format.h (limited to 'src/format.h') diff --git a/src/format.h b/src/format.h new file mode 100644 index 0000000..bceff0c --- /dev/null +++ b/src/format.h @@ -0,0 +1,42 @@ +#ifndef COMET_FORMAT_H +#define COMET_FORMAT_H + +#include +#include + +typedef struct { + char **parts; + size_t length; +} format_t; + +typedef enum { + FORMAT_SUCCESS, + FORMAT_NESTED, + FORMAT_UNKNOWN, + FORMAT_UNTERMINATED, +} format_status_t; + +typedef enum { + FORMAT_NONE, + FORMAT_STRING, + FORMAT_BYTE, + FORMAT_FUNCTION, +} format_action_t; + +typedef char *(*format_function_t)(const char *key); + +typedef struct { + format_action_t action; + const char *key; + union { + const char *value; + uint8_t byte; + format_function_t fn; + }; +} format_pair_t; + +format_status_t format_init(format_t *format, const char *string, char delim, const format_pair_t *pairs); + +void format_free(format_t *format); + +#endif -- cgit v1.2.3