strings.odin 692 B

123456789101112131415161718192021222324252627282930313233
  1. package strings
  2. import "core:mem"
  3. new_string :: proc(s: string) -> string {
  4. c := make([]byte, len(s)+1);
  5. copy(c, cast([]byte)s);
  6. c[len(s)] = 0;
  7. return string(c[:len(s)]);
  8. }
  9. new_cstring :: proc(s: string) -> cstring {
  10. c := make([]byte, len(s)+1);
  11. copy(c, cast([]byte)s);
  12. c[len(s)] = 0;
  13. return cstring(&c[0]);
  14. }
  15. @(deprecated="Please use a standard cast for cstring to string")
  16. to_odin_string :: proc(str: cstring) -> string {
  17. return string(str);
  18. }
  19. string_from_ptr :: proc(ptr: ^byte, len: int) -> string {
  20. return transmute(string)mem.Raw_String{ptr, len};
  21. }
  22. contains_rune :: proc(s: string, r: rune) -> int {
  23. for c, offset in s {
  24. if c == r do return offset;
  25. }
  26. return -1;
  27. }