|
@@ -1,22 +1,29 @@
|
|
import "core:mem.odin"
|
|
import "core:mem.odin"
|
|
|
|
|
|
new_string :: proc(s: string) -> string {
|
|
new_string :: proc(s: string) -> string {
|
|
- c := make([]u8, len(s)+1);
|
|
|
|
- copy(c, cast([]u8)s);
|
|
|
|
|
|
+ c := make([]byte, len(s)+1);
|
|
|
|
+ copy(c, cast([]byte)s);
|
|
c[len(s)] = 0;
|
|
c[len(s)] = 0;
|
|
return string(c[..len(s)]);
|
|
return string(c[..len(s)]);
|
|
}
|
|
}
|
|
|
|
|
|
-new_c_string :: proc(s: string) -> ^u8 {
|
|
|
|
- c := make([]u8, len(s)+1);
|
|
|
|
- copy(c, cast([]u8)s);
|
|
|
|
|
|
+new_c_string :: proc(s: string) -> ^byte {
|
|
|
|
+ c := make([]byte, len(s)+1);
|
|
|
|
+ copy(c, cast([]byte)s);
|
|
c[len(s)] = 0;
|
|
c[len(s)] = 0;
|
|
return &c[0];
|
|
return &c[0];
|
|
}
|
|
}
|
|
|
|
|
|
-to_odin_string :: proc(str: ^u8) -> string {
|
|
|
|
|
|
+to_odin_string :: proc(str: ^byte) -> string {
|
|
if str == nil do return "";
|
|
if str == nil do return "";
|
|
end := str;
|
|
end := str;
|
|
for end^ != 0 do end+=1;
|
|
for end^ != 0 do end+=1;
|
|
return string(mem.slice_ptr(str, end-str));
|
|
return string(mem.slice_ptr(str, end-str));
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+contains_rune :: proc(s: string, r: rune) -> int {
|
|
|
|
+ for c, offset in s {
|
|
|
|
+ if c == r do return offset;
|
|
|
|
+ }
|
|
|
|
+ return -1;
|
|
|
|
+}
|