m17n ライブラリ 1.8.4
|
参照回数で管理されるオブジェクト [詳解]
データ構造 | |
struct | M17NObjectHead |
管理下オブジェクトの最初のメンバ. [詳解] | |
関数 | |
void * | m17n_object (int size, void(*freer)(void *)) |
int | m17n_object_ref (void *object) |
管理下オブジェクトの参照数を 1 増やす. | |
int | m17n_object_unref (void *object) |
管理下オブジェクトの参照数を 1 減らす. | |
参照回数で管理されるオブジェクト
管理下オブジェクトとは参照数によって管理されているオブジェクトである.
m17n オブジェクトのある型のものは、参照数によって管理されている。 それらのオブジェクトは 管理下オブジェクト と呼ばれる。生成された時点での参照数は 1 に初期化されている。関数 m17n_object_ref() は管理下オブジェクトの参照数を 1 増やし、関数m17n_object_unref() は 1 減らす。参照数が 0 になった管理下オブジェクトは自動的に解放される。
キーが管理キーであるプロパティは、値として管理下オブジェクトだけを取る。 関数 msymbol_put() や mplist_put() などはそれらのプロパティを特別扱いする。
定義済み管理下オブジェクトタイプの他に、ユーザは必要な管理下オブジェクトタイプを自分で定義することができる。詳細は m17n_object() の説明を参照。
void * m17n_object | ( | int | size, |
void(*)(void *) | freer | ||
) |
@brief 管理下オブジェクトを割り当てる. 関数 m17n_object() は@b size バイトの新しい管理下オブジェクトを割り当て、その参照数を 1 とする。 @b freer は参照数が 0 になった際にそのオブジェクトを解放するために用いられる関数である。@b freer が NULLならば、オブジェクトは関数 free() によって解放される。 割り当てられたオブジェクト冒頭のバイトは、#M17NObjectHead が占める。この領域は m17n ライブラリが使用するので、アプリケーションプログラムは触れてはならない。 @par 戻り値: この関数は新しく割り当てられたオブジェクトを返す。 @par エラー: この関数は失敗しない。
int m17n_object_ref | ( | void * | object | ) |
管理下オブジェクトの参照数を 1 増やす.
関数 m17n_object_ref() は object で指される管理下オブジェクトの参照数を 1 増やす。
int m17n_object_unref | ( | void * | object | ) |
管理下オブジェクトの参照数を 1 減らす.
関数 m17n_object_unref() は object で指される管理下オブジェクトの参照数を 1 減らす。参照数が 0 になれば、オブジェクトは解放関数によって解放される。