STREXPAND() と WSTRCOMPRESS() について

BREW API リファレンスの STREXPAND の説明を見てみると、

説明:
入力の文字が127より小さいか等しい場合、入力文字列をワイド文字に拡張します。2 倍幅になった文字(>127)が pDest にコピーされます。

って書いてあるんだけど、これ、正確には違う。
例えば、

AECHAR aechar[10];
char chars[10];
STREXPAND((byte*)"あガカあ", STRLEN("あガカあ"), aechar, 20);
WSTRCOMPRESS(aechar, WSTRLEN(aechar), (byte*)chars, 10);

こんなプログラムを書いてみると、aechar の中身は、

82 a0 b6 00 de 00 b6 00 82 a0 00 00
あ    カ     ゙     カ     あ

こんな風になってる。
半角文字は 127 より大きい値なんだけど、ワイド文字に拡張されてることが分かる。
多分、日本の STREXPAND だけはこうなってるんだろうな……。


で、その逆の操作を行う WSTRCOMPRESS をやって、chars の中身を見てみると、

82 a0 b6 de b6 82 a0 00
あ    カ  ゙  カ  あ

ってなってるので、これもちゃんと半角カナが正常に処理されてるっぽいです。


手動で文字の長さや文字数を計測する際には注意ですね。
中国等にも対応させる場合は、この操作は必要無いだろうから、もっと注意。