strings.odin 439 B

12345678910111213141516171819202122
  1. import "mem.odin";
  2. new_string :: proc(s: string) -> string {
  3. c := make([]u8, len(s)+1);
  4. copy(c, cast([]u8)s);
  5. c[len(s)] = 0;
  6. return string(c[..len(s)]);
  7. }
  8. new_c_string :: proc(s: string) -> ^u8 {
  9. c := make([]u8, len(s)+1);
  10. copy(c, cast([]u8)s);
  11. c[len(s)] = 0;
  12. return &c[0];
  13. }
  14. to_odin_string :: proc(c: ^u8) -> string {
  15. if c == nil do return "";
  16. len := 0;
  17. for (c+len)^ != 0 do len+=1;
  18. return string(mem.slice_ptr(c, len));
  19. }