Возможный дубликат:
Передать массив в обернутую функцию как указатель+размер или диапазон
В настоящее время я изучаю swig и играю с API C, чтобы обернуть stdio.h. Итак, файл моего парика выглядит так:
%module jstdio
%{
#include <stdio.h>
%}
FILE* fopen(const char* path, const char* mode);
int fclose( FILE* fp);
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
Мой класс Java будет:
public class CFile
{
private SWIGTYPE_p_JSTDIO ptr;
public CFile(String path,String mode) throws IOException
{
this.ptr=jstdio.fopen(path,mode);
if(this.ptr==null) ... //throw...
}
(...)
public int write(byte[] array,int pos,int length) throws IOException
{
(... here I should call jstdio.fwrite )
}
public int read(byte[] array,int pos,int length) throws IOException
{
(... here I should call jstdio.fread )
}
(...)
}
теперь, для чтения/записи, как правильно сказать swig преобразовать мой java-массив байтов в (void*) ptr? Я думаю, что мне нужно использовать %typemap, но я не понимаю, как правильно его использовать?