FineKernelToolKit: FK::fk_TreeData クラス

FineKernelToolKit 4.3.0

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

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

`#include <FK/Tree.h>`

## 公開メンバ関数

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 (const std::shared_ptr< fk_TreeBaseObject > &object)
| ユーザデータ設定関数
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_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()