DNA: add in-place stripping utility

Minor change from D4342
This commit is contained in:
Campbell Barton
2019-02-14 09:59:46 +11:00
parent b42333fba6
commit a9da750aee
2 changed files with 12 additions and 2 deletions

View File

@@ -107,7 +107,7 @@ uint DNA_elem_id_offset_end(const char *elem_full)
/**
* \a elem_dst must be at least the size of \a elem_src.
*/
void DNA_elem_id_strip(char *elem_dst, const char *elem_src)
void DNA_elem_id_strip_copy(char *elem_dst, const char *elem_src)
{
const uint elem_src_offset = DNA_elem_id_offset_start(elem_src);
const char *elem_src_trim = elem_src + elem_src_offset;
@@ -116,6 +116,15 @@ void DNA_elem_id_strip(char *elem_dst, const char *elem_src)
elem_dst[elem_src_trim_len] = '\0';
}
void DNA_elem_id_strip(char *elem)
{
const uint elem_offset = DNA_elem_id_offset_start(elem);
const char *elem_trim = elem + elem_offset;
const uint elem_trim_len = DNA_elem_id_offset_end(elem_trim);
memmove(elem, elem_trim, elem_trim_len);
elem[elem_trim_len] = '\0';
}
/**
* Check if 'var' matches '*var[3]' for eg,
* return true if it does, with start/end offsets.

View File

@@ -26,7 +26,8 @@ int DNA_elem_array_size(const char *str);
uint DNA_elem_id_offset_start(const char *elem_full);
uint DNA_elem_id_offset_end(const char *elem_full);
void DNA_elem_id_strip(char *elem_dst, const char *elem_src);
void DNA_elem_id_strip_copy(char *elem_dst, const char *elem_src);
void DNA_elem_id_strip(char *elem);
bool DNA_elem_id_match(
const char *elem_search, const int elem_search_len,
const char *elem_full,