diff options
Diffstat (limited to 'src/escpos/stack.h')
-rw-r--r-- | src/escpos/stack.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/escpos/stack.h b/src/escpos/stack.h new file mode 100644 index 0000000..ce79551 --- /dev/null +++ b/src/escpos/stack.h @@ -0,0 +1,41 @@ +#pragma once + +#include "util/membuf.h" +#include <stdint.h> + +struct varbuf { + struct membuf buf; + size_t offset; +}; + +void +varbuf_begin(struct varbuf *var); + +void +varbuf_reset(struct varbuf *var); + +void +varbuf_remove_last(struct varbuf *var); + +struct stack { + struct varbuf var; + + union { + struct escpos_mem str; + uint8_t num; + }; + + enum stack_type { + STACK_STR, + STACK_NUM, + } type; +}; + +void +stack_num(struct stack *stack, const uint8_t base); + +const struct escpos_mem* +stack_get_str(const struct stack *stack); + +uint8_t +stack_get_num(const struct stack *stack); |