diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-02-14 01:59:46 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-02-14 01:59:46 +0300 |
commit | a9da750aee081d2d739fe667a587cacef8fc9483 (patch) | |
tree | 0b4922bcef62d9291db0b64f0c18bddd0861fea1 /source/blender/makesdna/intern | |
parent | b42333fba63b814e1762d277cd1cdb0c01ba0d27 (diff) |
DNA: add in-place stripping utility
Minor change from D4342
Diffstat (limited to 'source/blender/makesdna/intern')
-rw-r--r-- | source/blender/makesdna/intern/dna_utils.c | 11 | ||||
-rw-r--r-- | source/blender/makesdna/intern/dna_utils.h | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/makesdna/intern/dna_utils.c b/source/blender/makesdna/intern/dna_utils.c index 8891c009718..42174494347 100644 --- a/source/blender/makesdna/intern/dna_utils.c +++ b/source/blender/makesdna/intern/dna_utils.c @@ -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. diff --git a/source/blender/makesdna/intern/dna_utils.h b/source/blender/makesdna/intern/dna_utils.h index fc8e5a87547..1ad31fe034c 100644 --- a/source/blender/makesdna/intern/dna_utils.h +++ b/source/blender/makesdna/intern/dna_utils.h @@ -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, |