summaryrefslogtreecommitdiff
path: root/src/escpos/stack.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/escpos/stack.h')
-rw-r--r--src/escpos/stack.h41
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);