aboutsummaryrefslogtreecommitdiff
path: root/const_strings.h
diff options
context:
space:
mode:
authorspl3g <spleefer6@yandex.ru>2025-03-11 22:37:43 +0300
committerspl3g <spleefer6@yandex.ru>2025-03-11 22:37:43 +0300
commita854e4cfa450590753171fbbe4dde8da4f504abd (patch)
treefb1d91910e5a86a6460654af289fbb4b3ef707b7 /const_strings.h
parent74ab2f6b89ceb2af34524386d6003746570d2b03 (diff)
Move everything to the lib folder
Diffstat (limited to 'const_strings.h')
-rw-r--r--const_strings.h108
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