[Bf-committers] ListBase vs. slots

Tom Edwards contact at steamreview.org
Mon Mar 5 23:48:55 CET 2012


I'm trying to refactor some code from the "array of pointers" solution 
used by material/texture slots to ListBase, as a result of code review. 
But I'm beginning to think that Blender doesn't support that.

The code in question is my Action Library patch from last October. It 
allows AnimData to store a list of associated Actions in addition to the 
single "active action" it currently stores. 
<http://projects.blender.org/tracker/index.php?func=detail&aid=28453&group_id=9&atid=127>

ListBase usually takes IDs directly, but since I'm not creating a global 
list of IDs I am having to use LinkData instead. For reference:

typedef struct LinkData
{
     struct LinkData *next, *prev;
     void *data;
} LinkData;

This works fine in C, but accessing items with Python crashes. Python 
can walk the list just fine (*next and *prev are as it expects) but 
doesn't seem to understand the *data indirection of LinkData.

Is there a RNA setting I've overlooked here? If not, I vote for 
supporting ListBase->LinkData collections. They are immediately 
applicable to material slots, texture slots, and I suspect particle 
system settings too. :)


More information about the Bf-committers mailing list