mirror of
https://github.com/theoludwig/libcproject.git
synced 2025-05-21 23:21:15 +02:00
perf: mutate strings instead of copy when possible
BREAKING CHANGE: Most of string functions mutates the string instead of copying now. This allows better performance when copy is not needed. It also allows more granual control. If copy is wanted, simply use `string_copy` before calling the function. Impacted functions are: `string_to_uppercase`, `string_to_lowercase`, `string_replace`, `string_trim_start`, `string_trim_end`, `string_trim`, `string_capitalize`, `string_reverse`
This commit is contained in:
90
lib/string.h
90
lib/string.h
@ -13,93 +13,109 @@
|
||||
/**
|
||||
* @brief Return the length of a string (excluding '\0').
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @since v1.0.0
|
||||
*/
|
||||
size_t string_get_length(const string_t string_value);
|
||||
size_t string_get_length(const string_t string);
|
||||
|
||||
/**
|
||||
* @brief Converts all the alphabetic characters in a string to uppercase.
|
||||
*
|
||||
* @param string_value
|
||||
* NOTE: Mutates the string.
|
||||
*
|
||||
* @param string
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_to_uppercase(string_t string_value);
|
||||
void string_to_uppercase(string_t string);
|
||||
|
||||
/**
|
||||
* @brief Converts all the alphabetic characters in a string to lowercase.
|
||||
*
|
||||
* @param string_value
|
||||
* NOTE: Mutates the string.
|
||||
*
|
||||
* @param string
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_to_lowercase(string_t string_value);
|
||||
void string_to_lowercase(string_t string);
|
||||
|
||||
/**
|
||||
* @brief Replace all the occurrences of search value into replace value in the string.
|
||||
*
|
||||
* @param string_value
|
||||
* NOTE: Mutates the string.
|
||||
*
|
||||
* @param string
|
||||
* @param search A character search value.
|
||||
* @param replace A character containing the text to replace for match.
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_replace(string_t string_value, char search, char replace);
|
||||
void string_replace(string_t string, char search, char replace);
|
||||
|
||||
/**
|
||||
* @brief Removes all `character` from the start of a string.
|
||||
*
|
||||
* @param string_value
|
||||
* NOTE: Mutates the string.
|
||||
*
|
||||
* @param string
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_trim_start(string_t string_value, char character);
|
||||
void string_trim_start(string_t string, char character);
|
||||
|
||||
/**
|
||||
* @brief Removes all `character` from the end of a string.
|
||||
*
|
||||
* @param string_value
|
||||
* NOTE: Mutates the string.
|
||||
*
|
||||
* @param string
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_trim_end(string_t string_value, char character);
|
||||
void string_trim_end(string_t string, char character);
|
||||
|
||||
/**
|
||||
* @brief Removes all `character` from the start and end of a string.
|
||||
*
|
||||
* @param string_value
|
||||
* NOTE: Mutates the string.
|
||||
*
|
||||
* @param string
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_trim(string_t string_value, char character);
|
||||
void string_trim(string_t string, char character);
|
||||
|
||||
/**
|
||||
* @brief Return the copy of a string.
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_copy(const string_t string_value);
|
||||
string_t string_copy(const string_t string);
|
||||
|
||||
/**
|
||||
* @brief Capitalizes the string.
|
||||
*
|
||||
* @param string_value
|
||||
* NOTE: Mutates the string.
|
||||
*
|
||||
* @param string
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_capitalize(string_t string_value);
|
||||
void string_capitalize(string_t string);
|
||||
|
||||
/**
|
||||
* @brief Returns the total number of occurrences of the given character in the string.
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @param character
|
||||
* @since v1.0.0
|
||||
*/
|
||||
size_t string_total_occurrences_of_character(string_t string_value, char character);
|
||||
size_t string_total_occurrences_of_character(string_t string, char character);
|
||||
|
||||
/**
|
||||
* @brief Reverse the characters in an array.
|
||||
* @brief Reverse the characters in a string.
|
||||
*
|
||||
* @param string_value
|
||||
* NOTE: Mutates the string.
|
||||
*
|
||||
* @param string
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_reverse(const string_t string_value);
|
||||
void string_reverse(const string_t string);
|
||||
|
||||
/**
|
||||
* @brief Check if two strings are equals.
|
||||
@ -114,21 +130,21 @@ bool string_equals(const string_t string1, const string_t string2);
|
||||
/**
|
||||
* @brief Check if the string is a integer.
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @return true if the string is a integer, false otherwise.
|
||||
* @since v1.0.0
|
||||
*/
|
||||
bool string_get_is_integer(const string_t string_value);
|
||||
bool string_get_is_integer(const string_t string);
|
||||
|
||||
/**
|
||||
* @brief Split a string into substrings using the specified separator and return them as an array and update the pointer `result_size` to the resulting size of the created array.
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @param separator
|
||||
* @param result_size
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t* string_split(const string_t string_value, char separator, size_t* result_size);
|
||||
string_t* string_split(const string_t string, char separator, size_t* result_size);
|
||||
|
||||
/**
|
||||
* @brief Adds all the elements of an array into a string, separated by the specified separator string.
|
||||
@ -161,22 +177,22 @@ bool string_get_has_unique_characters(const string_t string);
|
||||
/**
|
||||
* @brief Returns the part of the string between the start and end indexes (both included).
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @param index_start
|
||||
* @param index_end
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_substring(const string_t string_value, size_t index_start, size_t index_end);
|
||||
string_t string_substring(const string_t string, size_t index_start, size_t index_end);
|
||||
|
||||
/**
|
||||
* @brief Check if a string contains a substring.
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @param substring
|
||||
* @return true if the string contains the substring, false otherwise.
|
||||
* @since v1.0.0
|
||||
*/
|
||||
bool string_get_is_substring(const string_t string_value, const string_t substring);
|
||||
bool string_get_is_substring(const string_t string, const string_t substring);
|
||||
|
||||
/**
|
||||
* @brief Format a number to a string with specified separator.
|
||||
@ -194,30 +210,30 @@ string_t string_get_formatted_number(const long long number, string_t separator)
|
||||
/**
|
||||
* @brief Returns a pointer to the last occurrence of character in the string.
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @param character
|
||||
* @since v1.0.0
|
||||
*/
|
||||
string_t string_get_last_occurence_of_character(const string_t string_value, char character);
|
||||
string_t string_get_last_occurence_of_character(const string_t string, char character);
|
||||
|
||||
/**
|
||||
* @brief Check if a string starts with a substring.
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @param prefix
|
||||
* @return true if the string starts with the substring, false otherwise.
|
||||
* @since v1.0.0
|
||||
*/
|
||||
bool string_starts_with(const string_t string_value, const string_t prefix);
|
||||
bool string_starts_with(const string_t string, const string_t prefix);
|
||||
|
||||
/**
|
||||
* @brief Check if a string ends with a substring.
|
||||
*
|
||||
* @param string_value
|
||||
* @param string
|
||||
* @param prefix
|
||||
* @return true if the string ends with the substring, false otherwise.
|
||||
* @since v1.0.0
|
||||
*/
|
||||
bool string_ends_with(const string_t string_value, const string_t prefix);
|
||||
bool string_ends_with(const string_t string, const string_t prefix);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user