[Gauche-devel-jp] Re: define-cclassについて

アーカイブの一覧に戻る

えんどう yasuy****@javao*****
2004年 1月 25日 (日) 18:19:58 JST


 えんどうです。

>Cの構造体をSchemeに見せる方法としては、ext/fcntlにおける<sys-flock>の
>実装や、ext/termiosにおける<sys-termios>の実装を参考にしてください。
>いずれもdefine-cclassは使わず、C側だけで処理しています。

fcntl.c では Scm_Init_fcntl 関数で、

    Scm_InitBuiltinClass(&Scm_SysFlockClass, "<sys-flock>",
                         flock_slots, sizeof(ScmSysFlock), mod);

<sys-flock> クラスを登録し、初期化では、

static ScmObj flock_allocate(ScmClass *klass, ScmObj initargs)
{
    ScmSysFlock *f = SCM_NEW(ScmSysFlock);
    SCM_SET_CLASS(f, SCM_CLASS_SYS_FLOCK);
    memset(&f->lock, sizeof(f->lock), 0);
    return SCM_OBJ(f);
}

を行っているのですね。

ScmSysFlock 型がどこにも定義されていないように見えるのですが、
この型はどう定義されるのでしょうか...?

>    $ gosh -I.
>    gosh> (dynamic-load "mysql")
>    #t
>    gosh> (d <mysql-handle>)
>    *** ERROR: unbound variable: <mysql-handle>
>    Stack Trace:
>    _______________________________________
>    gosh> (d <mysql-res>)
>    *** ERROR: unbound variable: <mysql-res>
>    Stack Trace:
>    _______________________________________
>
>これは、<mysql-handle>等が定義されてるモジュールをimportしてないだけ、
>もしくはそのモジュールから<mysql-handle>がexportされていないだけ、
>とかいう可能性はありますか?  

<mysql-handle> の定義は mysql.so にあるので、
mysql.so を dynamic-load すれば<mysql-handle> が Gauche 側に見えると
思っていたのですが、

そうではなく何らかのモジュールで mysql.so を dynamic-load し、
そのモジュールで <mysql-handle> を export する必要がある、
ということなのでしょうか...?

dbd.mysql モジュールを書き、その中で (dynamic-load "mysql")を行い、
<mysql-handle> をexportしてみました。

mysql.so があるディレクトリーで gosh -I. で Gauche を起動し、
(use dbd.mysql) のあと (d <mysql-handle>) を試してみました。

$ gosh -I.
gosh> (add-load-path "/home/yasuyuki/kahua/dbi")
("/home/yasuyuki/kahua/dbi" "/home/yasuyuki/kahua/dbd" "." "/usr/local/
share/gauche/site/lib" "/usr/local/share/gauche/0.7.3/lib")
gosh> (use dbd.mysql)
(#<module dbd.mysql> #<module gauche.interactive>)
gosh> (d <mysql-handle>)
*** ERROR: unbound variable: <mysql-handle>
Stack Trace:
_______________________________________

dbd.mysql モジュールでは (dynamic-load "mysql") だけではダメで、
何か別の定義が必要なのでしょうか...?

-- 
ENDO Yasuyuki <yasuy****@javao*****>
http://www.javaopen.org/~yasuyuki/ (Personal/Japanese Only)
http://www.javaopen.org/jfriends/ (Japanese Only)




Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る