FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
FK::fk_TreeData クラス

木構造用ノードデータクラス [詳解]

#include <FK/Tree.h>

公開メンバ関数

int getDepth (void)
 深さ参照関数
 
int getMaxDepth (void)
 枝深さ参照関数
 
fk_TreeDatagetChild (fk_TreeData *node)
 子ノード逐次参照関数
 
fk_TreeDatagetParent (void)
 親ノード参照関数
 
fk_TreeDatagetNext (void)
 後ノード参照関数
 
fk_TreeDatagetPrev (void)
 前ノード参照関数
 
int getOrder (void)
 順位参照関数
 
int getChildrenSize (void)
 子ノード個数参照関数
 
std::string getName (void)
 名称参照関数
 
void setObject (const std::shared_ptr< fk_TreeBaseObject > &object)
 ユーザデータ設定関数
 
fk_TreeBaseObjectgetObject (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_Tree, fk_TreeBaseObject

関数詳解

◆ getDepth()

int FK::fk_TreeData::getDepth ( void  )

深さ参照関数

このノードの深さを取得します。

戻り値
深さ値
参照
getMaxDepth()

◆ getMaxDepth()

int FK::fk_TreeData::getMaxDepth ( void  )

枝深さ参照関数

このノードを頂点とする枝の中で、最大の深さを取得します。 根ノードでこの関数を呼んだ場合は、全体の深さの最大値を返すことになります。

戻り値
枝中の最大深さ値
参照
getDepth()

◆ getChild()

fk_TreeData * FK::fk_TreeData::getChild ( fk_TreeData node)

子ノード逐次参照関数

このノードの子ノードを逐次的に参照します。 引数に代入したノードインスタンスによる、以下のような動作を行います。

  • 引数に nullptr を入力した場合、最も前にある子ノードを返します。 (子ノードが存在しなかった場合は、nullptr を返します。)
  • その後、子ノードのインスタンスを入力すると、 その1つ後の子ノードを返します。
  • 最下位のノードを入力した場合は、nullptr を返します。
  • 子ノードでないインスタンスを入力した場合は、nullptr を返します。

以下のコードは、子ノードを順番に参照するものです。

fk_TreeData     *parent, *child;

for(child = parent->getChild(nullptr);
    child != nullptr;
    child = parent->getChild(child)) {
    // child に子ノードが順番に入ります。
}
引数
[in]node逐次参照対象ノードインスタンス
戻り値
引数の次の順位の子ノードインスタンスを返します。 該当するノードが存在しない場合は nullptr を返します。
参照
getParent(), getPrev(), getNext(), getChildrenSize()

◆ getParent()

fk_TreeData * FK::fk_TreeData::getParent ( void  )

親ノード参照関数

このノードの親ノードインスタンスを返します。 もし根ノードにおいてこの関数を呼んだ場合は、nullptr を返します。

戻り値
親ノードインスタンス
参照
getChild(), getChildrenSize()

◆ getNext()

fk_TreeData * FK::fk_TreeData::getNext ( void  )

後ノード参照関数

このノードを構成する兄弟ノードのうち、 順位が1つ後のノードインスタンスを返します。 そのようなノードが存在しない場合は nullptr を返します。

戻り値
後ノードインスタンス。存在しない場合は nullptr を返します。
参照
getChild(), getParent(), getPrev(), getOrder(), getChildrenSize()

◆ getPrev()

fk_TreeData * FK::fk_TreeData::getPrev ( void  )

前ノード参照関数

このノードを構成する兄弟ノードのうち、 順位が1つ前のノードインスタンスを返します。 そのようなノードが存在しない場合は nullptr を返します。

戻り値
前ノードインスタンス。存在しない場合は nullptr を返します。
参照
getChild(), getParent(), getNext(), getOrder(), getChildrenSize()

◆ getOrder()

int FK::fk_TreeData::getOrder ( void  )

順位参照関数

このノードの順位を参照します。 兄弟ノードが存在しない場合は、常に 1 となります。

戻り値
順位
参照
getNext(), getPrev(), getChildrenSize()

◆ getChildrenSize()

int FK::fk_TreeData::getChildrenSize ( void  )

子ノード個数参照関数

このノードの子ノードの個数を返します。

戻り値
子ノード個数
参照
getParent(), getChild(), getOrder()

◆ getName()

std::string FK::fk_TreeData::getName ( void  )

名称参照関数

このノードの名称を取得します。

戻り値
名称
参照
setObject(), getObject()

◆ setObject()

void FK::fk_TreeData::setObject ( const std::shared_ptr< fk_TreeBaseObject > &  object)

ユーザデータ設定関数

ユーザ定義によるデータをノードに設定します。 ユーザ定義のデータは、 fk_TreeBaseObject クラスを派生したものを作成しておきます。 fk_TreeBaseObject クラスは、 メンバもメンバ関数も定義されていない空のクラスです。

覚え書き
ノードに対する操作によってノードの複製が行われた場合、 ポインタのコピーが行われます。 そのような操作が行われる可能性がある場合、 第2引数は false にしておき、 インスタンスの消去は自前で行うべきです。
引数
[in]objectユーザ定義インスタンス
参照
fk_TreeBaseObject, getName(), getObject()

◆ getObject()

fk_TreeBaseObject * FK::fk_TreeData::getObject ( void  )

ユーザデータ参照関数

setObject() によって設定されていたユーザデータを取得します。 ユーザデータが設定されていなかった場合は nullptr を返します。

戻り値
ユーザ定義インスタンス
参照
fk_TreeBaseObject, setObject(), getName()