AssignList

class AssignList : public TpgBase

ノードに対する値の割当を記録するクラス

  • 概念的には vector<Assign> と同じ

  • このクラスのメソッドはすべてソートされていると仮定している.

  • 実際には内部で mDirty というフラグを用意して内容が変更されたら mDirty を true にしておく. 内容を参照する際に mDirty が true なら _sort() を呼ぶ.

参考

Assign

Public Functions

AssignList() = default

コンストラクタ

不正な値となる.

inline explicit AssignList(const std::shared_ptr<NetworkRep> &network, const std::vector<SizeType> &as_list)

空のリストを作るコンストラクタ

パラメータ:
  • network -- [in] 親のネットワーク

  • as_list -- [in] パックした割り当て情報のリスト

AssignList(const AssignList &src) = default

コピーコンストラクタ

AssignList(AssignList &&src) = default

ムーブコンストラクタ

AssignList &operator=(const AssignList &src) = default

コピー代入演算子

AssignList &operator=(AssignList &&src) = default

ムーブ代入演算子

~AssignList() = default

デストラクタ

inline void clear()

内容を空にする.

inline void add(const TpgNode &node, int time, bool val)

値を追加する.

パラメータ:
  • node -- [in] ノード

  • val -- /< [in] 時刻 ( 0 or 1 ) [in] 値

inline void add(const Assign &assign)

値を追加する.

パラメータ:

assign -- [in] 値の割り当て情報

void merge(const AssignList &src_list)

マージする.

矛盾する割当があった場合の動作は不定

パラメータ:

src_list -- [in] マージするリスト

void diff(const AssignList &src_list)

差分を計算する.

パラメータ:

src_list -- [in] 差分の対象のリスト

void diff(const Assign &src)

差分を計算する.

パラメータ:

src -- [in] 差分の対象

inline SizeType size() const

要素数を返す.

inline Assign elem(SizeType index) const

要素を返す.

パラメータ:

index -- [in] 位置 ( 0 <= index < size() )

inline AssignList &operator+=(Assign node_val)

add(Assign) の別名

パラメータ:

node_val -- [in] 追加する要素

inline AssignList &operator+=(const AssignList &src_list)

merge() の別名

パラメータ:

src_list -- [in] 追加する要素のリスト

inline AssignList &operator-=(const AssignList &src_list)

diff() の別名

パラメータ:

src_list -- [in] 差分の対象のリスト

inline AssignList &operator-=(const Assign &src)

diff() の別名

パラメータ:

src -- [in] 差分の対象

inline Assign operator[](int pos) const

elem() の別名

パラメータ:

pos -- [in] 位置 ( 0 <= pos < size() )

bool sanity_check() const

矛盾した内容になっていないかチェックする.

具体的には同じノードで異なる値がある場合にエラーとなる. この関数はソートされている前提で動作する.

戻り値:

正しければ true を返す.

inline AssignIter begin() const

先頭の反復子を返す.

inline AssignIter end() const

末尾の反復子を返す.