[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20927] branches/soc-2009-kazanbas/source/ blender/makesrna/intern: WARNING: I'm starting generic RNA collection add ; )

Arystanbek Dyussenov arystan.d at gmail.com
Tue Jun 16 14:42:14 CEST 2009


Revision: 20927
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20927
Author:   kazanbas
Date:     2009-06-16 14:42:14 +0200 (Tue, 16 Jun 2009)

Log Message:
-----------
WARNING: I'm starting generic RNA collection add ;)

Modified Paths:
--------------
    branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_access.c
    branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h

Modified: branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_access.c	2009-06-16 10:43:43 UTC (rev 20926)
+++ branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_access.c	2009-06-16 12:42:14 UTC (rev 20927)
@@ -1342,6 +1342,8 @@
 	else
 		printf("RNA_property_collection_add %s.%s: only supported for id properties.\n", ptr->type->identifier, prop->identifier);
 
+	/* TODO: call cprop->add on non-ID props here */
+
 	if(r_ptr) {
 		if(idprop) {
 			CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop;
@@ -1510,6 +1512,13 @@
 	iter->internal= NULL;
 }
 
+void *rna_iterator_listbase_add(ListBase *lb, void *item)
+{
+	BLI_addtail(lb, item);
+
+	return item;
+}
+
 void rna_iterator_array_begin(CollectionPropertyIterator *iter, void *ptr, int itemsize, int length, IteratorSkipFunc skip)
 {
 	ArrayIterator *internal;
@@ -1567,6 +1576,21 @@
 	iter->internal= NULL;
 }
 
+void *rna_iterator_array_add(void *ptr, int itemsize, int length, void *item)
+{
+	// alloc new block, copy old data
+	void *newptr= MEM_callocN(length * itemsize + itemsize, "RNA collection add");
+	memcpy(newptr, ptr, length * itemsize);
+
+	// copy new item
+	memcpy(((char*)newptr) + length * itemsize, item, itemsize);
+
+	// free old block
+	MEM_freeN(ptr);
+
+	return newptr;
+}
+
 /* RNA Path - Experiment */
 
 static char *rna_path_token(const char **path, char *fixedbuf, int fixedlen, int bracket)

Modified: branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h
===================================================================
--- branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h	2009-06-16 10:43:43 UTC (rev 20926)
+++ branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h	2009-06-16 12:42:14 UTC (rev 20927)
@@ -237,6 +237,9 @@
 void *rna_iterator_listbase_get(struct CollectionPropertyIterator *iter);
 void rna_iterator_listbase_end(struct CollectionPropertyIterator *iter);
 
+/* experimental */
+void *rna_iterator_listbase_add(ListBase *lb, void *item);
+
 typedef struct ArrayIterator {
 	char *ptr;
 	char *endptr;
@@ -250,6 +253,9 @@
 void *rna_iterator_array_dereference_get(struct CollectionPropertyIterator *iter);
 void rna_iterator_array_end(struct CollectionPropertyIterator *iter);
 
+/* experimental */
+void *rna_iterator_array_add(void *ptr, void *data);
+
 /* Duplicated code since we can't link in blenlib */
 
 void rna_addtail(struct ListBase *listbase, void *vlink);





More information about the Bf-blender-cvs mailing list