#include <graphbase.h>
Basic undirected graph template.
| NODE | The node type in the graph. | 
| EDGE | The edge type in the graph. | 
| Public Types | |
| typedef GraphBase< NODE, EDGE > | Super | 
| typedef NODE | NodeType | 
| typedef EDGE | EdgeType | 
| Public Member Functions | |
| GraphBase () | |
| ~GraphBase () | |
| GraphBase (GraphBase &&src) | |
| Result< void > | CopyFrom (const GraphBase &src) | 
| Result< void > | AppendGraph (const GraphBase &src) | 
| GRAPH_TYPE | GetType () const | 
| void | SetType (GRAPH_TYPE type) | 
| Int | GetNodesCount (Bool subPoint=false) const | 
| Int | GetEdgesCount () const | 
| NODE * | GetFirstNode () | 
| NODE * | GetLastNode () | 
| NODE * | FindNodeByPosition (const Vector &position, Float tolerance=0.0) | 
| const NODE * | FindNodeByPosition (const Vector &position, Float tolerance=0.0) const | 
| Result< NODE * > | GetNode (Int idx) | 
| Result< const NODE * > | GetNode (Int idx) const | 
| Result< NODE * > | GetSuccessor (NODE *node) | 
| Result< NODE * > | GetPredecessor (NODE *node) | 
| Result< EDGE * > | GetSuccessorEdge (NODE *node) | 
| Result< EDGE * > | GetPredecessorEdge (NODE *node) | 
| Int | FindNode (NODE *node) | 
| Result< EDGE * > | GetEdge (Int idx) | 
| Result< const EDGE * > | GetEdge (Int idx) const | 
| Int | FindEdge (EDGE *edge) | 
| Result< EDGE * > | GetEdgeByPoints (NodeType *p1, NodeType *p2) const | 
| Result< NODE * > | AddNode (const NodeType &node, Int pos=NOTOK) | 
| Result< EDGE * > | AddEdge (NodeType *p1, NodeType *p2, Int pos=NOTOK) | 
| Result< NODE * > | SplitEdge (const NODE &node, EdgeType *edge) | 
| Result< EDGE * > | SplitEdge (NodeType *node, EdgeType *edge) | 
| Result< void > | DeleteNode (NodeType *node, Bool replaceEdge=true) | 
| Result< void > | DeleteNode (Int pos, Bool replaceEdge=true) | 
| Result< void > | DeleteEdge (EdgeType *edge, Bool nodes=false) | 
| Result< void > | DeleteEdge (Int pos, Bool nodes=false) | 
| Result< void > | WeldNodes (NodeType *p1, NodeType *p2) | 
| Result< void > | MeltEdge (EdgeType *edge) | 
| Result< void > | MeltEdge (Int pos) | 
| void | Reset () | 
| Protected Attributes | |
| GRAPH_TYPE | _type | 
| PointerArray< NODE > | _nodes | 
| PointerArray< EDGE > | _edges | 
| typedef NODE NodeType | 
| typedef EDGE EdgeType | 
| 
 | explicit | 
| ~GraphBase | ( | ) | 
Append src graph t this graph, the existing graph is mantained.
| [in] | src | The graph to append. | 
| GRAPH_TYPE GetType | ( | ) | const | 
Get The graph type.
| void SetType | ( | GRAPH_TYPE | type | ) | 
Set The graph type.
| [in] | type | The new graph type. | 
Get All nodes count in the graph.
| Int GetEdgesCount | ( | ) | const | 
Get All edge count in the graph.
| NODE* GetFirstNode | ( | ) | 
Get a pointer to the first node.
| NODE* GetLastNode | ( | ) | 
Get a pointer to the last node.
Serch a node with at passed position.
| [in] | position | The 3d position where search the node. | 
| [in] | tolerance | Search can be tolerat if passed value is != 0. | 
Serch a node with at passed position.
| [in] | position | The 3d position where search the node. | 
| [in] | tolerance | Search can be tolerat if passed value is != 0. | 
Get a node in the list.
| [in] | idx | The node index in the list. | 
Get a node in the list.
| [in] | idx | The node index in the list. | 
| Result<NODE*> GetSuccessor | ( | NODE * | node | ) | 
Get the successor node, valid only in continuos graph case.
| [in] | node | The node. | 
| Result<NODE*> GetPredecessor | ( | NODE * | node | ) | 
Get the predecessor node, valid only in continuos graph case.
| [in] | node | The node. | 
| Result<EDGE*> GetSuccessorEdge | ( | NODE * | node | ) | 
Get the successor edge, valid only in continuos graph case.
| [in] | node | The node. | 
| Result<EDGE*> GetPredecessorEdge | ( | NODE * | node | ) | 
Get the predecessor edge, valid only in continuos graph case.
| [in] | node | The node. | 
| Int FindNode | ( | NODE * | node | ) | 
Check if node exist in the node list and return the index.
| [in] | node | The node to check for. | 
Get a edge at idx in the list.
| [in] | idx | The edge index in the list. | 
Get a edge at idx in the list.
| [in] | idx | The edge index in the list. | 
| Int FindEdge | ( | EDGE * | edge | ) | 
Check if edge exist in the edge list and return the index.
| [in] | edge | The edge to check for. | 
Check if exist a edge in between p1 and p2, if yes return the pointer.
| [in] | p1 | First edge point. | 
| [in] | p2 | Second edge point. | 
Add a new node to the list.
| [in] | node | The new pen node to add. | 
| [in] | pos | Optional position in to the array if NOTOK or not passed the point is added at the end of the list. | 
Add a new edge in between p1 and p2 with type and initialize it. Automatically map the stoke to the points list.
| [in] | p1 | First edge node. | 
| [in] | p2 | Second edge node. | 
| [in] | pos | If not NOTOK new stroke will be inserted at pos in the list. | 
Split edge in 2 parts by adding the new node.
| [in] | node | The new node to insert in to the list. | 
| [in] | edge | The edge to split. | 
Split edge in 2 parts by attaching it to an existing node.
| [in] | node | The node to attach the strokes. | 
| [in] | edge | The edge to split. | 
Remove node and the connected edges.
| [in] | node | The node to be removed. | 
| [in] | replaceEdge | If true a new edge will be added to fill the gap, just if the graph is not sparse (max 2 edges per node). | 
Remove node at pos and the connected edges.
| [in] | pos | The index position of node to be removed. | 
| [in] | replaceEdge | If true a new edge will be added to fill the gap, just if the graph is not sparse (max 2 edges per node). | 
Remove the edge and adjust the nodes<->edges mapping.
| [in] | edge | The edge to be removed. | 
| [in] | nodes | If True also node will be deleted if any other edge use it. | 
Remove the edge and adjust the nodes<->edges mapping.
| [in] | pos | The position in to edge list. | 
| [in] | nodes | If True also nodes will be deleted if any other edge use it. | 
Weld disconnected nodes.
| [in] | p1 | First node, this node will be stay alive. | 
| [in] | p2 | Second node. | 
Shrink edge to a single node and refresh the graph.
| [in] | edge | The edge to be removed. | 
Shrink edge at pos to a single node and refresh the graph.
| [in] | pos | The position in to edge list. | 
| void Reset | ( | ) | 
Free memory and reset all values.
| 
 | protected | 
| 
 | protected | 
| 
 | protected |