私は現在swigを学んでおり、stdio.hをラップするためにC APIで遊んでいます。したがって、私のかつらファイルは次のようになります。
%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 )
}
(...)
}
さて、読み取り/書き込みのために、バイトのJava配列を (void*) ptr に変換するようにswigに指示する正しい方法は何ですか? %typemap を使用する必要があると思いますが、正しい使用方法がわかりません。