diff options
Diffstat (limited to 'src/fspec/ragel/lexer-stack.h')
| -rw-r--r-- | src/fspec/ragel/lexer-stack.h | 42 | 
1 files changed, 42 insertions, 0 deletions
diff --git a/src/fspec/ragel/lexer-stack.h b/src/fspec/ragel/lexer-stack.h new file mode 100644 index 0000000..eebf055 --- /dev/null +++ b/src/fspec/ragel/lexer-stack.h @@ -0,0 +1,42 @@ +#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 fspec_mem str; +      uint64_t num; +   }; + +   enum stack_type { +      STACK_STR, +      STACK_NUM, +   } type; +}; + +void +stack_num(struct stack *stack, const uint8_t base); + +const struct fspec_mem* +stack_get_str(const struct stack *stack); + +uint64_t +stack_get_num(const struct stack *stack);  | 
