m17n ライブラリ 1.8.4
|
M-text オブジェクトとそれに関する API. [詳解]
列挙型 | |
enum | MTextFormat { MTEXT_FORMAT_US_ASCII , MTEXT_FORMAT_UTF_8 , MTEXT_FORMAT_UTF_16LE , MTEXT_FORMAT_UTF_16BE , MTEXT_FORMAT_UTF_32LE , MTEXT_FORMAT_UTF_32BE , MTEXT_FORMAT_MAX } |
M-text のフォーマットを指定する列挙型. [詳解] | |
enum | MTextLineBreakOption { MTEXT_LBO_SP_CM = 1 , MTEXT_LBO_KOREAN_SP = 2 , MTEXT_LBO_AI_AS_ID = 4 , MTEXT_LBO_MAX } |
関数 | |
int | mtext_line_break (MText *mt, int pos, int option, int *after) |
MText * | mtext () |
新しいM-textを割り当てる. | |
MText * | mtext_from_data (const void *data, int nitems, enum MTextFormat format) |
指定のデータを元に新しい M-text を割り当てる. | |
void * | mtext_data (MText *mt, enum MTextFormat *fmt, int *nunits, int *pos_idx, int *unit_idx) |
int | mtext_len (MText *mt) |
M-text 中の文字の数. | |
int | mtext_ref_char (MText *mt, int pos) |
M-text 中の指定された位置の文字を返す. | |
int | mtext_set_char (MText *mt, int pos, int c) |
M-text に一文字を設定する. | |
MText * | mtext_cat_char (MText *mt, int c) |
M-text に一文字追加する. | |
MText * | mtext_dup (MText *mt) |
M-text のコピーを作る. | |
MText * | mtext_cat (MText *mt1, MText *mt2) |
2個の M-textを連結する. | |
MText * | mtext_ncat (MText *mt1, MText *mt2, int n) |
M-text の一部を別の M-text に付加する. | |
MText * | mtext_cpy (MText *mt1, MText *mt2) |
M-text を別の M-text にコピーする. | |
MText * | mtext_ncpy (MText *mt1, MText *mt2, int n) |
M-text に含まれる最初の何文字かをコピーする. | |
MText * | mtext_duplicate (MText *mt, int from, int to) |
既存の M-text の一部から新しい M-text をつくる. | |
MText * | mtext_copy (MText *mt1, int pos, MText *mt2, int from, int to) |
M-text に指定範囲の文字をコピーする. | |
int | mtext_del (MText *mt, int from, int to) |
指定範囲の文字を破壊的に取り除く. | |
int | mtext_ins (MText *mt1, int pos, MText *mt2) |
M-text を別の M-text に挿入する. | |
int | mtext_insert (MText *mt1, int pos, MText *mt2, int from, int to) |
M-text の一部を別の M-text に挿入する. | |
int | mtext_ins_char (MText *mt, int pos, int c, int n) |
M-text に文字を挿入する. | |
int | mtext_replace (MText *mt1, int from1, int to1, MText *mt2, int from2, int to2) |
M-text の一部を別の M-text の一部で置換する. | |
int | mtext_character (MText *mt, int from, int to, int c) |
M-text 中で文字を探す. | |
int | mtext_chr (MText *mt, int c) |
M-text 中で指定された文字が最初に現れる位置を返す. | |
int | mtext_rchr (MText *mt, int c) |
M-text 中で指定された文字が最後に現れる位置を返す. | |
int | mtext_cmp (MText *mt1, MText *mt2) |
二つの M-text を文字単位で比較する. | |
int | mtext_ncmp (MText *mt1, MText *mt2, int n) |
二つの M-text の先頭部分を文字単位で比較する. | |
int | mtext_compare (MText *mt1, int from1, int to1, MText *mt2, int from2, int to2) |
二つの M-text の指定した領域同士を比較する. | |
int | mtext_spn (MText *mt, MText *accept) |
ある集合の文字を M-text の中で探す. | |
int | mtext_cspn (MText *mt, MText *reject) |
ある集合に属さない文字を M-text の中で探す. | |
int | mtext_pbrk (MText *mt, MText *accept) |
ある集合に属す文字を M-text の中から探す. | |
MText * | mtext_tok (MText *mt, MText *delim, int *pos) |
M-text 中のトークンを探す. | |
int | mtext_text (MText *mt1, int pos, MText *mt2) |
M-text 中で別の M-text を探す. | |
int | mtext_search (MText *mt1, int from, int to, MText *mt2) |
M-text 中の特定の領域で別の M-text を探す. | |
int | mtext_casecmp (MText *mt1, MText *mt2) |
二つの M-text を大文字/小文字の区別を無視して比較する. | |
int | mtext_ncasecmp (MText *mt1, MText *mt2, int n) |
二つの M-text の先頭部分を大文字/小文字の区別を無視して比較する. | |
int | mtext_case_compare (MText *mt1, int from1, int to1, MText *mt2, int from2, int to2) |
二つの M-text の指定した領域を、大文字/小文字の区別を無視して比較する. | |
int | mtext_lowercase (MText *mt) |
M-text を小文字にする. | |
int | mtext_titlecase (MText *mt) |
M-text をタイトルケースにする. | |
int | mtext_uppercase (MText *mt) |
M-text を大文字にする. | |
変数 | |
MSymbol | Mlanguage |
変数: UTF-16 と UTF-32 のデフォルトのエンディアン | |
enum MTextFormat | MTEXT_FORMAT_UTF_16 |
値が MTEXT_FORMAT_UTF_16LE か MTEXT_FORMAT_UTF_16BE である変数 | |
const int | MTEXT_FORMAT_UTF_32 |
値が MTEXT_FORMAT_UTF_32LE か MTEXT_FORMAT_UTF_32BE である変数 | |
M-text オブジェクトとそれに関する API.
m17n ライブラリは、 C-string(char *
や unsigned char *
)ではなく M-text と呼ぶオブジェクトでテキストを表現する。 M-text は長さ 0 以上の文字列であり、種々の文字ソース(たとえば C-string、ファイル、文字コード等)から作成できる。
M-text には、C-string にない以下の特徴がある。
さらにm17n ライブラリは、 C-string を操作するために提供される種々の関数と同等のものを M-text を操作するためにサポートしている。
enum MTextFormat |
M-text のフォーマットを指定する列挙型.
列挙型 MTextFormat は関数 mtext_from_data() の引数として用いられ、 M-text を生成する元となるデータのフォーマットを指定する。
enum MTextLineBreakOption |
int mtext_line_break | ( | MText * | mt, |
int | pos, | ||
int | option, | ||
int * | after | ||
) |
MText * mtext | ( | ) |
新しいM-textを割り当てる.
関数 mtext() は、長さ 0 の新しい M-text を割り当て、それへのポインタを返す。割り当てられた M-text は、関数 m17n_object_unref() によってユーザが明示的に行なわない限り、解放されない。
MText * mtext_from_data | ( | const void * | data, |
int | nitems, | ||
enum MTextFormat | format | ||
) |
指定のデータを元に新しい M-text を割り当てる.
関数 mtext_from_data() は、要素数 nitems の配列 data で指定された文字列を持つ新しい M-text を割り当てる。format は data のフォーマットを示す。
format が MTEXT_FORMAT_US_ASCII か MTEXT_FORMAT_UTF_8 ならば、 data の内容は unsigned
char
型であり、nitems はバイト単位で表されている。
format が MTEXT_FORMAT_UTF_16LE か MTEXT_FORMAT_UTF_16BE ならば、 data の内容は unsigned
short
型であり、nitems は unsigned short 単位である。
format が MTEXT_FORMAT_UTF_32LE か MTEXT_FORMAT_UTF_32BE ならば、 data の内容は unsigned
型であり、nitems は unsigned 単位である。
割り当てられた M-text の文字列は変更できない。data の内容は M-text が有効な間は変更してはならない。
割り当てられた M-text は、関数 m17n_object_unref() によってユーザが明示的に行なわない限り、解放されない。その場合でも data は解放されない。
NULL
を返し外部変数 merror_code にエラーコードを設定する。MERROR_MTEXT
void * mtext_data | ( | MText * | mt, |
enum MTextFormat * | fmt, | ||
int * | nunits, | ||
int * | pos_idx, | ||
int * | unit_idx | ||
) |
int mtext_len | ( | MText * | mt | ) |
int mtext_ref_char | ( | MText * | mt, |
int | pos | ||
) |
M-text 中の指定された位置の文字を返す.
関数 mtext_ref_char() は、M-text mt の位置 pos の文字を返す。エラーが検出された場合は -1 を返し、外部変数 merror_code にエラーコードを設定する。
MERROR_RANGE
int mtext_set_char | ( | MText * | mt, |
int | pos, | ||
int | c | ||
) |
M-text に一文字を設定する.
関数 mtext_set_char() は、テキストプロパティ無しの文字 c を M-text mt の位置 pos に設定する。
MERROR_RANGE
M-text に一文字追加する.
関数 mtext_cat_char() は、テキストプロパティ無しの文字 c を M-text mt の末尾に追加する。
NULL
を返す。M-text のコピーを作る.
関数 mtext_dup() は、M-text mt のコピーを作る。mt のテキストプロパティはすべて継承される。
2個の M-textを連結する.
関数 mtext_cat() は、 M-text mt2 を M-text mt1 の末尾に付け加える。mt2 のテキストプロパティはすべて継承される。mt2 は変更されない。
M-text の一部を別の M-text に付加する.
関数 mtext_ncat() は、M-text mt2 のはじめの n 文字を M-text mt1 の末尾に付け加える。mt2 のテキストプロパティはすべて継承される。mt2 の長さが n 以下ならば、mt2 のすべての文字が付加される。 mt2 は変更されない。
NULL
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_RANGE
M-text を別の M-text にコピーする.
関数 mtext_cpy() は M-text mt2 を M-text mt1 に上書きコピーする。 mt2 のテキストプロパティはすべて継承される。mt1 の長さは必要に応じて伸ばされる。mt2 は変更されない。
M-text に含まれる最初の何文字かをコピーする.
関数 mtext_ncpy() は、M-text mt2 の最初の n 文字を M-text mt1 に上書きコピーする。mt2 のテキストプロパティはすべて継承される。もし mt2 の長さが n よりも小さければ mt2 のすべての文字をコピーする。mt1 の長さは必要に応じて伸ばされる。mt2 は変更されない。
NULL
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_RANGE
既存の M-text の一部から新しい M-text をつくる.
関数 mtext_duplicate() は、M-text mt の from (from 自体も含む)から to (to 自体は含まない)までの部分のコピーを作る。このとき mt のテキストプロパティはすべて継承される。mt そのものは変更されない。
NULL
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_RANGE
M-text に指定範囲の文字をコピーする.
関数 mtext_copy() は、 M-text mt2 の from (from 自体も含む)から to (to 自体は含まない)までの範囲のテキストを M-text mt1 の位置 pos から上書きコピーする。mt2 のテキストプロパティはすべて継承される。mt1 の長さは必要に応じて伸ばされる。mt2 は変更されない。
NULL
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_RANGE
int mtext_del | ( | MText * | mt, |
int | from, | ||
int | to | ||
) |
指定範囲の文字を破壊的に取り除く.
関数 mtext_del() は、M-text mt の from (from 自体も含む)から to (to 自体は含まない)までの文字を破壊的に取り除く。結果的に mt は長さが (to -
from) だけ縮むことになる。
MERROR_RANGE
M-text を別の M-text に挿入する.
関数 mtext_ins() は M-text mt1 の pos の位置に別の M-text mt2 を挿入する。この結果 mt1 の長さは mt2 の長さ分だけ増える。挿入の際、mt2 のテキストプロパティはすべて継承される。mt2 そのものは変更されない。
MERROR_RANGE
, MERROR_MTEXT
M-text の一部を別の M-text に挿入する.
関数 mtext_insert() は M-text mt1 中の pos の位置に、別の M-text mt2 の from (from 自体も含む)から to (to 自体は含ま ない)までの文字を挿入する。結果的に mt1 は長さが (to - from) だけ伸びる。挿入の際、 mt2 中のテキストプロパティはすべて継承され る。
MERROR_MTEXT
, MERROR_RANGE
int mtext_ins_char | ( | MText * | mt, |
int | pos, | ||
int | c, | ||
int | n | ||
) |
M-text に文字を挿入する.
関数 mtext_ins_char() は M-text mt の pos の位置に文字 c のコピーを n 個挿入する。この結果 mt1 の長さは n だけ増える。
MERROR_RANGE
M-text の一部を別の M-text の一部で置換する.
関数 mtext_replace() は、 M-text mt1 の from1 (from1 自体も含 む)から to1 (to1 自体は含まない)までを、 M-text mt2 の from2 (from2 自体も含む)から to2 (to2 自体は含まない)で置 き換える。新しく挿入された部分は、置き換える前のテキストプロパティ すべてを継承する。
MERROR_MTEXT
, MERROR_RANGE
int mtext_character | ( | MText * | mt, |
int | from, | ||
int | to, | ||
int | c | ||
) |
M-text 中で文字を探す.
関数 mtext_character() は M-text mt 中で文字 c を探す。もし from が to より小さければ、探索は位置 from から末尾方向へ、最大 (to - 1) まで進む。そうでなければ位置 (from - 1) から先頭方向へ、最大 to まで進む。位置の指定に誤りがある場合は、from と to の両方に 0 が指定されたものとみなす。
int mtext_chr | ( | MText * | mt, |
int | c | ||
) |
M-text 中で指定された文字が最初に現れる位置を返す.
関数 mtext_chr() は M-text mt 中で文字 c を探す。探索は mt の先頭から末尾方向に進む。
MERROR_RANGE
int mtext_rchr | ( | MText * | mt, |
int | c | ||
) |
M-text 中で指定された文字が最後に現れる位置を返す.
関数 mtext_rchr() は M-text mt 中で文字 c を探す。探索は mt の最後から先頭方向へと後向きに進む。
MERROR_RANGE
二つの M-text を文字単位で比較する.
関数 mtext_cmp() は、 M-text mt1 と mt2 を文字単位で比較する。
二つの M-text の先頭部分を文字単位で比較する.
関数 mtext_ncmp() は、関数 mtext_cmp() 同様の M-text 同士の比較を先頭から最大 n 文字までに関して行なう。
二つの M-text の指定した領域同士を比較する.
関数 mtext_compare() は二つの M-text mt1 と mt2 を文字単位で比較する。比較の対象は mt1 のうち from1 から to1 までと、mt2 のうち from2 から to2 までである。from1 と from2 は含まれ、to1 と to2 は含まれない。from1 と to1 (あるいは from2 と to2 )が等しい場合は長さゼロの M-text を意味する。範囲指定に誤りがある場合は、 from1 と to1 (あるいは from2 と to2 ) 両方に 0 が指定されたものとみなす。
ある集合の文字を M-text の中で探す.
関数 mtext_spn() は、M-text mt1 の先頭から M-text mt2 に含まれる文字だけでできている部分の長さを返す。
ある集合に属さない文字を M-text の中で探す.
関数 mtext_cspn() は、M-text mt1 の先頭部分で M-text mt2 に含まれない文字だけでできている部分の長さを返す。
ある集合に属す文字を M-text の中から探す.
関数 mtext_pbrk() は、M-text mt1 中で M-text mt2 の文字のどれかが最初に現れる位置を調べる。
M-text 中のトークンを探す.
関数 mtext_tok() は、M-text mt の中で位置 pos 以降最初に現れるトークンを探す。ここでトークンとは M-text delim の中に現われない文字だけからなる部分文字列である。pos の型が int
ではなくて int
へのポインタであることに注意。
NULL
を返す。エラーが検出された場合は NULL
を返し、変部変数 merror_code にエラーコードを設定する。MERROR_RANGE
M-text 中で別の M-text を探す.
関数 mtext_text() は、M-text mt1 中で位置 pos 以降に現われる M-text mt2 の最初の位置を調べる。テキストプロパティの違いは無視される。
M-text 中の特定の領域で別の M-text を探す.
関数 mtext_search() は、M-text mt1 中の from から to までの間の領域でM-text mt2 が最初に現われる位置を調べる。テキストプロパティの違いは無視される。もし from が to より小さければ探索は位置 from から末尾方向へ、そうでなければ to から先頭方向へ進む。
二つの M-text を大文字/小文字の区別を無視して比較する.
関数 mtext_casecmp() は、関数 mtext_cmp() 同様の M-text 同士の比較を、大文字/小文字の区別を無視して行なう。
二つの M-text の先頭部分を大文字/小文字の区別を無視して比較する.
関数 mtext_ncasecmp() は、関数 mtext_casecmp() 同様の M-text 同士の比較を先頭から最大 n 文字までに関して行なう。
二つの M-text の指定した領域を、大文字/小文字の区別を無視して比較する.
関数 mtext_compare() は二つの M-text mt1 と mt2 を、大文字/小文字の区別を無視して文字単位で比較する。比較の対象は mt1 の from1 から to1 まで、mt2 の from2 から to2 までである。 from1 と from2 は含まれ、to1 と to2 は含まれない。from1 と to1 (あるいは from2 と to2 )が等しい場合は長さゼロの M-text を意味する。範囲指定に誤りがある場合は、from1 と to1 (あるいは from2 と to2 )両方に 0 が指定されたものと見なす。
int mtext_lowercase | ( | MText * | mt | ) |
M-text を小文字にする.
関数 mtext_lowercase() は M-text mt 中の各文字を破壊的に小文字に変 換する。変換に際して隣接する文字の影響を受けることがある。mt にテ キストプロパティ Mlanguage が付いている場合は、それも変換に影響を 与えうる。mt の長さは変わることがある。小文字に変換できなかった文 字はそのまま残る。テキストプロパティはすべて継承される。
int mtext_titlecase | ( | MText * | mt | ) |
M-text をタイトルケースにする.
関数 mtext_titlecase() は M-text mt 中で cased プロパティを持つ 最初の文字をタイトルケースに、そしてそれ以降の文字を小文字に破壊的 に変換する。mt の長さは変わることがある。タイトルケースにに変換で きなかった場合はそのままで変わらない。テキストプロパティはすべて継 承される。
int mtext_uppercase | ( | MText * | mt | ) |
M-text を大文字にする.
関数 mtext_uppercase() は M-text mt 中の各文字を破壊的に大文字に変 換する。変換に際して隣接する文字の影響を受けることがある。mt にテ キストプロパティ Mlanguage が付いている場合は、それも変換に影響を 与えうる。mt の長さは変わることがある。大文字に変換できなかった文 字はそのまま残る。テキストプロパティはすべて継承される。
|
extern |
値が MTEXT_FORMAT_UTF_16LE か MTEXT_FORMAT_UTF_16BE である変数
大域変数 MTEXT_FORMAT_UTF_16 はリトル・エンディアン・システム (ワードを LSB (Least Significant Byte) を先にして格納)上では MTEXT_FORMAT_UTF_16LE に初期化され、ビッグ・エンディアン・システム (ワードを MSB (Most Significant Byte) を先にして格納)上では MTEXT_FORMAT_UTF_16BE に初期化される。
|
extern |
値が MTEXT_FORMAT_UTF_32LE か MTEXT_FORMAT_UTF_32BE である変数
大域変数 MTEXT_FORMAT_UTF_32 はリトル・エンディアン・システム (ワードを LSB (Least Significant Byte) を先にして格納)上では MTEXT_FORMAT_UTF_32LE に初期化され、ビッグ・エンディアン・システム (ワードを MSB (Most Significant Byte) を先にして格納)上では MTEXT_FORMAT_UTF_32BE に初期化される。
MSymbol Mlanguage |
"language" という名前を持つシンボル.