From ac70d4031c5760e756e1d9ffd5228204969afc5f Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Wed, 29 Nov 2023 15:38:57 +0000 Subject: Added function to copy tokens This essentially just copies the internal string of the token into a new buffer. --- asm/lexer.c | 9 +++++++++ asm/lexer.h | 2 ++ 2 files changed, 11 insertions(+) (limited to 'asm') diff --git a/asm/lexer.c b/asm/lexer.c index 6358e95..7d1ad8c 100644 --- a/asm/lexer.c +++ b/asm/lexer.c @@ -130,6 +130,15 @@ const char *lerr_as_cstr(lerr_t lerr) return ""; } +token_t token_copy(token_t t) +{ + token_t new = t; + new.str = malloc(t.str_size + 1); + memcpy(new.str, t.str, t.str_size); + new.str[t.str_size] = '\0'; + return new; +} + size_t space_left(buffer_t *buffer) { if (buffer->available == buffer->used) diff --git a/asm/lexer.h b/asm/lexer.h index 3434b72..734ffa1 100644 --- a/asm/lexer.h +++ b/asm/lexer.h @@ -71,6 +71,8 @@ typedef struct size_t str_size; } token_t; +token_t token_copy(token_t); + typedef enum { LERR_OK = 0, -- cgit v1.2.3-13-gbd6f