From 158b4e61a050a25fec47a00797ab7db46fc3198c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Dec 2013 04:35:52 +1100 Subject: Mesh Modifiers: refactor copying using a generic function --- source/blender/blenkernel/intern/modifier.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'source/blender/blenkernel/intern/modifier.c') diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 4d2f6971f64..f9a0d462ac0 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -253,6 +253,19 @@ void modifiers_foreachTexLink(Object *ob, TexWalkFunc walk, void *userData) } } +/* callback's can use this + * to avoid copying every member. + */ +void modifier_copyData_generic(const ModifierData *md_src, ModifierData *md_dst) +{ + ModifierTypeInfo *mti = modifierType_getInfo(md_src->type); + const size_t data_size = sizeof(ModifierData); + const char *md_src_data = ((char *)md_src) + data_size; + char *md_dst_data = ((char *)md_dst) + data_size; + BLI_assert(data_size <= (size_t)mti->structSize); + memcpy(md_dst_data, md_src_data, (size_t)mti->structSize - data_size); +} + void modifier_copyData(ModifierData *md, ModifierData *target) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); -- cgit v1.2.3