[utils] a few changes to contiguous string arrays
This commit is contained in:
@@ -96,7 +96,7 @@ uint string_translate(char *str, size_t len, char *word_chars, char *word_repls,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ssize_t utf8proc_iterate_reversed(const uint8_t *str, const uint8_t *start, int32_t *dst) {
|
ssize_t utf8proc_iterate_reversed(const uint8_t *str, const uint8_t *start, int32_t *dst) {
|
||||||
ssize_t len;
|
ssize_t len = 0;
|
||||||
|
|
||||||
const uint8_t *ptr = str;
|
const uint8_t *ptr = str;
|
||||||
|
|
||||||
@@ -164,7 +164,6 @@ char *string_strip_whitespace(char *str) {
|
|||||||
char *end;
|
char *end;
|
||||||
|
|
||||||
size_t initial_spaces = 0;
|
size_t initial_spaces = 0;
|
||||||
size_t ending_spaces = 0;
|
|
||||||
|
|
||||||
char *ptr = str;
|
char *ptr = str;
|
||||||
|
|
||||||
@@ -181,7 +180,7 @@ char *string_strip_whitespace(char *str) {
|
|||||||
|
|
||||||
*(end+1) = '\0';
|
*(end+1) = '\0';
|
||||||
|
|
||||||
return str;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
char_array *char_array_from_string(char *str) {
|
char_array *char_array_from_string(char *str) {
|
||||||
@@ -217,6 +216,13 @@ void char_array_terminate(char_array *array) {
|
|||||||
char_array_push(array, '\0');
|
char_array_push(array, '\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char_array *char_array_copy(char_array *array) {
|
||||||
|
char_array *copy = char_array_new_size(array->m);
|
||||||
|
memcpy(copy->a, array->a, array->n);
|
||||||
|
copy->n = array->n;
|
||||||
|
return copy;
|
||||||
|
}
|
||||||
|
|
||||||
void char_array_cat(char_array *array, char *str) {
|
void char_array_cat(char_array *array, char *str) {
|
||||||
char_array_strip_nul_byte(array);
|
char_array_strip_nul_byte(array);
|
||||||
char_array_append(array, str);
|
char_array_append(array, str);
|
||||||
@@ -281,8 +287,6 @@ void char_array_cat_printf(char_array *array, char *format, ...) {
|
|||||||
|
|
||||||
va_list cpy;
|
va_list cpy;
|
||||||
|
|
||||||
char *arg;
|
|
||||||
|
|
||||||
char *buf;
|
char *buf;
|
||||||
size_t buflen;
|
size_t buflen;
|
||||||
|
|
||||||
@@ -363,20 +367,25 @@ cstring_array *cstring_array_from_char_array(char_array *str) {
|
|||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cstring_array_start_token(cstring_array *self) {
|
uint32_t cstring_array_start_token(cstring_array *self) {
|
||||||
uint32_array_push(self->indices, self->str->n);
|
uint32_t index = self->str->n;
|
||||||
|
uint32_array_push(self->indices, index);
|
||||||
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cstring_array_add_string(cstring_array *self, char *str) {
|
uint32_t cstring_array_add_string(cstring_array *self, char *str) {
|
||||||
cstring_array_start_token(self);
|
uint32_t index = cstring_array_start_token(self);
|
||||||
char_array_append(self->str, str);
|
char_array_append(self->str, str);
|
||||||
char_array_terminate(self->str);
|
char_array_terminate(self->str);
|
||||||
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cstring_array_add_string_len(cstring_array *self, char *str, size_t len) {
|
uint32_t cstring_array_add_string_len(cstring_array *self, char *str, size_t len) {
|
||||||
|
uint32_t index = cstring_array_start_token(self);
|
||||||
cstring_array_start_token(self);
|
cstring_array_start_token(self);
|
||||||
char_array_append_len(self->str, str, len);
|
char_array_append_len(self->str, str, len);
|
||||||
char_array_terminate(self->str);
|
char_array_terminate(self->str);
|
||||||
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t cstring_array_get_offset(cstring_array *self, uint32_t i) {
|
int32_t cstring_array_get_offset(cstring_array *self, uint32_t i) {
|
||||||
@@ -395,8 +404,6 @@ cstring_array *cstring_array_split(char *str, const char *separator, size_t sepa
|
|||||||
*count = 0;
|
*count = 0;
|
||||||
char_array *array = char_array_new_size(strlen(str));
|
char_array *array = char_array_new_size(strlen(str));
|
||||||
|
|
||||||
uint32_t index = 0;
|
|
||||||
|
|
||||||
while (*str) {
|
while (*str) {
|
||||||
if ((separator_len == 1 && *str == separator[0]) || (memcmp(str, separator, separator_len) == 0)) {
|
if ((separator_len == 1 && *str == separator[0]) || (memcmp(str, separator, separator_len) == 0)) {
|
||||||
char_array_push(array, '\0');
|
char_array_push(array, '\0');
|
||||||
@@ -410,3 +417,4 @@ cstring_array *cstring_array_split(char *str, const char *separator, size_t sepa
|
|||||||
|
|
||||||
return cstring_array_from_char_array(array);
|
return cstring_array_from_char_array(array);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ void char_array_append(char_array *array, char *str);
|
|||||||
void char_array_append_len(char_array *array, char *str, size_t len);
|
void char_array_append_len(char_array *array, char *str, size_t len);
|
||||||
void char_array_terminate(char_array *array);
|
void char_array_terminate(char_array *array);
|
||||||
|
|
||||||
|
char_array *char_array_copy(char_array *array);
|
||||||
|
|
||||||
// Similar to strcat, strips NUL-byte and guarantees 0-terminated
|
// Similar to strcat, strips NUL-byte and guarantees 0-terminated
|
||||||
void char_array_cat(char_array *array, char *str);
|
void char_array_cat(char_array *array, char *str);
|
||||||
void char_array_cat_len(char_array *array, char *str, size_t len);
|
void char_array_cat_len(char_array *array, char *str, size_t len);
|
||||||
@@ -84,9 +86,9 @@ cstring_array *cstring_array_from_char_array(char_array *str);
|
|||||||
cstring_array *cstring_array_split(char *str, const char *separator, size_t separator_len, int *count);
|
cstring_array *cstring_array_split(char *str, const char *separator, size_t separator_len, int *count);
|
||||||
|
|
||||||
void cstring_array_join_strings(cstring_array *self, char *separator, int count, ...);
|
void cstring_array_join_strings(cstring_array *self, char *separator, int count, ...);
|
||||||
void cstring_array_start_token(cstring_array *self);
|
uint32_t cstring_array_start_token(cstring_array *self);
|
||||||
void cstring_array_add_string(cstring_array *self, char *s);
|
uint32_t cstring_array_add_string(cstring_array *self, char *str);
|
||||||
void cstring_array_add_string_len(cstring_array *self, char *s, size_t len);
|
uint32_t cstring_array_add_string_len(cstring_array *self, char *str, size_t len);
|
||||||
int32_t cstring_array_get_offset(cstring_array *self, uint32_t i);
|
int32_t cstring_array_get_offset(cstring_array *self, uint32_t i);
|
||||||
char *cstring_array_get_token(cstring_array *self, uint32_t i);
|
char *cstring_array_get_token(cstring_array *self, uint32_t i);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user