DNA: add in-place stripping utility
authorCampbell Barton <ideasman42@gmail.com>
Wed, 13 Feb 2019 22:59:46 +0000 (09:59 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 13 Feb 2019 22:59:46 +0000 (09:59 +1100)
Minor change from D4342

source/blender/makesdna/intern/dna_utils.c
source/blender/makesdna/intern/dna_utils.h

index 8891c00..4217449 100644 (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.
index fc8e5a8..1ad31fe 100644 (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,