[Gauche-devel-jp] Re: FILE* を define-cproc で受け取るには?

Back to archive index

Makoto Satoh makot****@yahoo*****
2005年 4月 15日 (金) 22:14:47 JST


佐藤です。

ありがとうございます。

--- Shiro Kawai <shiro****@lava*****> からのメッセージ:
> > この場合、gd-image-pngはポートpを受け取らなければなりませんが、
> > そういう場合はdefine-cprocの中ではどのようにpを受け取って、
> > Cコードの中ではどのようにファイルポインタに(?)するのでしょうか?
> 
> ポートを渡すのが一番わかりやすいと思います。
> こんな感じでどうでしょう。
> 
> http://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2004-September/001197.html
> http://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2004-September/001198.html

Cのどの関数にマッピングされているかが分かるようにという感じでしょうか。
となると、define-cprocの中身はC言語として必要な処理のみということですね。
で、API的に必要があれば、そこで作ったScheme関数をラップすると。
(同じ事を繰り返してます?)

(call-with-output-port "test.png"
  (lambda (p)
    (gd-image-png imgobj p)))

(define-cproc gd-image-png (ScmGd *im, ScmPort *port)
  "  int fd;
  FILE *out;
  fd = Scm_PortFileNo(port);
  out = fdopen(fd, \"wb\");
  gdImagePng(im, out);
  fclose(out);")

てな感じで行こうかと思います。
(エラーチェックなども当然考えます)

; 気長に待ってやってください。
; gdができたらgdchartもやりたいと思っています。






Gauche-devel-jp メーリングリストの案内
Back to archive index