この章の目次にもどる
前頁:第3章 多国語(多漢字)ライブラリにもどる
次頁:3.2 mtstring.h
にすすむ
言語指定コードを扱うためのライブラリである。
言語指定コードの短縮形定義、言語指定コードのチェック、
変換関数を含んでいる。
□ 言語(スクリプト)指定コードの短縮形定義
0xAABB AA : FE の繰り返し数 - 1
BB : FE に続くコード
(例) FE21 -> 0x0021
FEFE 0021 -> 0x0121
FEFE FE21 -> 0x0221
typedef UH TLANG;
#define TSC_SYS 0x0021 /* システム */
#define TSC_JPN1 0x0022 /* 日本1 */
#define TSC_JPN2 0x0023 /* 日本2 */
#define TSC_MIN 0x0021
#define TSC_MAX 0x003f
isValidTLANG |
|
TLANG の値の有効性確認 |
|
【形式】
Bool isValidTLANG( W lang )
【パラメータ】
W lang チェック対象の値(TLANG)
【リターン値】
TLANGの値の場合:True
TLANGの値ではない場合:False
【解説】
言語 ( スクリプト ) 指定コードとして有効であれば
True
を返す。
【形式】
Bool inZone( TC c, TC lt, TC rb )
【パラメータ】
TC c チェック対象文字
TC lt 文字範囲指定
TC rb 文字範囲指定
【リターン値】
指定範囲に含まれている場合 :True
指定範囲に含まれていない場合:False
【解説】
文字が指定のゾーン内に含まれていれば True
を返す。
#define isAZone(c) inZone(c, 0x2121, 0x7e7e) /* A ゾーン内 */
#define isBZone(c) inZone(c, 0x8021, 0xfd7e) /* B ゾーン内 */
#define isCZone(c) inZone(c, 0x2180, 0x7efd) /* C ゾーン内 */
#define isDZone(c) inZone(c, 0x8080, 0xfdfd) /* D ゾーン内 */
Inline Bool isADZone( TC c ) /* A〜D ゾーン内 */
{
UW c1 = c >> 8;
UW c2 = c & 0xff;
return ( c1 >= 0x21 && c1 != 0x7f && c1 <= 0xfd
&& c2 >= 0x21 && c2 != 0x7f && c2 <= 0xfd );
}
isTLANG, isTLANGce |
|
言語(スクリプト)指定コード判定 |
|
【形式】
W isTLANG( TC *tp, W len, TC **ntp );
W isTLANGce( TC *tp, W len, TC **ntp );
【パラメータ】
TC *tp 対象文字列へのポインタ
W len tp の文字列の有効最大長(TC 単位)
TC **ntp NULLでない場合に言語指定コードの次の文字の位置を返す
【リターン値】
> 0 言語指定コード (TLANG が戻る)
= 0 言語指定コードでない
= -1 不正言語指定コード
= -2 未確定言語指定コード (言語指定コードが途中で終っている)
【解説】
tp
の文字列が言語指定コードであるか判定する。
tp
から最大len
( TC 単位 )
までのデータに関して言語指定コードの判定を行う。
len = 0
を指定すると len
は無効となり
TNULL
までが対象となる。
(例) FE21 戻値 = 0x0021 *ntp = tp + 1
FEFE 0021 戻値 = 0x0121 *ntp = tp + 2
2121 戻値 = 0 *ntp = tp
FE00 戻値 = -1 *ntp = tp + 1
FEFE 2121 戻値 = -1 *ntp = tp + 2
FEFE 0000 戻値 = -2 *ntp = tp + 1
FEFE 0021 (len = 1) 戻値 = -2 *ntp = tp + 1
isTLANGce()
は、tp
の文字列を
ConvEndianH()
によりエンディアン変換して判定する。
それ以外は isTLANG()
と同様である。
isTLANGch |
|
言語(スクリプト)指定コード判定 |
|
【形式】
W isTLANGch( TC ch, W *n )
【パラメータ】
TC ch 対象文字/言語(スクリプト)指定コード
W *n 言語指定のカウンタ領域へのポインタ
【リターン値】
> 0 言語指定コード (TLANG が戻る)
= 0 言語指定コードでない
= -1 不正言語指定コード
= -2 未確定言語指定コード (言語指定コードの途中)
【解説】
1文字 ( TC ) ずつ言語指定コードを判定する。
初回の呼出時に *n = 0
に初期化しておく。
以後は、返された *n
の値を変更せずに繰り返し呼び出すことで、
言語指定コードを判定する。
(使用例)
n = 0;
while ( (lang = isTLANGch(*tp++, &n)) == -2 );
TLANGtoTC |
|
言語指定コード(TLANG )を TC 列へ変換 |
|
【形式】
W TLANGtoTC( TC *tp, W max, TLANG lang )
【パラメータ】
TC *tp 言語指定コード格納先へのポインタ
W max 格納先の領域サイズ(TC単位)
TLANG lang 言語指定(TLANG)
【リターン値】
lang
を TC
列へ変換するために必要な長さ ( TC
単位 )。
【解説】
lang
の言語指定コードを TC
列に変換して
tp
へ格納する。
最後に TNULL
が付く。
戻値に lang
を TC
列へ変換するために必要な長さ ( TC
単位 ) を返す。
最後の TNULL
の分は含まれない。
TC
列の長さが max
を超えた場合は
max
まで格納される。
したがって、戻値 > max
の場合は、
格納しきれていないことを示す。
ただし、max
< 0 の場合は max
は無視される。
tp = NULL
の場合、TC
列は格納されず、
TC
列の長さのみを戻値に返す。
不正な lang
を指定した場合の結果は保証されない。
この章の目次にもどる
前頁:第3章 多国語(多漢字)ライブラリにもどる
次頁:3.2 mtsring.h
にすすむ