diff --git a/src/tokens.c b/src/tokens.c index fb8cbe48..3fd6a949 100644 --- a/src/tokens.c +++ b/src/tokens.c @@ -19,6 +19,12 @@ tokenized_string_t *tokenized_string_new_size(size_t len, size_t num_tokens) { return self; } +inline tokenized_string_t *tokenized_string_new_from_str_size(char *src, size_t len, size_t num_tokens) { + tokenized_string_t *self = tokenized_string_new_size(len, num_tokens); + self->str = src; + return self; +} + void tokenized_string_add_token(tokenized_string_t *self, const char *src, size_t len, uint16_t token_type, size_t position) { char *ptr = (char *) (src + position); diff --git a/src/tokens.h b/src/tokens.h index c8ab2d08..6b314417 100644 --- a/src/tokens.h +++ b/src/tokens.h @@ -28,6 +28,7 @@ typedef struct tokenized_string { tokenized_string_t *tokenized_string_new(void); tokenized_string_t *tokenized_string_new_size(size_t len, size_t num_tokens); +tokenized_string_t *tokenized_string_new_from_str_size(char *src, size_t len, size_t num_tokens); tokenized_string_t *tokenized_string_from_tokens(char *src, token_array *tokens, bool copy_tokens); void tokenized_string_add_token(tokenized_string_t *self, const char *src, size_t len, uint16_t token_type, size_t position); char *tokenized_string_get_token(tokenized_string_t *self, uint32_t index);