From: matz / ruby-lang.org (Yukihiro Matsumoto)
 Date: Sun, 2 Sep 2001 17:56:11 +0900
 Message-Id: <999420925.719839.3711.nullmailer / ev.netlab.jp>
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> パッチありがとうございます。思うところあって違う修正をしまし
> た。こんな感じでどうでしょう?

さすが、私のよりきれいですね。でも…

> m17n_memcmp(p1, p2, len, enc)
>     const char *p1, *p2;
>     long len;
>     const m17n_encoding *enc;
> {
>     int tmp, clen, a, b;
> 
>     while (len > 0) {
> 	clen = m17n_mbclen(enc, *p1);
> 	if (clen != m17n_mbclen(enc, *p2))
> 	    return ((unsigned)*p1 - (unsigned)*p2);
> 	len -= clen;
> 	a = m17n_codepoint(enc, p1, p1+clen);
> 	b = m17n_codepoint(enc, p2, p2+clen);
> 	if (tmp = m17n_toupper(enc, (unsigned)a) -
> 	          m17n_toupper(enc, (unsigned)b))
> 	    return tmp;
ここに
	p1 += clen;
	p2 += clen;
を追加しないと比較位置が進まないですよね?
>     }
>     return 0;
> }


ところで m17n_codepoint は
例えば '帰' を 0x8b41 へ変換する関数のようですが、
# あってます?
「思うところ」というのは ASCII 以外の文字集合でも
大小文字を無視した比較を行えるようにということでしょうか?
もしそうなら私の「思うところ」と同じなんですが…


P.S.
 ruby のソースはあまりコメントが書かれてないんですね。
ぱっと見動作がわからない関数はインターフェイス説明書があったほうが
いいと思うんですが、みなさんぱっと見でわかるんでしょうか?

----
馬越