tlang.h にもどるwtstring.h にすすむmtstring.h
言語(スクリプト)指定コードを含む TC
文字列の各種操作ライブラリである。
文字列の先頭のデフォルトの言語指定がシステムスクリプトであり、 冗長な言語 / スクリプト指定を含まない TRON 多国語文字列を一意表現と呼ぶ。
|
W mtc_unique( TC *dst, TC *src, W len )
TC *dst 変換先 TC *src 変換元 W len 変換元(src)のデータ長(TC単位)
変換結果データ長(TC単位)
src の文字列を一意表現に変換して dst へ格納する。
src の文字列を TNULL まで変換する。
TNULL に出会う前に len 文字 ( TC 単位 )
に達した場合は、len 文字まで変換される。
ただし、len < 0 の場合は len は無視される。
dst の長さが len 文字に満たない場合は、
len 文字まで TNULL で埋められる。
変換結果がちょうど len 文字の場合は、
TNULL が付加されない。
len < 0 の場合は、必ず TNULL
が 1 つ付加される。
戻値に変換結果の文字列 ( dst ) の TNULL
を含まない長さ ( TC 単位 ) を返す。
dst と src に同一のメモリー
( dst == src ) を指定することができる。
それ以外で領域の重複があった場合の動作は保証されない。
|
W tc_chcmp( TC c1, TC c2 )
TC c1 TC c2
> 0 : c1 > c2 = 0 : c1 = c2 < 0 : c1 < c2
文字 c1 と c2
を言語(スクリプト)指定を考慮せずに比較する。
下図の (1)〜(6) の各領域に分類し、
c1 と c2 が異なる領域に属している場合は、
領域番号 ( 1 〜 6 ) の数値で比較する。
同じ領域に属している場合は、c1 と
c2 の文字コードを数値として比較する。

|
W mtc_strcmp( TC *s1, TC *s2 ) W mtc_strncmp( TC *s1, TC *s2, W len )
TC *s1, *s2 比較対象文字列へのポインタ W len 文字列長(TC数)
> 0 : s1 > s2 = 0 : s1 = s2 < 0 : s1 < s2
文字列 s1 と s2 を比較する。
s1, s2 は一意表現でなければならない。
s1 と s2 の先頭から 1 文字ずつ比較し、
最初に不一致となった文字の大小が比較結果として返される。
s1 または s2 が TNULL
に出会うまで比較される。
TNULL に出会うまで s1 と s2
の文字列が一致していた場合は、先に TNULL
に出会った方が小さいと判断される。
比較は、言語 ( スクリプト ) 指定を含む文字として比較される。
異なる言語 ( スクリプト ) に属す場合は、
TLANG の値によって比較される。
同じ言語 ( スクリプト ) に属す場合は、tc_chcmp()
によって比較される。
mtc_strncmp() は、最大 len 文字 ( TC 単位 )
まで比較する。
それ以外は mtc_strcmp() と同じ。
(例) s1 = [FE22]○○●
s2 = [FE22]○○[FE21]●
この場合は、[Fe22]● と [FE21]● が比較され、s1 > s2 となる。
|
TC* mtc_strcat( TC *dst, TC *src ) TC* mtc_strncat( TC *dst, TC *src, W len )
TC *dst 連結先の文字列へのポインタ TC *src 連結対象文字列へのポインタ W 連結する最大文字列長(TC単位)
TC *dst
文字列 dst の後ろに src を追加する。
dst, src は一意表現でなければならない。
連結された結果の dst は一意表現となる。
dst の TNULL の位置に
src が追加され、必ず終端に TNULL が付加される。
dst の最後の文字がシステムスクリプトの文字でなければ、
システムスクリプトの言語 ( スクリプト ) 指定コードを付加した後、
src を追加する。
したがって、dst の文字列は、
最大で dst + [FE21] + src + TNULL となる。
戻り値に dst を返す。
mtc_strncat() は、src の文字列を最大
len 文字 ( TC 単位 ) まで連結する。
それ以外は mtc_strcat() と同じ。
|
W mtc_strjoin( TC *dst, W len, TC *s1, ... )
TC *dst 連結先の文字列へのポインタ W len 連結文字列長(TC数) TC *s1, ... 連結対象文字列へのポインタ(複数)
連結後のデータ長(TC単位)
文字列 s1, ... を最大 len 文字
( TC 単位 ) まで連結して dst へ格納する。
連結する文字列の数は任意で、最後に NULL を指定する。
s1, ... は一意表現でなくてもよい。
結果の dst は一意表現となる。
len は TNULL を含まない長さを指定する。
dst の終端には必ず TNULL を付加する。
したがって、dst は len + 1 文字
( TC ) 分の領域が必要である。
結果の文字列の TNULL を除く長さ ( TC 単位 ) を戻値に返す。
dst と s1 に同一のメモリー
( dst == s1 ) を指定することができる。
それ以外で領域の重複があった場合の動作は保証されない。
2 番目以降の文字列と
dst の領域に重複があった場合の動作は保証されない。
(例) mtc_strjoin(dst, len, s1, s2, s3, NULL);
|
W mtc_strapd( TC *dst, TC *apd, W len )
TC *dst 連結先の文字列へのポインタ TC *apd 連結対象文字列へのポインタ W len 連結後の最大文字列長(TC数)
連結後の文字列のデータ長 ( TC 数 )
文字列 dst の後ろに
apd を len 文字 ( TC 単位 )
を超えないように追加する。
len 文字を超えてしまう場合は、
dst の後ろの文字を削除して、apd を追加する。
len は TNULL を含めない長さ。
dst の終端には必ず TNULL を付加するので、
dst は len + 1 文字 ( TC ) 分の領域が必要。
dst, apd は一意表現でなければならない。
結果の dst は一意表現となる。
戻値に結果の TNULL を含めない文字数 ( TC 単位 ) を返す。
apd が len
文字より長い場合の結果は保証されない。
|
W mtc_strlen( TC *str ) W mtc_strnlen( TC *str, W n )
TC *str 対象文字列へのポインタ
W n 対象データ長(TC数)
文字数
str の文字列に含まれる文字数を数える。
言語(スクリプト)指定コードは、文字数に含めない。
mtc_strnlen() は、str の最大 n
TC 個までに含まれる文字数を数える。
|
TC* mtc_strchr( TC *str, TC ch, W lang ) TC* mtc_strrchr( TC *str, TC ch, W lang )
TC *str 検索対象文字列へのポインタ TC ch 検索対象文字 W lang 検索対象言語指定(TLANG)
検索が成功した場合: 検索した文字のアドレス 検索が失敗した場合: NULL
str の文字列から、
lang で指定した言語 ( スクリプト ) の
ch の文字を探す。
文字列終端の TNULL も検索対象となる。
str は一意表現でなければならない。
mtc_strchr() は、str
の先頭から終端へ向かって探す。
mtc_strrchr() は、str
の終端から先頭へ向かって探す。
最初に見つかった位置を戻値に返す。
見つからなかった場合は NULL を返す。
lang = 0 または ch = TNULL の場合は
lang は無視され、すべての言語 ( スクリプト )
を対象に ch の文字を探す。
|
TC* mtc_strchr2( TC *str, W *slang, TC ch, W clang )
TC *str 検索対象文字列へのポインタ W *slang 検索対象文字列の先頭の言語指定(TLANG) TC ch 検索対象文字 W clang 検索対象言語指定(TLANG)
検索が成功した場合: 検索した文字のアドレス 検索が失敗した場合: NULL W *slang 検索対象結果の言語指定(TLANG)
str の文字列から、clang で指定した言語
( スクリプト ) の ch の文字を探す。
文字列終端の TNULL も検索対象となる。
str の文字列は *slang
で指定した言語 ( スクリプト ) で始まるものとする。
検索は str の先頭から終端へ向かって行われる。
最初に見つかった位置を戻値に返し、その文字の言語 ( スクリプト )
を *slangに返す。
見つからなかった場合は戻値に NULL を返し、
*slang には文字列終端の言語 ( スクリプト ) が返される。
clang = 0 または ch = TNULL の場合は
clang は無視され、
すべての言語 ( スクリプト ) を対象に ch の文字を探す。
|
TC mtc_strpos( TC *str, W n, W *lang )
TC *str 対象文字列へのポインタ W n 対象文字位置(0-) W *lang 対象文字の言語指定(TLANG)の格納先ポインタ
文字があった場合 : 文字へのポインタ 文字がなかった場合: NULL W *lang 対象文字の言語指定(TLANG)
str の文字列の n
文字目の文字の位置と言語(スクリプト)を調べる。
str は一意表現でなければならない。
戻値に文字位置、*lang にその文字の言語 ( スクリプト )
が返る。n は、言語 ( スクリプト )
指定コードを含めずに数えた文字数。
最初の文字が 0 となる。n が str
に含まれる文字を超えていた場合、
および n < 0 の場合は、
戻値が NULL となる。
この場合、*lang には str の終端の言語
( スクリプト ) が返る。
|
W mtc_poslang( TC *str, TC *p )
TC *str 対象文字列へのポインタ TC *p 対象文字列中の文字へのポインタ
指定位置が文字であった場合 :言語指定(TLANG) 指定位置が言語指定コードまたは strの文字列に含まれていない場合 : 0
str の文字列の p
の位置の文字の言語 ( スクリプト ) を調べる。
str は一意表現でなければならない。
戻値にその文字の言語 ( スクリプト ) を返す。
p の位置が言語 ( スクリプト ) 指定コードであった場合、
および p の位置が str
の文字列に含まれていない場合は、戻値に 0 が返る。
tlang.h にもどるwtstring.h にすすむ