Main Page   Modules   Data Structures   Globals   Appendix  

シンボル
[コア API]

シンボルオブジェクトとそれに関する API. [詳細]

型定義

typedef MSymbolStruct * MSymbol
 シンボルの型宣言.

関数

MSymbol msymbol (const char *name)
 シンボルを得る.
MSymbol msymbol_as_managing_key (const char *name)
 管理キーを作る.
int msymbol_is_managing_key (MSymbol symbol)
MSymbol msymbol_exist (const char *name)
 指定された名前を持つシンボルを探す.
char * msymbol_name (MSymbol symbol)
 シンボルの名前を得る.
int msymbol_put (MSymbol symbol, MSymbol key, void *val)
 シンボルプロパティに値を設定する.
void * msymbol_get (MSymbol symbol, MSymbol key)
 シンボルプロパティの値を得る.
int msymbol_put_func (MSymbol symbol, MSymbol key, M17NFunc func)
 シンボルプロパティの値(関数ポインタ)を設定する.
M17NFunc msymbol_get_func (MSymbol symbol, MSymbol key)
 シンボルプロパティの値 (関数ポインタ) を得る.

変数

MSymbol Mnil
 "nil" を名前として持つシンボル.
MSymbol Mt
 "t" を名前として持つシンボル.
MSymbol Mstring
 "string" を名前として持つシンボル.
MSymbol Msymbol
 "symbol" を名前として持つシンボル.

説明

m17n ライブラリは一意に決まる識別子として シンボル と呼ぶオブジェクトを用いる。シンボルは X ライブラリのアトムと似ているが、 0 個以上の シンボルプロパティ を持つことができる。シンボルプロパティは キー からなる。キーはそれ自体シンボルであり、値は (void *) 型にキャストできるものなら何でもよい。「シンボル S が持つシンボルプロパティのうちキーが K のもの」を簡単に「S の K プロパティ」と呼ぶことがある。

シンボルの用途は主に以下の3通りである。

管理キー と呼ばれる特別なシンボルがあり、管理キーをキーとして持つプロパティの値は 管理下オブジェクト でなくてはならない。詳細は 管理下オブジェクト 参照。

型定義

typedef struct MSymbolStruct* MSymbol

MSymbolシンボル (symbol) オブジェクトの型である。 内部構造はアプリケーションプログラムからは見えない。


関数

MSymbol msymbol ( const char *  name  ) 

関数 msymbol()name という名前を持つ正規化されたシンボルを返す。そのようなシンボルが存在しない場合には、生成する。生成されたシンボルは管理キーではない。

空白文字二つで始まるシンボルは m17n ライブラリ用であり、内部的にのみ用いられる。

戻り値:
この関数は見つけたか生成したかしたシンボルを返す。
エラー:
この関数は決して失敗しない。

参照:
msymbol_as_managing_key(), msymbol_name(), msymbol_exist()

MSymbol msymbol_as_managing_key ( const char *  name  ) 

関数 msymbol_as_managing_key() は名前 name を持つ新しく作られた管理キーを返す。すでに名前 name を持つシンボルがあれば、 Mnil を返す。

空白文字二つで始まるシンボルは m17n ライブラリ用であり、内部的にのみ用いられる。

戻り値:
処理に成功すれば、この関数は生成したシンボルを返す。そうでなければ Mnil を返す。
エラー:
MERROR_SYMBOL
参照:
msymbol(), msymbol_exist()

int msymbol_is_managing_key ( MSymbol  symbol  ) 

MSymbol msymbol_exist ( const char *  name  ) 

関数 msymbol_exist()name という名前を持つシンボルを探す。

戻り値:
もしそのようなシンボルが存在するならばそのシンボルを返す。そうでなければ、定義済みシンボル Mnil を返す。
エラー:
この関数は決して失敗しない。
参照:
msymbol_name(), msymbol()

char* msymbol_name ( MSymbol  symbol  ) 

関数 msymbol_name() は指定されたシンボル symbol の名前を含む文字列へのポインタを返す。

エラー:
この関数は決して失敗しない。
参照:
msymbol(), msymbol_exist()

int msymbol_put ( MSymbol  symbol,
MSymbol  key,
void *  val 
)

関数 msymbol_put() は、シンボル symbol 中でキーが key であるシンボルプロパティの値を val に設定する。そのシンボルプロパティにすでに値があれば上書きする。 symbol, key とも Mnil であってはならない。

key が管理キーならば、val は管理下オブジェクトでなくてはならない。この場合、古い値の参照数は NULL でなければ 1 減らされ、val の参照数は 1 増やされる。

戻り値:
処理が成功すれば、msymbol_put() は 0 を返す。そうでなければ -1 を返し、外部変数 merror_code にエラーコードを設定する。
エラー:
MERROR_SYMBOL
参照:
msymbol_get()

void* msymbol_get ( MSymbol  symbol,
MSymbol  key 
)

関数 msymbol_get() は、シンボル symbol が持つシンボルプロパティのうち、キーが key であるものを探す。もし該当するシンボルプロパティが存在すれば、それの値を返す。そうでなければ NULL を返す。

戻り値:
エラーが検出された場合、msymbol_get() は NULL を返し、外部変数 merror_code にエラーコードを設定する。
エラー:
MERROR_SYMBOL
参照:
msymbol_put()

int msymbol_put_func ( MSymbol  symbol,
MSymbol  key,
M17NFunc  func 
)

関数 msymbol_put_func() は、関数 msymbol_put() と同様に、シンボル symbol のキーが key であるシンボルプロパティの値を設定する。但し その値は関数ポインタ func である。

参照: msymbol_put(), M17N_FUNC()

M17NFunc msymbol_get_func ( MSymbol  symbol,
MSymbol  key 
)

関数 msymbol_get_func() は、関数 msymbol_get() と同様に、シンボル symbol が持つシンボルプロパティのうち、キーが key であるものを得る。但し その値は関数ポインタをである。

参照:
msymbol_get()


変数

MSymbol Mnil

シンボル Mnil"nil" という名前を持ち、一般に「偽」または「否定」を意味する。 "int" に変換された場合、値は 0 である。 Mnil 自身はいかなるシンボルプロパティも持たない。

MSymbol Mt

シンボル Mt"t" という名前を持ち、一般に「真」または「肯定」を意味する。

MSymbol Mstring

シンボル Mstring"string" という名前を持ち、関数 mchar_define_property() などの引数として用いられる。

MSymbol Msymbol

定義済みシンボル Msymbol"symbol" という名前を持ち、関数 mchar_define_property() などの引数として使われる。


このページの先頭

Main Page   Modules   Data Structures   Globals   Appendix  

mulemark