int mtext_get_prop_values |
( |
MText * |
mt, |
|
|
int |
pos, |
|
|
MSymbol |
key, |
|
|
void ** |
values, |
|
|
int |
num | |
|
) |
| | |
|
関数 mtext_get_prop_values() は、M-text mt 内で pos という位置 にある文字のプロパティのうち、キーが key であるものを探す。もしそ のようなプロパティが見つかれば、それが持つ値 (複数可) を values の指すメモリ領域に格納する。num は格納する値の数の上限である。
- 戻り値:
- 処理が成功すれば、mtext_get_prop_values() は実際にメモリに格納さ れた値の数を返す。pos の位置の文字が key をキーとするプロパティ を持たなければ 0 を返す。エラーが検出された場合は -1 を返し、外部 変数 merror_code にエラーコードを設定する。
- エラー:
MERROR_RANGE , MERROR_SYMBOL
- 参照:
- mtext_get_prop(), mtext_put_prop(), mtext_put_prop_values(), mtext_push_prop(), mtext_pop_prop(), mtext_prop_range()
|
int mtext_put_prop |
( |
MText * |
mt, |
|
|
int |
from, |
|
|
int |
to, |
|
|
MSymbol |
key, |
|
|
void * |
val | |
|
) |
| | |
|
関数 mtext_put_prop() は、M-text mt の from (含まれる)から to (含まれない)の範囲の文字に、キーが key で値が val であるよ うなテキストプロパティを設定する。この関数によって
FROM TO
M-text: |<------------|-------- MT ---------|------------>|
PROP: <------------------ OLD_VAL -------------------->
は次のようになる。
FROM TO
M-text: |<------------|-------- MT ---------|------------>|
PROP: <-- OLD_VAL-><-------- VAL -------><-- OLD_VAL-->
- 戻り値:
- 処理が成功すれば mtext_put_prop() は 0 を返す。そうでなければ -1 を返し、外部変数 merror_code にエラーコードを設定する。
- エラー:
MERROR_RANGE , MERROR_SYMBOL
- 参照:
- mtext_put_prop_values(), mtext_get_prop(), mtext_get_prop_values(), mtext_push_prop(), mtext_pop_prop(), mtext_prop_range()
|
int mtext_put_prop_values |
( |
MText * |
mt, |
|
|
int |
from, |
|
|
int |
to, |
|
|
MSymbol |
key, |
|
|
void ** |
values, |
|
|
int |
num | |
|
) |
| | |
|
関数 mtext_put_prop_values() は、M-Text mt のfrom (含まれる) から to (含まれない)の範囲の文字に、テキストプロパティを設定す る。テキストプロパティのキーは key によって、値(複数可)は values によって指定される。num は設定される値の個数である。
- 戻り値:
- 処理が成功すれば、mtext_put_prop_values() は 0 を返す。そうでなけ れば -1 を返し、外部変数 merror_code にエラーコードを設定する。
- エラー:
MERROR_RANGE , MERROR_SYMBOL
- 参照:
- mtext_put_prop(), mtext_get_prop(), mtext_get_prop_values(), mtext_push_prop(), mtext_pop_prop(), mtext_prop_range()
|
int mtext_push_prop |
( |
MText * |
mt, |
|
|
int |
from, |
|
|
int |
to, |
|
|
MSymbol |
key, |
|
|
void * |
val | |
|
) |
| | |
|
関数 mtext_push_prop() は、キーが key で値が val であるテキスト プロパティを、M-text mt 中の from (含まれる)から to (含まれな い)の範囲の文字にプッシュする。この関数によって
FROM TO
M-text: |<------------|-------- MT ---------|------------>|
PROP : <------------------ OLD_VAL -------------------->
は次のようになる。 FROM TO
M-text: |<------------|-------- MT ---------|------------>|
PROP : <------------------- OLD_VAL ------------------->
PROP : <-------- VAL ------->
- 戻り値:
- 処理が成功すれば、mtext_push_prop() は 0 を返す。そうでなければ -1 を返し、外部変数 merror_code にエラーコードを設定する。
- エラー:
MERROR_RANGE , MERROR_SYMBOL
- 参照:
- mtext_put_prop(), mtext_put_prop_values(), mtext_get_prop(), mtext_get_prop_values(), mtext_pop_prop(), mtext_prop_range()
|
int mtext_prop_range |
( |
MText * |
mt, |
|
|
MSymbol |
key, |
|
|
int |
pos, |
|
|
int * |
from, |
|
|
int * |
to, |
|
|
int |
deeper | |
|
) |
| | |
|
関数 mtext_prop_range() は、指定したテキストプロパティの値が同じ である連続した文字の範囲を調べる。まず M-text mt の pos の位置に ある文字のプロパティのうち、キー key で指定されたもの値を見つけ る。そして前後の文字も key のプロパティの値が同じであるかどうかを 調べる。見つけた範囲の最初と最後を、それぞれ from と to にポイン トされる変数に保存する。from に保存される文字の位置は見つけた範囲 に含まれるが、to は含まれない。(to の前で同じ値をとる範囲は終わ る。)この範囲指定法は、関数 mtext_put_prop() などと共通である。
deeper が 0 でなければ、key というキーを持つプロパティのうち一番 上のものだけでなく、スタック中のすべてのものが比較される。
from が NULL ならば、範囲の始まりは探索しない。to が NULL ならば、範囲の終りは探索しない。
- 戻り値:
- 処理が成功すれば、mtext_prop_range() は key プロパティの値の数を 返す。そうでなければ-1 を返し、 外部変数 merror_code にエラーコー ドを設定する。
- エラー:
MERROR_RANGE , MERROR_SYMBOL
- 参照:
- mtext_put_prop(), mtext_put_prop_values(), mtext_get_prop(), mtext_get_prop_values(), mtext_pop_prop(), mtext_push_prop()
|
|
関数 mtext_property() は key をキー、val を値とする新しく割り当 てられたテキストプロパティを返す。生成したテキストプロパティはいか なる M-text にも付加されていない、すなわち分離して (detached) いる。
control_bits は 0 であるか enum MTextPropertyControl の論理 OR でなくてはならない。 |
|
関数 mtext_property_start() は、テキストプロパティ prop の開始位 置を返す。開始位置とは M-text 中で prop が始まる文字位置である。 prop が分離されていれば、-1 を返す。 |
|
関数 mtext_property_end() は、テキストプロパティ prop の終了位置 を返す。終了位置とは M-text 中で prop が終る文字位置である。prop が分離されていれば、-1 を返す。 |
|
関数 mtext_get_properties() は M-text mt の位置 pos の文字がキー が key であるテキストプロパティを持つかどうかを調べる。そのような プロパティがみつかれば、props が指すメモリ領域に保存する。num は 保存されるプロパティの数の上限である。
- 戻り値:
- 処理が成功すれば、mtext_get_properties() は実際に保存したプロパティ の数を返す。pos の位置の文字がキーが key であるプロパティを持た なければ、0 が返る。エラーが検出された場合には、 mtext_get_properties() は -1 を返し、外部変数 merror_code にエラー コードを設定する。
|
|
関数 mtext_attach_property() は、M-text mt の from から to ま での領域にテキストプロパティ prop を付加する。もし prop が既に M-text に付加されていれば、mt に付加する前に分離される。
- 戻り値:
- 処理に成功すれば、mtext_attach_property() は 0 を返す。そうでなけ れば -1 を返して外部変数merror_code にエラーコードを設定する。
|
|
関数 mtext_push_property() は、テキストプロパティ prop を、 M-text mt 中の from (含まれる)から to (含まれない)の範囲の 文字にプッシュする。
- 戻り値:
- 処理に成功すれば、mtext_push_property() は 0 を返す。そうでなけ れば -1 を返して外部変数merror_code にエラーコードを設定する。
|
|
関数 mtext_serialize() は M-text mt の from から to までのテキ ストをシリアライズする。シリアライズした結果は XML 形式の M-text で ある。 property_list はシリアライズされるテキストプロパティを限定 する。対象となるテキストプロパティは、そのキーが
もののみである。この条件を満たすテキストプロパティは、生成される XML 表現中で "property" 要素にシリアライズされる。
生成される XML の DTD は以下の通り:
<!DOCTYPE mtext [
<!ELEMENT mtext (property*,body+)>
<!ELEMENT property EMPTY>
<!ELEMENT body (#PCDATA)>
<!ATTLIST property key CDATA #REQUIRED>
<!ATTLIST property value CDATA #REQUIRED>
<!ATTLIST property from CDATA #REQUIRED>
<!ATTLIST property to CDATA #REQUIRED>
<!ATTLIST property control CDATA #REQUIRED>
]>
この関数は libxml2 ライブラリに依存する。m17n ライブラリがlibxml2 無しに設定されている場合、この関数は常に失敗する。
- 戻り値:
- 処理に成功すれば、mtext_serialize() は XML 形式で M-text を返す。 そうでなければ
NULL を返して外部変数merror_code にエラーコード を設定する。
- 参照:
- mtext_deserialize(), Mtext_prop_serializer
|
|
関数 mtext_deserialize() は M-text mt をデシリアライズする。mt は次の DTD を持つ XML でなくてはならない。
<!DOCTYPE mtext [
<!ELEMENT mtext (property*,body+)>
<!ELEMENT property EMPTY>
<!ELEMENT body (#PCDATA)>
<!ATTLIST property key CDATA #REQUIRED>
<!ATTLIST property value CDATA #REQUIRED>
<!ATTLIST property from CDATA #REQUIRED>
<!ATTLIST property to CDATA #REQUIRED>
<!ATTLIST property control CDATA #REQUIRED>
]>
この関数は libxml2 ライブラリに依存する。m17n ライブラリがlibxml2 無しに設定されている場合、この関数は常に失敗する。
- 戻り値:
- 処理に成功すれば、mtext_serialize() は得られた M-text を 返す。そうでなければ
NULL を返して外部変数 merror_code にエラー コードを設定する。
- 参照:
- mtext_serialize(), Mtext_prop_deserializer
|
|