Merge pull request #18653 from dundargoc/refactor/move-reverse-text

refactor: move reverse_text to strings.c as it's a string operation
This commit is contained in:
bfredl
2022-05-20 17:00:51 +02:00
committed by GitHub
4 changed files with 80 additions and 25 deletions

View File

@@ -204,31 +204,6 @@ char_u *get_search_pat(void)
return mr_pattern;
}
/*
* Reverse text into allocated memory.
* Returns the allocated string.
*
* TODO(philix): move reverse_text() to strings.c
*/
char_u *reverse_text(char_u *s) FUNC_ATTR_NONNULL_RET
{
/*
* Reverse the pattern.
*/
size_t len = STRLEN(s);
char_u *rev = xmalloc(len + 1);
size_t rev_i = len;
for (size_t s_i = 0; s_i < len; s_i++) {
const int mb_len = utfc_ptr2len((char *)s + s_i);
rev_i -= mb_len;
memmove(rev + rev_i, s + s_i, mb_len);
s_i += mb_len - 1;
}
rev[len] = NUL;
return rev;
}
void save_re_pat(int idx, char_u *pat, int magic)
{
if (spats[idx].pat != pat) {

View File

@@ -1507,3 +1507,24 @@ int kv_do_printf(StringBuilder *str, const char *fmt, ...)
str->size += (size_t)printed;
return printed;
}
/// Reverse text into allocated memory.
///
/// @return the allocated string.
char_u *reverse_text(char_u *s)
FUNC_ATTR_NONNULL_RET
{
// Reverse the pattern.
size_t len = STRLEN(s);
char_u *rev = xmalloc(len + 1);
size_t rev_i = len;
for (size_t s_i = 0; s_i < len; s_i++) {
const int mb_len = utfc_ptr2len((char *)s + s_i);
rev_i -= (size_t)mb_len;
memmove(rev + rev_i, s + s_i, (size_t)mb_len);
s_i += (size_t)mb_len - 1;
}
rev[len] = NUL;
return rev;
}