[Bf-blender-cvs] [a9da750aee0] master: DNA: add in-place stripping utility

Campbell Barton noreply at git.blender.org
Thu Feb 14 00:01:27 CET 2019


Commit: a9da750aee081d2d739fe667a587cacef8fc9483
Author: Campbell Barton
Date:   Thu Feb 14 09:59:46 2019 +1100
Branches: master
https://developer.blender.org/rBa9da750aee081d2d739fe667a587cacef8fc9483

DNA: add in-place stripping utility

Minor change from D4342

===================================================================

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

===================================================================

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,



More information about the Bf-blender-cvs mailing list