Rolled my own string_to_runes

This commit is contained in:
Edward R. Gonzalez 2024-03-05 10:19:27 -05:00
parent fd44001456
commit ceb746e537

View File

@ -1,12 +1,11 @@
package sectr
string_to_runes :: proc( content : string, allocator := context.allocator ) -> ( []rune, AllocatorError )
string_to_runes_array :: proc( content : string, allocator := context.allocator ) -> ( []rune, AllocatorError )
{
num := cast(u64) str_rune_count(content)
runes_array, alloc_error := array_init_reserve( rune, allocator, num )
if alloc_error != AllocatorError.None {
ensure( false, "Failed to allocate runes array" )
return nil, alloc_error
}
@ -19,3 +18,19 @@ string_to_runes :: proc( content : string, allocator := context.allocator ) -> (
}
return runes, alloc_error
}
string_to_runes :: proc "odin" (s: string, allocator := context.allocator) -> (runes: []rune, alloc_error : AllocatorError) {
num := str_rune_count(s)
runes, alloc_error = make([]rune, num, allocator)
if alloc_error != AllocatorError.None {
return nil, alloc_error
}
idx := 0
for codepoint in s {
runes[idx] = codepoint
idx += 1
}
return
}