OK, solved it in the RNA get function:

static PointerRNA rna_actlib_get(CollectionPropertyIterator *iter)
{
     return rna_pointer_inherit_refine(&iter->parent, &RNA_Action, 
((LinkData*)rna_iterator_listbase_get(iter))->data);
}

That's what needs to be offered by the API.

On 05/03/2012 10:48, Tom Edwards wrote:
> 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. :)
> _______________________________________________
> Bf-committers mailing list
> Bf-committers@blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>
_______________________________________________
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers

Reply via email to