From 5cc2947143f2a6ebd4ef1ae4d25ab956b87de808 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 21 Jul 2026 21:27:03 +0200 Subject: Redefine strings as slice of constant characters --- source/main.elna | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'source/main.elna') diff --git a/source/main.elna b/source/main.elna index 4a23898..c127ba4 100644 --- a/source/main.elna +++ b/source/main.elna @@ -40,19 +40,13 @@ var proc reallocarray(ptr: Pointer; n: Word; size: Word): Pointer return realloc(ptr, n * size) -proc substring(string: String; start: Word; count: Word): String -return String(string.ptr + start, count) - -proc open_substring(string: String; start: Word): String -return substring(string, start, string.length - start) - -proc string_dup(origin: String): String +proc string_dup(origin: []const Char): []const Char var copy: ^Char begin copy := malloc(origin.length); strncpy(copy, origin.ptr, origin.length) -return String(copy, origin.length) +return copy[1 to origin.length] proc string_buffer_new(): StringBuffer var @@ -78,11 +72,11 @@ begin buffer^.size := buffer^.size - count return -proc string_buffer_clear(buffer: ^StringBuffer): String +proc string_buffer_clear(buffer: ^StringBuffer): []const Char var - result: String + result: []const Char begin - result := String(cast(buffer^.data: ^Char), buffer^.size); + result := cast(buffer^.data: ^Char)[1 to buffer^.size]; buffer^.size := 0u return result @@ -300,7 +294,7 @@ begin return (* Categorize an identifier. *) -proc lexer_categorize(token_content: String): ^ElnaLexerToken +proc lexer_categorize(token_content: []const Char): ^ElnaLexerToken var current_token: ^ElnaLexerToken begin -- cgit v1.2.3