Shiro Kawai
shiro****@lava*****
2003年 12月 19日 (金) 20:39:17 JST
From: yasuy****@javao***** Subject: [Gauche-devel-jp] Gauche-0.7.3のクラス再定義機構とpgドライバーの動作 Date: Fri, 19 Dec 2003 20:20:24 +0900 > クラス再定義機構に関連したエラーだと思うのですが、pg.stub で、 > > (define-type <pg-result> "PGresult*" #f ;"box for the postgresql result" > "SCM_PG_RESULT_P" "SCM_PG_RESULT" "new_pg_result") > > と <pg-result> 型を定義してあって、pg.scm で、 > > (define-class <pg-result> () > ((result :accessor pg-result-of :initform #f) > ;(query :init-keyword :path) > ;(rw-mode :init-keyword :rw-mode :initform :write) > ;(file-mode :init-keyword :file-mode :initform #o664) > ;(key-convert :init-keyword :key-convert :initform #f) > ;(value-convert :init-keyword :value-convert :initform #f) > ;; internal. set up by dbm-open > ) > :metaclass <pg-meta>) > > と定義してあるのがいけないんでしょうか。 ああ、Cで定義して、さらにSchemeでも定義しちゃってるので、再定義処理が 行われてしまうのですね。 C側で定義してあるのだから、Scheme側のは削っちゃってもいいと 思うんですが…っと、あれだ。メタクラスがあるからちょっとまずいな。 いや、違う、新しいやつだとScheme側の定義はクオートされてて 実行されないみたいですよ。 http://maruska.dyndns.org/comp/activity/scheme/gauche/pg/pg.scm とりあえず、Scheme側の定義をクオートして実行したらどうなりますか。 --shiro