FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
GraphEdge.h
[詳解]
1#if !defined(__FK_GRAPH_EDGE_HEADER__)
2#define __FK_GRAPH_EDGE_HEADER__
3
4#include <FK/Color.h>
5
6namespace FK {
7
8 class fk_GraphNode;
9 class fk_Graph;
10
12 enum class fk_CostType {
13 INT,
14 DOUBLE,
15 LENGTH
16 };
17
19 enum class fk_CostDirection {
20 FORWARD,
21 BACK
22 };
23
25
37 class fk_GraphEdge : public fk_BaseObject {
38
39#if !defined(FK_DOXYGEN_USER_PROCESS)
40
41 class Member {
42 public:
43 unsigned int edgeID;
44 bool directMode;
45 fk_GraphNode *node[2];
46 unsigned int generation[2];
47 bool lengthMode;
48 double length;
49 std::vector<int> intCost;
50 std::vector<double> doubleCost;
51 fk_Graph *baseGraph;
52
53 Member(unsigned int, bool, fk_Graph *);
54 };
55#endif
56
57 public:
58#if !defined(FK_DOXYGEN_USER_PROCESS)
59 fk_GraphEdge(unsigned int, bool, fk_GraphNode *, fk_GraphNode *, fk_Graph *);
61#endif
62
64
69 unsigned int getID(void);
70
72
79 fk_GraphNode * getNode(bool mode);
80
82
87 bool getDirectMode(void);
88
90
103 void setLengthMode(bool mode);
104
106
113 bool getLengthMode(void);
114
116
124 double getLength(void);
125
127
135 void setIntCost(unsigned int ID, int cost);
136
138
146 void setDoubleCost(unsigned int ID, double cost);
147
149
158 int getIntCost(unsigned int ID);
159
161
170 double getDoubleCost(unsigned int ID);
171
173
179
181
186 void setColor(fk_Color *col);
187
188 private:
189
190 std::unique_ptr<Member> _m;
191
192 void UpdateLength(void);
193 };
194}
195
196#endif
197
198/****************************************************************************
199 *
200 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
201 *
202 * Redistribution and use in source and binary forms,
203 * with or without modification, are permitted provided that the
204 * following conditions are met:
205 *
206 * - Redistributions of source code must retain the above
207 * copyright notice, this list of conditions and the
208 * following disclaimer.
209 *
210 * - Redistributions in binary form must reproduce the above
211 * copyright notice, this list of conditions and the
212 * following disclaimer in the documentation and/or
213 * other materials provided with the distribution.
214 *
215 * - Neither the name of the copyright holders nor the names
216 * of its contributors may be used to endorse or promote
217 * products derived from this software without specific
218 * prior written permission.
219 *
220 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
221 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
222 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
223 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
224 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
225 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
226 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
227 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
228 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
229 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
230 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
231 * POSSIBILITY OF SUCH DAMAGE.
232 *
233 ****************************************************************************/
234/****************************************************************************
235 *
236 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
237 *
238 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
239 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
240 *
241 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
242 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
243 *
244 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
245 * および下記免責条項を含めること。
246 *
247 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
248 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
249 * 含めること。
250 *
251 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
252 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
253 * コントリビューターの名前を使用してはならない。
254 *
255 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
256 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
257 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
258 * に限定されない、いかなる保証もないものとします。著作権者もコン
259 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
260 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
261 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
262 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
263 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
264 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
265 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
266 * ついて、一切責任を負わないものとします。
267 *
268 ****************************************************************************/
FK の各クラスの基盤となる基本クラス
Definition Base.h:113
RGB色を管理するクラス
Definition Color.h:21
グラフ構造の辺を制御するクラス
Definition GraphEdge.h:37
void setLengthMode(bool mode)
辺長利用モード設定関数
unsigned int getID(void)
ID 取得関数
void setColor(fk_Color col)
色指定関数1
fk_GraphNode * getNode(bool mode)
ノード取得関数
bool getDirectMode(void)
有無向取得関数
double getLength(void)
辺長参照関数
bool getLengthMode(void)
辺長利用モード参照関数
void setColor(fk_Color *col)
色指定関数2
void setDoubleCost(unsigned int ID, double cost)
実数型コスト設定関数
double getDoubleCost(unsigned int ID)
実数型コスト参照関数
void setIntCost(unsigned int ID, int cost)
整数型コスト設定関数
int getIntCost(unsigned int ID)
整数型コスト参照関数
グラフ構造のノードを制御するクラス
Definition GraphNode.h:27
グラフ構造を制御するクラス
Definition Graph.h:42
Fine Kernel Toolkit 名前空間
Definition Angle.h:6
fk_CostType
グラフ内コスト値の型を表す列挙型
Definition GraphEdge.h:12
@ INT
整数型
@ DOUBLE
実数型
fk_CostDirection
グラフ内コスト算出方向を表す列挙型
Definition GraphEdge.h:19
@ BACK
目標ノードから開始
@ FORWARD
出発ノードから開始