1
1
mirror of https://github.com/theoludwig/libcproject.git synced 2025-05-21 23:21:15 +02:00

perf: mutate destination string for string_concatenate

BREAKING CHANGE: Function signature changed
This commit is contained in:
2023-08-07 00:42:11 +02:00
parent b922fd9cd3
commit e5190818c4
5 changed files with 30 additions and 31 deletions

View File

@ -212,24 +212,20 @@ string_t string_join(string_t* array, const char separator, size_t array_length)
return string;
}
string_t string_concatenate(string_t string1, string_t string2) {
size_t string1_length = string_get_length(string1);
size_t string2_length = string_get_length(string2);
size_t result_length = string1_length + string2_length;
string_t result = malloc(sizeof(char) * (result_length + 1));
if (result == NULL) {
void string_concatenate(string_t* destination, string_t source) {
size_t destination_length = string_get_length(*destination);
size_t source_length = string_get_length(source);
size_t new_length = destination_length + source_length;
*destination = realloc(*destination, sizeof(char) * (new_length + 1));
if (*destination == NULL) {
perror("Error (string_concatenate)");
exit(EXIT_FAILURE);
}
size_t index_string1 = 0;
for (; index_string1 < string1_length; index_string1++) {
result[index_string1] = string1[index_string1];
size_t index_destination = destination_length;
for (size_t index_source = 0; index_source < source_length; index_source++) {
(*destination)[index_destination++] = source[index_source];
}
for (size_t index_string2 = 0; index_string2 < string2_length; index_string2++) {
result[index_string1 + index_string2] = string2[index_string2];
}
result[result_length] = '\0';
return result;
(*destination)[index_destination] = '\0';
}
bool string_get_has_unique_characters(const string_t string) {
@ -320,10 +316,9 @@ string_t string_get_formatted_number(const long long number, string_t separator)
result[formatted_length] = '\0';
string_reverse(result);
if (is_negative) {
string_t dash = convert_character_to_string('-');
string_t negative_result = string_concatenate(dash, result);
string_t negative_result = convert_character_to_string('-');
string_concatenate(&negative_result, result);
free(result);
free(dash);
return negative_result;
}
return result;

View File

@ -160,11 +160,13 @@ string_t string_join(string_t* array, const char separator, size_t array_length)
/**
* @brief Concatenate two strings.
*
* @param string1
* @param string2
* NOTE: Mutates the string `destination`.
*
* @param destination
* @param source
* @since v1.0.0
*/
string_t string_concatenate(string_t string1, string_t string2);
void string_concatenate(string_t* destination, string_t source);
/**
* @brief Check if a string contains only unique characters.