diff options
Diffstat (limited to 'src/format.h')
| -rw-r--r-- | src/format.h | 42 |
1 files changed, 42 insertions, 0 deletions
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 <stdint.h> +#include <stdbool.h> + +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 |
