I have a struct as shown below defined in my header file (myheader.h)
typedef struct
{
MyMemberStruct* member;
int32_t n_members;
} MyMember;
MyMember* MyMemberCreate(...)
The SWIG interface file
%module members
%{
#define SWIG_FILE_WITH_INIT
#include "myheader.h"
%}
%include "myheader.h"
In the function MyMemberCreate()
a list of n_members
members are created and stored in member
.
In Python I would to access these members like:
pyMember = members.member[0]
But this gives the following error:
'MyMemberStruct' object does not support indexing
I have learnt that I can add the following to the interface file
%extend MyMember {
MyMemberStruct __getitem__(int32_t index) {
if (index < $self->n_members) {
return $self->member[index];
}
}
}
Then from Python I can access the members as
pyMember = members[0]
which should me give me the first index in MyMemberStruct
Can anyone point me in the right direction of how I can achieve the first approach, i.e. pyMember = members.member[0]
instead?