strings.odin 584 B

1234567891011121314151617181920212223242526272829
  1. import "core:mem.odin"
  2. new_string :: proc(s: string) -> string {
  3. c := make([]byte, len(s)+1);
  4. copy(c, cast([]byte)s);
  5. c[len(s)] = 0;
  6. return string(c[..len(s)]);
  7. }
  8. new_c_string :: proc(s: string) -> ^byte {
  9. c := make([]byte, len(s)+1);
  10. copy(c, cast([]byte)s);
  11. c[len(s)] = 0;
  12. return &c[0];
  13. }
  14. to_odin_string :: proc(str: ^byte) -> string {
  15. if str == nil do return "";
  16. end := str;
  17. for end^ != 0 do end+=1;
  18. return string(mem.slice_ptr(str, end-str));
  19. }
  20. contains_rune :: proc(s: string, r: rune) -> int {
  21. for c, offset in s {
  22. if c == r do return offset;
  23. }
  24. return -1;
  25. }