[Gauche-devel-jp] Re: gauche.termios の c_cc

Back to archive index

Shiro Kawai shiro****@lava*****
2004年 9月 12日 (日) 19:41:29 JST


少し迷ったのですが、ccスロットから返されるu8vectorは「コピー」
というセマンティクスにしました。すなわち、

(let ((perm (sys-tcgetattr port)))
 (set! (ref (ref perm 'cc) VEOF) 4)
 (sys-tcsetattr port perm))

のようにu8vector自身を変更してもその変更は反映されず、

(let* ((perm (sys-tcgetattr port))
       (cc   (ref perm 'cc)))
 (set! (ref cc VEOF) 4)
 (set! (ref perm 'cc) cc)
 (sys-tcsetattr port perm))

のように変更したu8vectorを明示的にset!してやる必要があります。

低レベルのCの構造体の配列要素をSchemeに見せる手段として、
「uvectorへの変更が直接構造体へ反映される」というセマンティクスが
常に取れないので、中途半端にここだけ高レベルの手段を講じるよりは、
低位の操作を見せた方がよいと判断しました。

--shiro





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