Вам нужно передать объекту NrrdEncoding
функции-члены через SWIG (то есть: функции C, которые вы связываете как члены объекта), которые сами будут вызывать указатели на функции.Это будет работать примерно так:
struct NrrdEncoding
{
...
//Don't expose the function pointers. The struct will still have them, but SWIG won't expose them.
};
%extend NrrdEncoding
{
int read(FILE *file, void *data, size_t elementNum, Nrrd *nrrd, struct NrrdIoState_t *nio)
{
return $self->read(file, data, elementNum, nrrd, nio);
}
int write(FILE *file, const void *data, size_t elementNum, const Nrrd *nrrd, struct NrrdIoState_t *nio)
{
return $self->write(file, data, elementNum, nrrd, nio);
}
}
В Lua, если у вас есть NrrdEncoding
объект, вы можете вызвать read
на нем так: object:read(...)
.