ツリーはキーとなる文字列とそのキーに対応するボックスから構成されます。ボックスはキーを指定して取得、消去することができます。また、キーはその文字列の辞書順で順序付けられ、ツリーのボックスはそれぞれのキーの順序でソートされています。そのため、キーの順番でボックスをスキャンすることができます。
ボックスを追加、変更するには、ツリーからボックスキットを生成します。ボックスキットを編集し、クローズすることで、ツリーを変更することができます。
ツリーはエラーが発生するとオンになるエラーインディケータをもちます。エラーインディケータの状態はTree_
struct Tree ツリーの実体となる構造体です。 |
struct Tree_ ツリーを生成する際に指定するモードを表す構造体です。 |
struct Tree * | Tree_ ツリーを生成します。 |
void | Tree_ ツリーを解放します。 |
struct BoxKit * | Tree_ ツリーを変更するためのボックスキットを生成します。 |
int | Tree_ ツリーからボックスを消去します。 |
struct Box * | Tree_ ツリーの最初のボックスをスキャンします。 |
struct Box * | Tree_ ツリーの次のボックスをスキャンします。 |
struct Box * | Tree_ ツリーの最後のボックスをスキャンします。 |
struct Box * | Tree_ ツリーの前のボックスをスキャンします。 |
struct Box * | Tree_ キーを指定してボックスをスキャンします。 |
struct Box * | Tree_ キーを指定してボックスを取得します。 |
int | Tree_ シリアライズされたデータをコミットします。 |
int | Tree_ ツリーのエラーインディケータの状態を取得します。 |
void | Tree_ ツリーのエラーインディケータの状態をクリアします。 |
const struct Tree_ |
Tree_MODE_READONLY 共有ロック(リーダロック)のモードです。 |
const struct Tree_ |
Tree_MODE_SHARED 共有ロック(リーダロック)のモードです。 |
const struct Tree_ |
Tree_MODE_EXCLUSIVE 排他ロック(ライタロック)のモードです。 |
型の詳細は隠蔽されています。
型の詳細は隠蔽されています。
struct Tree * Tree_create( | const char * path, |
const struct Tree_ |
pathのデータベースファイルからツリーを生成します。データベースファイルは生成したインスタンスを解放するまで、modeに応じた方式でロックされます。
modeがTree_
modeがTree_
pathが存在しない場合、modeがTree_
戻り値が参照するオブジェクトはTree_
ツリーを生成できなかった場合はNULLを返します。
void Tree_free( | struct Tree * tree) |
データベースファイルのロックを解除します。
treeがNULLのときはなにもしません。呼び出し後はtreeが参照するオブジェクトを参照してはなりません。
struct BoxKit * Tree_getBoxKit( | struct Tree * tree, |
const char * key) |
指定されたキーに対応するボックスキットを生成します。既に同じキーのボックスがツリーに含まれる場合は、そのボックスの内容をボックスキットにコピーします。
戻り値が参照するオブジェクトはBoxKit_
ボックスキットを生成できなかった場合はNULLを返します。
エラーの場合はエラーインディケータを設定します。
int Tree_delete( | struct Tree * tree, |
const char * key) |
指定されたキーに対応するボックスを消去します。
Tree_
エラーの場合はエラーインディケータを設定します。
struct Box * Tree_scanFirstBox( | struct Tree * tree) |
戻り値が参照するオブジェクトは、ツリーを解放するか、再度ツリーからボックスを取得またはスキャンするまで有効です。戻り値が参照するオブジェクトを解放してはなりません。
ボックスが存在しないか、エラーの場合はNULLを返します。
エラーの場合はエラーインディケータを設定します。
struct Box * Tree_scanNextBox( | struct Tree * tree) |
前回スキャンしたボックスの次のボックスをスキャンします。以前にツリーをスキャンしていない場合は、Tree_
戻り値が参照するオブジェクトは、ツリーを解放するか、再度ツリーからボックスを取得またはスキャンするまで有効です。戻り値が参照するオブジェクトを解放してはなりません。
前回スキャンしたボックスがツリーの最後のボックスだった場合、またはエラーの場合はNULLを返します。
エラーの場合はエラーインディケータを設定します。
struct Box * Tree_scanLastBox( | struct Tree * tree) |
戻り値が参照するオブジェクトは、ツリーを解放するか、再度ツリーからボックスを取得またはスキャンするまで有効です。戻り値が参照するオブジェクトを解放してはなりません。
ボックスが存在しないか、エラーの場合はNULLを返します。
エラーの場合はエラーインディケータを設定します。
struct Box * Tree_scanPreviousBox( | struct Tree * tree) |
前回スキャンしたボックスの前のボックスをスキャンします。以前にツリーをスキャンしていない場合は、Tree_
戻り値が参照するオブジェクトは、ツリーを解放するか、再度ツリーからボックスを取得またはスキャンするまで有効です。戻り値が参照するオブジェクトを解放してはなりません。
前回スキャンしたボックスがツリーの最初のボックスだった場合、またはエラーの場合はNULLを返します。
エラーの場合はエラーインディケータを設定します。
struct Box * Tree_scanBox( | struct Tree * tree, |
const char * key) |
keyに対応するボックスが存在する場合、そのボックスを返します。そうでなければ、辞書順にkeyよりも大きく、最も小さいキーのボックスを返します。
戻り値が参照するオブジェクトは、ツリーを解放するか、再度ツリーからボックスを取得またはスキャンするまで有効です。戻り値が参照するオブジェクトを解放してはなりません。
keyよりも大きいキーのボックスが存在しないか、エラーの場合はNULLを返します。
エラーの場合はエラーインディケータを設定します。
struct Box * Tree_getBox( | struct Tree * tree, |
const char * key) |
keyに対応するボックスを返します。
戻り値が参照するオブジェクトは、ツリーを解放するか、再度ツリーからボックスを取得またはスキャンするまで有効です。戻り値が参照するオブジェクトを解放してはなりません。
keyに対応するボックスが存在しないか、エラーの場合はNULLを返します。
エラーの場合はエラーインディケータを設定します。
int Tree_put( | struct Tree * tree, |
const char * key, | |
const void * data, | |
size_t size) |
このメソッドは実装上の都合で公開されているので、アプリケーションは呼び出さないでください。
keyをキーとして、シリアライズされたデータをツリーにコミットします。
Tree_
エラーの場合はエラーインディケータを設定します。
int Tree_hasError( | struct Tree * tree) |
エラーが発生していた場合は非0を、そうでなければ0を返します。
void Tree_clearError( | struct Tree * tree) |
const struct Tree_ |
Tree_
const struct Tree_ |
Tree_
const struct Tree_ |
Tree_