diff options
| author | spl3g <spleefer6@yandex.ru> | 2025-03-11 22:37:43 +0300 |
|---|---|---|
| committer | spl3g <spleefer6@yandex.ru> | 2025-03-11 22:37:43 +0300 |
| commit | a854e4cfa450590753171fbbe4dde8da4f504abd (patch) | |
| tree | fb1d91910e5a86a6460654af289fbb4b3ef707b7 /const_strings.h | |
| parent | 74ab2f6b89ceb2af34524386d6003746570d2b03 (diff) | |
Move everything to the lib folder
Diffstat (limited to 'const_strings.h')
| -rw-r--r-- | const_strings.h | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/const_strings.h b/const_strings.h deleted file mode 100644 index 3f13b95..0000000 --- a/const_strings.h +++ /dev/null @@ -1,108 +0,0 @@ -#ifndef CONST_STRINGS_H_ -#define CONST_STRINGS_H_ - -#include <string.h> -#include <stdio.h> -#include <stdbool.h> - -typedef struct { - char* data; - int len; -} const_string; - - -const_string cs_from_parts(char* data, int len); -const_string cs_from_cstr(char* cstr); -const_string cs_slice(const_string src, int from, int to); -const_string cs_chop_delim(const_string *src, char delim); -int cs_find_delim(const_string str, char delim); -void cs_print(char *format, const_string str); - -#define CS(cstr) cs_from_parts(cstr, sizeof(cstr) - 1) -#define CS_STATIC(cstr) {.data = cstr, .len = sizeof(cstr) - 1} - -#endif // STRINGS_H_ - - -#ifdef CONST_STRINGS_IMPLEMENTATION - -const_string cs_from_parts(char* data, int len) { - const_string str; - str.data = data; - str.len = len; - - return str; -} - -const_string cs_from_cstr(char* cstr) { - return cs_from_parts(cstr, strlen(cstr)); -} - -char* cs_to_cstr(const_string str) { - str.data[str.len] = '\0'; - return str.data; -} - -const_string cs_slice(const_string src, int from, int to) { - if (from > src.len) { - return src; - } - - int new_from; - if (from <= 0) { - new_from = 1; - } - new_from -= 1; - - int new_len; - if (to > src.len) { - new_len = src.len; - } else { - new_len = to; - } - - return cs_from_parts(src.data + new_from, new_len); -} - -const_string cs_chop_delim(const_string *str, char delim) { - int n; - for (n = 0; n < str->len && str->data[n] != delim; n++) {} - - const_string result = cs_from_parts(str->data, n); - - if (n < str->len) { - str->len -= n + 1; - str->data += n + 1; - } else { - str->len -= n; - str->data += n; - } - - return result; -} - -int cs_find_delim(const_string str, char delim) { - int n; - for (n = 0; n < str.len && str.data[n] != delim; n++) {} - - if (n < str.len) { - return n; - } - return -1; -} - -bool cs_eq(const_string str1, const_string str2) { - if (str1.len != str2.len) { - return false; - } - return memcmp(str1.data, str2.data, str1.len) == 0; -} - -void cs_print(char *format, const_string str) { - char buf[str.len + 1]; - memcpy(buf, str.data, str.len); - buf[str.len] = '\0'; - printf(format, buf); -} - -#endif // STRINGS_IMPLEMENTATION |
