mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-24 14:45:00 -07:00
Add string16 and cstring16 (UTF-16 based strings)
This commit is contained in:
@@ -1626,11 +1626,17 @@ gb_internal void lb_fill_string(lbProcedure *p, lbAddr const &string, lbValue ba
|
||||
|
||||
gb_internal lbValue lb_string_elem(lbProcedure *p, lbValue string) {
|
||||
Type *t = base_type(string.type);
|
||||
if (t->kind == Type_Basic && t->Basic.kind == Basic_string16) {
|
||||
return lb_emit_struct_ev(p, string, 0);
|
||||
}
|
||||
GB_ASSERT(t->kind == Type_Basic && t->Basic.kind == Basic_string);
|
||||
return lb_emit_struct_ev(p, string, 0);
|
||||
}
|
||||
gb_internal lbValue lb_string_len(lbProcedure *p, lbValue string) {
|
||||
Type *t = base_type(string.type);
|
||||
if (t->kind == Type_Basic && t->Basic.kind == Basic_string16) {
|
||||
return lb_emit_struct_ev(p, string, 1);
|
||||
}
|
||||
GB_ASSERT_MSG(t->kind == Type_Basic && t->Basic.kind == Basic_string, "%s", type_to_string(t));
|
||||
return lb_emit_struct_ev(p, string, 1);
|
||||
}
|
||||
@@ -1641,6 +1647,12 @@ gb_internal lbValue lb_cstring_len(lbProcedure *p, lbValue value) {
|
||||
args[0] = lb_emit_conv(p, value, t_cstring);
|
||||
return lb_emit_runtime_call(p, "cstring_len", args);
|
||||
}
|
||||
gb_internal lbValue lb_cstring16_len(lbProcedure *p, lbValue value) {
|
||||
GB_ASSERT(is_type_cstring16(value.type));
|
||||
auto args = array_make<lbValue>(permanent_allocator(), 1);
|
||||
args[0] = lb_emit_conv(p, value, t_cstring16);
|
||||
return lb_emit_runtime_call(p, "cstring16_len", args);
|
||||
}
|
||||
|
||||
|
||||
gb_internal lbValue lb_array_elem(lbProcedure *p, lbValue array_ptr) {
|
||||
|
||||
Reference in New Issue
Block a user