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);


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to