1

重複の可能性:
ラップされた関数に配列をポインター + サイズまたは範囲として渡す

私は現在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 を使用する必要があると思いますが、正しい使用方法がわかりません。

4

0 に答える 0