1234567891011121314151617181920212223242526272829 |
- import "core:mem.odin"
- new_string :: proc(s: string) -> string {
- c := make([]byte, len(s)+1);
- copy(c, cast([]byte)s);
- c[len(s)] = 0;
- return string(c[..len(s)]);
- }
- new_c_string :: proc(s: string) -> ^byte {
- c := make([]byte, len(s)+1);
- copy(c, cast([]byte)s);
- c[len(s)] = 0;
- return &c[0];
- }
- to_odin_string :: proc(str: ^byte) -> string {
- if str == nil do return "";
- end := str;
- for end^ != 0 do end+=1;
- 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;
- }
|