aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/moslib/ds/array.h12
-rw-r--r--include/moslib/ds/hashmap.h17
-rw-r--r--include/moslib/string.h6
-rw-r--r--src/ds/array.c16
-rw-r--r--src/string.c6
5 files changed, 29 insertions, 28 deletions
diff --git a/include/moslib/ds/array.h b/include/moslib/ds/array.h
index d71e434..36acc03 100644
--- a/include/moslib/ds/array.h
+++ b/include/moslib/ds/array.h
@@ -472,7 +472,7 @@
//
// Returns:
// length of the array
-extern size_t mos_arr_len(void *arr);
+extern size_t mos_arr_len(const void *arr);
// Set the length of the array
// If it's bigger than current length - it will zero new items
@@ -497,7 +497,7 @@ extern size_t mos_arr_len(void *arr);
//
// Returns:
// capacity of the array
-extern size_t mos_arr_cap(void *arr);
+extern size_t mos_arr_cap(const void *arr);
// Set the capacity of the array
// If it's lower than current length - it will set the capacity equal to length
@@ -526,10 +526,10 @@ extern void mos_arr_free(void *arr);
extern void mos_arr_append_fn(void *p_arr, size_t el_size, size_t init_cap);
extern void mos_arr_insert_fn(void *p_arr, size_t i, size_t el_size, size_t init_cap);
extern void mos_arr_put_fn(void *p_arr, size_t i, size_t el_size, size_t init_cap);
-extern size_t mos_arr_append_n_fn(void *p_arr, void *items, size_t n, size_t el_size, size_t init_cap);
-extern size_t mos_arr_insert_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_size, size_t init_cap);
-extern size_t mos_arr_put_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_size, size_t init_cap);
-extern size_t mos_arr_concat_fn(void *p_arr, void *arr2, size_t el_size, size_t init_cap);
+extern size_t mos_arr_append_n_fn(void *p_arr, const void *items, size_t n, size_t el_size, size_t init_cap);
+extern size_t mos_arr_insert_n_fn(void *p_arr, size_t i, const void *items, size_t n, size_t el_size, size_t init_cap);
+extern size_t mos_arr_put_n_fn(void *p_arr, size_t i, const void *items, size_t n, size_t el_size, size_t init_cap);
+extern size_t mos_arr_concat_fn(void *p_arr, const void *arr2, size_t el_size, size_t init_cap);
extern size_t mos_arr_del_fn(void *arr, size_t i, size_t el_size);
extern size_t mos_arr_del_n_fn(void *arr, size_t i, size_t n, size_t el_size);
extern size_t mos_arr_del_left_fn(void *arr, size_t n, size_t el_size);
diff --git a/include/moslib/ds/hashmap.h b/include/moslib/ds/hashmap.h
index f366393..c4af82d 100644
--- a/include/moslib/ds/hashmap.h
+++ b/include/moslib/ds/hashmap.h
@@ -27,11 +27,12 @@
//
// It accepts these optional arguments:
//
-// .key (enum {DEFAULT, STR, SS}) - use predefined hash and equals functions
-// for C strings or StringSlice
-// .hash (uint32_t (*)(void *key)) - user defined hash function
-// .eq (int (*)(void *key1, void *key2)) - user defined equals function
-// should return 1 if keys are equal, 0 otherwise
+// .key (enum {DEFAULT, STR, SS}) - use predefined hash and equals functions
+// for C strings or StringSlice
+// .hash (uint32_t (*)(const void *key)) - user defined hash function
+// .eq (int (*)(const void *key1, cosnt void *key2)) - user defined equals function
+// should return 1 if keys are equal,
+// 0 otherwise
//
// .hash and .eq will overwrite the functions set by .key.
//
@@ -45,7 +46,7 @@
// HM_DEF(ss_float, StringSlice, float);
// ss_float *hm2 = hm_new(.key = SS);
//
-// uint32_t hash_int(void *key) {
+// uint32_t hash_int(const void *key) {
// return (uint32_t)(*(int *)key);
// }
// HM_DEF(int_int, int, int);
@@ -120,8 +121,8 @@
typedef struct {
enum { DEFAULT, STR, SS } key;
- uint32_t (*hash)(void *key);
- int (*eq)(void *key1, void *key2);
+ uint32_t (*hash)(const void *key);
+ int (*eq)(const void *key1, const void *key2);
} MosHmInitArgs;
// clang-format off
diff --git a/include/moslib/string.h b/include/moslib/string.h
index cbba69f..165bdf7 100644
--- a/include/moslib/string.h
+++ b/include/moslib/string.h
@@ -231,7 +231,7 @@ extern MosStringSlice mos_ss_copy(MosStringSlice ss);
//
// Returns:
// a newly created string slice
-extern MosStringSlice mos_ss_from_arr(char *arr);
+extern MosStringSlice mos_ss_from_arr(const char *arr);
// Create a string slice from two variables representing it
//
@@ -433,7 +433,7 @@ extern int mos_ss_del_suffix(MosStringSlice *ss, MosStringSlice suffix);
//
// Returns:
// 1 if the prefix was deleted, 0 otherwise
-extern int mos_ss_del_prefix_str(MosStringSlice *ss, char *prefix);
+extern int mos_ss_del_prefix_str(MosStringSlice *ss, const char *prefix);
// Delete the string suffix from a slice
// If it's not the suffix, do nothing
@@ -447,7 +447,7 @@ extern int mos_ss_del_prefix_str(MosStringSlice *ss, char *prefix);
//
// Returns:
// 1 if the suffix was deleted, 0 otherwise
-extern int mos_ss_del_suffix_str(MosStringSlice *ss, char *suffix);
+extern int mos_ss_del_suffix_str(MosStringSlice *ss, const char *suffix);
// Split a slice by a character delimiter
// If the delimiter is not found - treats the end of the slice as the delimiter
diff --git a/src/ds/array.c b/src/ds/array.c
index 6d4ca13..61978bf 100644
--- a/src/ds/array.c
+++ b/src/ds/array.c
@@ -12,7 +12,7 @@ typedef struct {
size_t cap;
} Header;
-Header *arr2hdr(void *arr) {
+Header *arr2hdr(const void *arr) {
return (Header *)arr - 1;
}
@@ -45,7 +45,7 @@ void *expand(void *arr, size_t min_cap, size_t el_size) {
// init array if it's not, define arr, hdr vars and expand to fit min_cap
#define ini(min_cap) \
!*(void**)p_arr ? *(void **)p_arr = init(init_cap, el_size) : 0; \
- Header *hdr = arr2hdr(*(void**)p_arr); \
+ Header *hdr = arr2hdr(*(void**)p_arr); \
*(void **)p_arr = expand(*(void**)p_arr, min_cap, el_size); \
void *arr = *(void **)p_arr; \
hdr = arr2hdr(arr)
@@ -70,7 +70,7 @@ void mos_arr_put_fn(void *p_arr, size_t i, size_t el_size, size_t init_cap) {
}
}
-size_t mos_arr_append_n_fn(void *p_arr, void *items, size_t n, size_t el_size, size_t init_cap) {
+size_t mos_arr_append_n_fn(void *p_arr, const void *items, size_t n, size_t el_size, size_t init_cap) {
ini(hdr->len + n);
size_t i = hdr->len;
@@ -79,7 +79,7 @@ size_t mos_arr_append_n_fn(void *p_arr, void *items, size_t n, size_t el_size, s
return i;
}
-size_t mos_arr_insert_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_size, size_t init_cap) {
+size_t mos_arr_insert_n_fn(void *p_arr, size_t i, const void *items, size_t n, size_t el_size, size_t init_cap) {
ini(hdr->len + n);
if (i >= hdr->len)
return mos_arr_append_n_fn(p_arr, items, n, el_size, init_cap);
@@ -90,7 +90,7 @@ size_t mos_arr_insert_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t
return i;
}
-size_t mos_arr_put_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_size, size_t init_cap) {
+size_t mos_arr_put_n_fn(void *p_arr, size_t i, const void *items, size_t n, size_t el_size, size_t init_cap) {
ini(i + n + 1);
if (i > hdr->len) {
memset((char *)arr + hdr->len * el_size, 0, (i - hdr->len) * el_size);
@@ -102,7 +102,7 @@ size_t mos_arr_put_n_fn(void *p_arr, size_t i, void *items, size_t n, size_t el_
return i;
}
-size_t mos_arr_concat_fn(void *p_arr, void *arr2, size_t el_size, size_t init_cap) {
+size_t mos_arr_concat_fn(void *p_arr, const void *arr2, size_t el_size, size_t init_cap) {
size_t arr2_len = mos_arr_len(arr2);
if (arr2_len == 0)
return -1;
@@ -142,7 +142,7 @@ size_t mos_arr_del_right_fn(void *arr, size_t n) {
return new_n;
}
-size_t mos_arr_len(void *arr) {
+size_t mos_arr_len(const void *arr) {
if (!arr)
return 0;
return arr2hdr(arr)->len;
@@ -159,7 +159,7 @@ size_t mos_arr_set_len_fn(void *p_arr, size_t len, size_t el_size, size_t init_c
return del;
}
-size_t mos_arr_cap(void *arr) {
+size_t mos_arr_cap(const void *arr) {
if (!arr)
return 0;
return arr2hdr(arr)->cap;
diff --git a/src/string.c b/src/string.c
index 91ebb79..c744578 100644
--- a/src/string.c
+++ b/src/string.c
@@ -15,7 +15,7 @@ MosStringSlice mos_ss_copy(MosStringSlice ss) {
return mos_ss_from_vars(ss.data, ss.len);
}
-MosStringSlice mos_ss_from_arr(char *arr) {
+MosStringSlice mos_ss_from_arr(const char *arr) {
return mos_ss_from_vars(arr, mos_arr_len(arr));
}
@@ -117,11 +117,11 @@ int mos_ss_del_suffix(MosStringSlice *ss, MosStringSlice suffix) {
return 1;
}
-int mos_ss_del_prefix_str(MosStringSlice *ss, char *prefix) {
+int mos_ss_del_prefix_str(MosStringSlice *ss, const char *prefix) {
return mos_ss_del_prefix(ss, mos_ss_from_str(prefix));
}
-int mos_ss_del_suffix_str(MosStringSlice *ss, char *suffix) {
+int mos_ss_del_suffix_str(MosStringSlice *ss, const char *suffix) {
return mos_ss_del_suffix(ss, mos_ss_from_str(suffix));
}