GraphEdgeBase< NODE > Class Template Reference

#include <graphbase.h>

Detailed Description

template<typename NODE>
class maxon::geomgraph::GraphEdgeBase< NODE >

Basic edge template for a graph, in case of custom implementation have to be frowarded to the node type.

Template Parameters
NODEThe node type in the graph.

Public Types

typedef GraphEdgeBase< NODE > EdgeType
 

Public Member Functions

 GraphEdgeBase (NODE *p1=nullptr, NODE *p2=nullptr)
 
 ~GraphEdgeBase ()
 
 GraphEdgeBase (GraphEdgeBase &&src)
 
Result< void > CopyFrom (const GraphEdgeBase &src)
 
Result< void > UpdateNodes (NODE *p1, NODE *p2)
 
Bool IsValid () const
 
Result< void > GetNodes (NODE &p1, NODE &p2) const
 
Result< void > GetNodesPointer (NODE *&p1, NODE *&p2) const
 
Result< void > GetNodesPos (Vector &p1, Vector &p2) const
 
Float GetLength () const
 
Result< NODE * > GetOtherHand (NODE *point, Bool *secondPoint=nullptr) const
 
Bool IsEqual (NODE *p1, NODE *p2) const
 
void Reset ()
 

Protected Attributes

NODE * _p1
 
NODE * _p2
 

Member Typedef Documentation

◆ EdgeType

typedef GraphEdgeBase<NODE> EdgeType

Constructor & Destructor Documentation

◆ GraphEdgeBase() [1/2]

GraphEdgeBase ( NODE *  p1 = nullptr,
NODE *  p2 = nullptr 
)
explicit

◆ ~GraphEdgeBase()

◆ GraphEdgeBase() [2/2]

GraphEdgeBase ( GraphEdgeBase< NODE > &&  src)

Member Function Documentation

◆ CopyFrom()

Result<void> CopyFrom ( const GraphEdgeBase< NODE > &  src)

◆ UpdateNodes()

Result<void> UpdateNodes ( NODE *  p1,
NODE *  p2 
)

Update node pointers used after consistency check.

Parameters
[in]p1First edge node.
[in]p2Second edge node.
Returns
OK if both nodes are not nullptr otherwise error.

◆ IsValid()

Bool IsValid ( ) const

Check if the edge is in between 2 valid points.

Returns
True if edge is valid otherwise false.

◆ GetNodes()

Result<void> GetNodes ( NODE &  p1,
NODE &  p2 
) const

Get the tow main nodes for this edge (copy all data).

Parameters
[out]p1First node to be filled.
[out]p2Second node to be filled.
Returns
OK if both nodes are not nullptr otherwise error.

◆ GetNodesPointer()

Result<void> GetNodesPointer ( NODE *&  p1,
NODE *&  p2 
) const

Get the tow main ndoes for this edge.

Parameters
[out]p1First node to be filled.
[out]p2Second node to be filled.
Returns
OK if both nodes are not nullptr otherwise error.

◆ GetNodesPos()

Result<void> GetNodesPos ( Vector p1,
Vector p2 
) const

Get the tow main node position for this edge.

Parameters
[out]p1First node to be filled.
[out]p2Second node to be filled.
Returns
OK if both nodes are not nullptr otherwise error.

◆ GetLength()

Float GetLength ( ) const

Calculate the distance in between _p1 and _p2.

Returns
The stroke length.

◆ GetOtherHand()

Result<NODE*> GetOtherHand ( NODE *  point,
Bool secondPoint = nullptr 
) const

Return a node pointer on opposite side of the edge.

Parameters
[in]pointThe original point.
[out]secondPointIf passed the function set it true if the other hand is _p2 otherwise false.
Returns
The opposite side of edge otherwise error.

◆ IsEqual()

Bool IsEqual ( NODE *  p1,
NODE *  p2 
) const

Return true if the edge is in between p1 and p2.

Parameters
[in]p1First edge point to check.
[in]p2Second edge point to check.
Returns
True if this edge is in between p1 and p2. otherwise false.

◆ Reset()

void Reset ( )

Free memory and reset all values.

Member Data Documentation

◆ _p1

NODE* _p1
protected

◆ _p2

NODE* _p2
protected