diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-11-29 15:38:57 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-11-29 15:38:57 +0000 |
commit | ac70d4031c5760e756e1d9ffd5228204969afc5f (patch) | |
tree | 3e1011b947adc45aff93559e645a2656dbe8c1ab | |
parent | 1cba5ccd8d3c95198bf5858af2540d3e1aedfb2d (diff) | |
download | ovm-ac70d4031c5760e756e1d9ffd5228204969afc5f.tar.gz ovm-ac70d4031c5760e756e1d9ffd5228204969afc5f.tar.bz2 ovm-ac70d4031c5760e756e1d9ffd5228204969afc5f.zip |
Added function to copy tokens
This essentially just copies the internal string of the token into a
new buffer.
-rw-r--r-- | asm/lexer.c | 9 | ||||
-rw-r--r-- | asm/lexer.h | 2 |
2 files changed, 11 insertions, 0 deletions
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, |