diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-07-21 21:27:03 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-07-21 21:27:03 +0200 |
| commit | 5cc2947143f2a6ebd4ef1ae4d25ab956b87de808 (patch) | |
| tree | 0d4489b298da3be04ed4bce117f616468146a0f8 /source | |
| parent | 44d6e8a27294e5ca7300ab11900011b73d9336d4 (diff) | |
| download | elna-cpp.tar.gz | |
Diffstat (limited to 'source')
| -rw-r--r-- | source/common.elna | 4 | ||||
| -rw-r--r-- | source/cstdio.elna | 14 | ||||
| -rw-r--r-- | source/cstring.elna | 14 | ||||
| -rw-r--r-- | source/lexer.elna | 10 | ||||
| -rw-r--r-- | source/main.elna | 18 |
5 files changed, 27 insertions, 33 deletions
diff --git a/source/common.elna b/source/common.elna index b6f85f1..1bdfa1f 100644 --- a/source/common.elna +++ b/source/common.elna @@ -17,7 +17,7 @@ type proc write*(fd: Int; buf: Pointer; Word: Int): Int extern -proc write_s*(value: String) +proc write_s*(value: []const Char) begin (* fwrite(cast(value.ptr: Pointer), value.length, 1u, stdout) *) write(1, cast(value.ptr: Pointer), cast(value.length: Int)) @@ -78,7 +78,7 @@ begin return nil (* Returns true or false depending whether two strings are equal. *) -proc string_compare*(lhs_pointer: ^Char; lhs_length: Word; rhs_pointer: String): Bool +proc string_compare*(lhs_pointer: ^Char; lhs_length: Word; rhs_pointer: []const Char): Bool var result: Bool begin diff --git a/source/cstdio.elna b/source/cstdio.elna index 15c467e..f44a972 100644 --- a/source/cstdio.elna +++ b/source/cstdio.elna @@ -10,7 +10,7 @@ var stdout*: ^FILE := extern stderr*: ^FILE := extern -proc fopen*(pathname: ^Char; mode: ^Char): ^FILE +proc fopen*(pathname, mode: ^const Char): ^FILE extern proc fclose*(stream: ^FILE): Int @@ -31,28 +31,28 @@ extern proc fread*(ptr: Pointer; size: Word; nmemb: Word; stream: ^FILE): Word extern -proc fwrite*(ptr: Pointer; size: Word; nitems: Word; stream: ^FILE): Word +proc fwrite*(ptr: const Pointer; size: Word; nitems: Word; stream: ^FILE): Word extern proc fputc*(c: Int; stream: ^FILE): Word extern -proc perror*(s: ^Char) +proc perror*(s: ^const Char) extern -proc puts*(s: ^Char): Int +proc puts*(s: ^const Char): Int extern proc putchar*(c: Int): Int extern -proc sprintf*(str: Pointer; format: ^Char; number: Word): Int +proc sprintf*(str: Pointer; format: ^const Char; number: Word): Int extern -proc fprintf*(stream: Pointer; format: ^Char; number: Word): Int +proc fprintf*(stream: Pointer; format: ^const Char; number: Word): Int extern -proc fdopen*(fildes: Int; mode: ^Char): Pointer +proc fdopen*(fildes: Int; mode: ^const Char): Pointer extern end. diff --git a/source/cstring.elna b/source/cstring.elna index e21056a..0b4bd90 100644 --- a/source/cstring.elna +++ b/source/cstring.elna @@ -5,25 +5,25 @@ proc memset*(ptr: Pointer; c: Int; n: Word): ^Char extern -proc memcpy*(dst, src: Pointer; n: Word) +proc memcpy*(dst: Pointer; src: const Pointer; n: Word) extern -proc memcmp*(s1, s2: Pointer; n: Word): Int +proc memcmp*(s1, s2: const Pointer; n: Word): Int extern -proc strcmp*(s1: ^Char; s2: ^Char): Int +proc strcmp*(s1: ^const Char; s2: ^const Char): Int extern -proc strncmp*(s1: ^Char; s2: ^Char; n: Word): Int +proc strncmp*(s1: ^const Char; s2: ^const Char; n: Word): Int extern -proc strncpy*(dst: ^Char; src: ^Char; dsize: Word): ^Char +proc strncpy*(dst: ^Char; src: ^const Char; dsize: Word): ^Char extern -proc strcpy*(dst: ^Char; src: ^Char): ^Char +proc strcpy*(dst: ^Char; src: ^const Char): ^Char extern -proc strlen*(ptr: ^Char): Word +proc strlen*(ptr: ^const Char): Word extern end. diff --git a/source/lexer.elna b/source/lexer.elna index 9e1db21..fa79917 100644 --- a/source/lexer.elna +++ b/source/lexer.elna @@ -28,7 +28,7 @@ type ) ElnaLexerToken* = record kind: ElnaLexerKind; - start: String; (* DEPRECATED *) + start: []const Char; (* DEPRECATED *) position: ElnaPosition end ElnaLexerBooleanToken* = record(ElnaLexerToken) @@ -38,7 +38,7 @@ type value: Char end ElnaLexerStringToken* = record(ElnaLexerToken) - value: String + value: []const Char end ElnaLexerIntegerToken* = record(ElnaLexerToken) value: Int @@ -540,7 +540,7 @@ begin result_length := cast(position_end - position_start: Word); result := elna_lexer_token_create(ElnaLexerKind.identifier, position); - result^.start := String(position_start, result_length); + result^.start := position_start[1 to result_length]; if position_start^ = '#' then result^.kind := ElnaLexerKind.trait @@ -601,7 +601,7 @@ begin elsif delimiter = '"' then result := elna_lexer_token_create(ElnaLexerKind.string, position) end; - result^.start := String(start_position, cast(end_position - start_position: Word)) + result^.start := start_position[1 to cast(end_position - start_position: Word)] return result proc elna_lexer_classify_integer(start_position, end_position: ^Char; position: ^ElnaPosition): ^ElnaLexerToken @@ -609,7 +609,7 @@ var result: ^ElnaLexerToken begin result := elna_lexer_token_create(ElnaLexerKind.integer, position); - result^.start := String(start_position, cast(end_position - start_position: Word)) + result^.start := start_position[1 to cast(end_position - start_position: Word)] return result proc elna_lexer_classify_finalize(start_position: ^Char; position: ^ElnaPosition): ^ElnaLexerToken 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 |
