From: Martin Duerst Date: 2008-01-21T18:21:05+09:00 Subject: [ruby-dev:33249] Re: [PATCH] warnings of enc/trans/utf_16_32.c At 12:35 08/01/21, Nobuyoshi Nakada wrote: >なかだです。 > >At Mon, 21 Jan 2008 11:54:53 +0900, >Martin Duerst wrote in [ruby-dev:33232]: >> ところで、Ruby 全体では char を使っているが、文字コード変換では >> unsigned char の方が便利なので、どこかで切り替えないといけないです。 >> しかし下記のように小さい関数で切り替えると手間が増えるだけです。 >> 多分 transcode_loop 内の in_p と out_p を unsigned char* に >> した方が一番簡単のではないでしょうか。お願いできますでしょうか。 >> それともこちらでやりますか。 > >ポインタのキャストはできる限り避けたほうがよいと個人的には思いま >すが。 気持ちは分かりますが、事実上 unsigned として扱われているものを 本当に unsigned にするにはそれほどの問題がないと思います。 >というか、結局変換テーブルだけでいくという方針は捨てたのでしょう >か。 本当に純粋に変換テーブルでいくと特に今回の UTF-16, UTF-32 や これからいつかやらないといけない GB 18030 の場合、テーブルは とんでもなく馬鹿でかくなります。そこでそういう数式的変換の 場合だけ関数を使う用にしました。この関数はあくまでできれば だけ小さい「ミニ関数」で、式のものだけを扱うようにしたいと 思っています。基本的な方針は変わっていません。 >FUN*などをみるに、transcode_loop()のレベルで処理関数を切替え >るほうが簡単なように見えます。 これは transcode_loop の代わりにエンコーディング毎に関数を 用意するというこてでしょうか。そうであれば今の内には確かに そういう風に見えるかも知れませんが、実際にもっとエラー処理 等を追加するとエンコーディングごとに追加することになりますので、 どんどん面倒になります。 そのほかに、ミニ関数の中で if を使わないで、テーブルで 複数の関数に分けるということも検討中です。それがもっと 目指しているところに近いですが、最大関数何個が必要かなど 考えた内にとりあえず一個で一応やってしまいました。 宜しくお願いします。 Martin. #-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University #-#-# http://www.sw.it.aoyama.ac.jp mailto:duerst@it.aoyama.ac.jp