Revision: 25730 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25730 Author: theeth Date: 2010-01-05 04:29:41 +0100 (Tue, 05 Jan 2010)
Log Message: ----------- IDGroup utility function to copy a group inside another one Modified Paths: -------------- trunk/blender/source/blender/blenkernel/BKE_idprop.h trunk/blender/source/blender/blenkernel/intern/idprop.c Modified: trunk/blender/source/blender/blenkernel/BKE_idprop.h =================================================================== --- trunk/blender/source/blender/blenkernel/BKE_idprop.h 2010-01-05 03:26:11 UTC (rev 25729) +++ trunk/blender/source/blender/blenkernel/BKE_idprop.h 2010-01-05 03:29:41 UTC (rev 25730) @@ -82,6 +82,11 @@ /*-------- Group Functions -------*/ +/* + replaces all properties with the same name in a destination group from a source group. +*/ +void IDP_ReplaceGroupInGroup(struct IDProperty *dest, struct IDProperty *src); + /*checks if a property with the same name as prop exists, and if so replaces it. Use this to preserve order!*/ void IDP_ReplaceInGroup(struct IDProperty *group, struct IDProperty *prop); Modified: trunk/blender/source/blender/blenkernel/intern/idprop.c =================================================================== --- trunk/blender/source/blender/blenkernel/intern/idprop.c 2010-01-05 03:26:11 UTC (rev 25729) +++ trunk/blender/source/blender/blenkernel/intern/idprop.c 2010-01-05 03:29:41 UTC (rev 25730) @@ -386,6 +386,31 @@ } /* + replaces all properties with the same name in a destination group from a source group. +*/ +void IDP_ReplaceGroupInGroup(IDProperty *dest, IDProperty *src) +{ + IDProperty *loop, *prop; + for (prop=src->data.group.first; prop; prop=prop->next) { + IDProperty *copy = IDP_CopyProperty(prop); + + for (loop=dest->data.group.first; loop; loop=loop->next) { + if (BSTR_EQ(loop->name, prop->name)) { + if (loop->next) BLI_insertlinkbefore(&dest->data.group, loop->next, copy); + else BLI_addtail(&dest->data.group, copy); + + BLI_remlink(&dest->data.group, loop); + IDP_FreeProperty(loop); + MEM_freeN(loop); + break; + } + } + + dest->len++; + BLI_addtail(&dest->data.group, copy); + } +} +/* replaces a property with the same name in a group, or adds it if the propery doesn't exist. */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs