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
にすすむ