[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