木構造用ノードデータクラス [詳細]
Public メソッド | |
fk_TreeData (fk_Tree *tree, const std::string name, fk_TreeData *parent) | |
コンストラクタ | |
~fk_TreeData () | |
デストラクタ | |
int | getDepth (void) |
深さ参照関数 | |
int | getMaxDepth (void) |
枝深さ参照関数 | |
fk_TreeData * | getChild (fk_TreeData *node) |
子ノード逐次参照関数 | |
fk_TreeData * | getParent (void) |
親ノード参照関数 | |
fk_TreeData * | getNext (void) |
後ノード参照関数 | |
fk_TreeData * | getPrev (void) |
前ノード参照関数 | |
int | getOrder (void) |
順位参照関数 | |
int | getChildrenSize (void) |
子ノード個数参照関数 | |
std::string | getName (void) |
名称参照関数 | |
void | setObject (fk_TreeBaseObject *object, bool deleteFlg=true) |
ユーザデータ設定関数 | |
fk_TreeBaseObject * | getObject (void) |
ユーザデータ参照関数 |
木構造用ノードデータクラス
このクラスは、木構造を用いたデータベースにおける、 ノードデータに必要な機能を提供します。
本クラスは、FK の機能を利用するためのものではなく、 ユーザが木構造を利用する際に便利なユーティリティクラスです。 本クラスおよび fk_Tree, fk_TreeBaseObject の各クラスを用いて利用します。 本クラスの解説に使用される用語については、 fk_Tree クラスの概要を参照して下さい。
各クラスの役割ですが、 fk_Tree クラスは木構造全体のデータベースとなります。 fk_TreeData は各ノードのデータを意味します。 fk_TreeBaseObject は、 fk_TreeData に対してユーザ定義のデータを付加するための基底クラスとなります。 基本的には、ノードの生成、移動、消去といった操作は fk_Tree で、 ノード自体の設定は fk_TreeData のメンバ関数で行うことになります。
本クラスのインスタンスは、基本的にはユーザが自前で生成するものではなく、 fk_Tree の各種ノード生成関数によって自動的に生成されるものです。 唯一の例外は fk_Tree クラスの派生クラスを作成し、 そこで fk_Tree::makeNewData() を再定義する場合となります。
fk_TreeData::fk_TreeData | ( | fk_Tree * | tree, | |
const std::string | name, | |||
fk_TreeData * | parent | |||
) |
コンストラクタ
fk_Tree::makeNewData() を再定義する際に、 インスタンスを自前で生成する際に利用します。
[in] | tree | 新ノードが属する fk_Tree インスタンス |
[in] | name | 新ノードに指定されている名称 |
[in] | parent | 新ノードの親となるノードのインスタンス |
fk_TreeData::~fk_TreeData | ( | ) |
デストラクタ
int fk_TreeData::getDepth | ( | void | ) |
int fk_TreeData::getMaxDepth | ( | void | ) |
枝深さ参照関数
このノードを頂点とする枝の中で、最大の深さを取得します。 根ノードでこの関数を呼んだ場合は、全体の深さの最大値を返すことになります。
fk_TreeData* fk_TreeData::getChild | ( | fk_TreeData * | node | ) |
子ノード逐次参照関数
このノードの子ノードを逐次的に参照します。 引数に代入したノードインスタンスによる、以下のような動作を行います。
以下のコードは、子ノードを順番に参照するものです。
fk_TreeData *parent, *child; for(child = parent->getChild(NULL); child != NULL; child = parent->getChild(child)) { // child に子ノードが順番に入ります。 }
[in] | node | 逐次参照対象ノードインスタンス |
fk_TreeData* fk_TreeData::getParent | ( | void | ) |
親ノード参照関数
このノードの親ノードインスタンスを返します。 もし根ノードにおいてこの関数を呼んだ場合は、NULL を返します。
fk_TreeData* fk_TreeData::getNext | ( | void | ) |
後ノード参照関数
このノードを構成する兄弟ノードのうち、 順位が1つ後のノードインスタンスを返します。 そのようなノードが存在しない場合は NULL を返します。
fk_TreeData* fk_TreeData::getPrev | ( | void | ) |
前ノード参照関数
このノードを構成する兄弟ノードのうち、 順位が1つ前のノードインスタンスを返します。 そのようなノードが存在しない場合は NULL を返します。
int fk_TreeData::getOrder | ( | void | ) |
int fk_TreeData::getChildrenSize | ( | void | ) |
std::string fk_TreeData::getName | ( | void | ) |
void fk_TreeData::setObject | ( | fk_TreeBaseObject * | object, | |
bool | deleteFlg = true | |||
) |
ユーザデータ設定関数
ユーザ定義によるデータをノードに設定します。 ユーザ定義のデータは、 fk_TreeBaseObject クラスを派生したものを作成しておきます。 fk_TreeBaseObject クラスは、 メンバもメンバ関数も定義されていない空のクラスです。
[in] | object | ユーザ定義インスタンス |
[in] | deleteFlg | true の場合、 ノードの消去とともにユーザ定義インスタンスも消去 (delete) します。 false の場合は、 ノードの消去時にユーザ定義インスタンスの消去 (delete) を行いません。 |
fk_TreeBaseObject* fk_TreeData::getObject | ( | void | ) |