1
0

DString.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef SCUFCONT_DSTRING_H_
  2. #define SCUFCONT_DSTRING_H_
  3. #include <stdbool.h>
  4. #include <stddef.h>
  5. #include "scufcont.h"
  6. #define SCDSTRING_FMT(dstr) (int) (dstr).len, (dstr).data
  7. #define SCDString_is_null(dstr) ((dstr)->data == NULL)
  8. #define SCDString_c_str(dstr) ((dstr)->data)
  9. typedef struct {
  10. char *data;
  11. size_t len;
  12. size_t capacity;
  13. } SCDString;
  14. ScufContResult SCDString_alloc(SCDString *const dstr, const char *str, const size_t len);
  15. ScufContResult SCDString_alloc_copy(SCDString *const dstr, const SCDString *const o);
  16. ScufContResult SCDString_reserve(SCDString *const dstr, const size_t new_capacity);
  17. void SCDString_free(SCDString *const dstr);
  18. ScufContResult SCDString_copy(const SCDString *const src, SCDString *const dst);
  19. bool SCDString_equal(const SCDString *const s1, const SCDString *s2);
  20. bool SCDString_equal_c_str(const SCDString *const s1, const char *s2);
  21. bool SCDString_equal_next_chars_c_str(
  22. const SCDString *const dstr,
  23. const char *str,
  24. const size_t str_len,
  25. const size_t s
  26. );
  27. ScufContResult SCDString_concat_char(SCDString *const dstr, const char ch);
  28. ScufContResult SCDString_concat_c_str(
  29. SCDString *const dstr,
  30. const char *str,
  31. const size_t str_len
  32. );
  33. ScufContResult SCDString_alloc_concat_c_strs(
  34. SCDString *const dstr,
  35. const char *s1,
  36. const size_t s1_len,
  37. const char *s2,
  38. const size_t s2_len
  39. );
  40. ScufContResult SCDString_split(
  41. const SCDString *const dstr,
  42. const char *delim,
  43. SCDString **const split_arr,
  44. size_t *const arr_len
  45. );
  46. void SCDString_split_arr_free(SCDString **const arr, const size_t arr_len);
  47. ScufContResult SCDString_char_mod(SCDString *const dstr, const size_t at, const char ch);
  48. ScufContResult SCDString_char_remove_no_resize(SCDString *const dstr, const size_t at);
  49. ScufContResult SCDString_char_remove(SCDString *const dstr, const size_t at);
  50. ScufContResult SCDString_char_insert(SCDString *const dstr, const size_t at, const char ch);
  51. #endif // SCUFCONT_DSTRING_H_