Tulip  6.0.0
Large graphs analysis and drawing
tlp::MinMaxProperty< nodeType, edgeType, propType > Class Template Reference

#include <minmaxproperty.h>

+ Inheritance diagram for tlp::MinMaxProperty< nodeType, edgeType, propType >:
+ Collaboration diagram for tlp::MinMaxProperty< nodeType, edgeType, propType >:

Public Member Functions

 MinMaxProperty (tlp::Graph *graph, const std::string &name, NODE_VALUE NodeMin, NODE_VALUE NodeMax, EDGE_VALUE EdgeMin, EDGE_VALUE EdgeMax)
 
CONST_EDGE_VALUE getEdgeMax (const Graph *graph=nullptr)
 
CONST_EDGE_VALUE getEdgeMin (const Graph *graph=nullptr)
 
CONST_NODE_VALUE getNodeMax (const Graph *graph=nullptr)
 
CONST_NODE_VALUE getNodeMin (const Graph *graph=nullptr)
 
void treatEvent (const tlp::Event &ev) override
 
void updateAllEdgesValues (CONST_EDGE_VALUE newValue)
 
void updateAllNodesValues (CONST_NODE_VALUE newValue)
 
void updateEdgeValue (tlp::edge e, const tlp::LineType::RealType &newValue)
 
void updateEdgeValue (tlp::edge e, CONST_EDGE_VALUE newValue)
 
void updateNodeValue (tlp::node n, CONST_NODE_VALUE newValue)
 
- Public Member Functions inherited from tlp::AbstractProperty< nodeType, edgeType, PropertyInterface >
 AbstractProperty (Graph *, const std::string &n="")
 
int compare (const edge e1, const edge e2) const override
 
int compare (const node n1, const node n2) const override
 
void computeMetaValue (edge e, tlp::Iterator< edge > *itE, Graph *mg) override
 
void computeMetaValue (node n, Graph *sg, Graph *mg) override
 
bool copy (const edge destination, const edge source, PropertyInterface *property, bool ifNotDefault=false) override
 
bool copy (const node destination, const node source, PropertyInterface *property, bool ifNotDefault=false) override
 
void copy (PropertyInterface *property) override
 
unsigned int edgeValueSize () const override
 
void erase (const edge e) override
 
void erase (const node n) override
 
DataMem * getEdgeDataMemValue (const edge e) const override
 
DataMem * getEdgeDefaultDataMemValue () const override
 
std::string getEdgeDefaultStringValue () const override
 
Tedge::RealType getEdgeDefaultValue () const
 
virtual tlp::Iterator< edge > * getEdgesEqualTo (typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue v, const Graph *g=nullptr) const
 
std::string getEdgeStringValue (const edge e) const override
 
tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue getEdgeValue (const edge e) const
 
DataMem * getNodeDataMemValue (const node n) const override
 
DataMem * getNodeDefaultDataMemValue () const override
 
std::string getNodeDefaultStringValue () const override
 
Tnode::RealType getNodeDefaultValue () const
 
virtual tlp::Iterator< node > * getNodesEqualTo (typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue v, const Graph *g=nullptr) const
 
std::string getNodeStringValue (const node n) const override
 
tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue getNodeValue (const node n) const
 
DataMem * getNonDefaultDataMemValue (const edge e) const override
 
DataMem * getNonDefaultDataMemValue (const node n) const override
 
tlp::Iterator< edge > * getNonDefaultValuatedEdges (const Graph *g=nullptr) const override
 
tlp::Iterator< node > * getNonDefaultValuatedNodes (const Graph *g=nullptr) const override
 
bool hasNonDefaultValuatedEdges (const Graph *g=nullptr) const override
 
bool hasNonDefaultValuatedNodes (const Graph *g=nullptr) const override
 
unsigned int nodeValueSize () const override
 
unsigned int numberOfNonDefaultValuatedEdges (const Graph *=nullptr) const override
 
unsigned int numberOfNonDefaultValuatedNodes (const Graph *g=nullptr) const override
 
virtual AbstractProperty< nodeType, edgeType, PropertyInterface > & operator= (AbstractProperty< nodeType, edgeType, PropertyInterface > &prop)
 
constexpr edgeValueRef operator[] (edge e)
 
tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue operator[] (edge e) const
 
constexpr nodeValueRef operator[] (node n)
 
const tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue operator[] (node n) const
 
bool readEdgeDefaultValue (std::istream &) override
 
bool readEdgeValue (std::istream &, edge) override
 
bool readNodeDefaultValue (std::istream &) override
 
bool readNodeValue (std::istream &, node) override
 
void setAllEdgeDataMemValue (const DataMem *v) override
 
bool setAllEdgeStringValue (const std::string &inV) override
 
virtual void setAllEdgeValue (typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue v)
 
void setAllNodeDataMemValue (const DataMem *v) override
 
bool setAllNodeStringValue (const std::string &inV) override
 
virtual void setAllNodeValue (typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue v)
 
void setEdgeDataMemValue (const edge e, const DataMem *v) override
 
bool setEdgeDefaultStringValue (const std::string &inV) override
 
virtual void setEdgeDefaultValue (typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue v)
 
bool setEdgeStringValue (const edge inE, const std::string &inV) override
 
virtual void setEdgeValue (const edge e, typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue v)
 
void setMetaValueCalculator (PropertyInterface::MetaValueCalculator *mvCalc) override
 
void setNodeDataMemValue (const node n, const DataMem *v) override
 
bool setNodeDefaultStringValue (const std::string &inV) override
 
virtual void setNodeDefaultValue (typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue v)
 
bool setNodeStringValue (const node inN, const std::string &inV) override
 
virtual void setNodeValue (const node n, typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue v)
 
bool setStringValueToGraphEdges (const std::string &inV, const Graph *graph) override
 
bool setStringValueToGraphNodes (const std::string &inV, const Graph *graph) override
 
virtual void setValueToGraphEdges (typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue v, const Graph *graph)
 
virtual void setValueToGraphNodes (typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue v, const Graph *graph)
 
void writeEdgeDefaultValue (std::ostream &) const override
 
void writeEdgeValue (std::ostream &, edge) const override
 
void writeNodeDefaultValue (std::ostream &) const override
 
void writeNodeValue (std::ostream &, node) const override
 
- Public Member Functions inherited from tlp::PropertyInterface
virtual PropertyInterfaceclonePrototype (Graph *graph, const std::string &name) const =0
 
virtual const std::string & getCppClassName () const =0
 
tlp::GraphgetGraph () const
 
MetaValueCalculatorgetMetaValueCalculator ()
 
const std::string & getName () const
 
virtual const std::string & getTypename () const =0
 
constexpr edgeStringValueRef operator[] (edge e)
 
std::string operator[] (edge e) const
 
constexpr nodeStringValueRef operator[] (node n)
 
bool rename (const std::string &newName)
 
- Public Member Functions inherited from tlp::Observable
void addListener (Observable &listener) const
 
void addListener (Observable *const listener) const
 
void addObserver (Observable &observer) const
 
void addObserver (Observable *const observer) const
 
unsigned int countListeners () const
 
unsigned int countObservers () const
 
unsigned int getReceived () const
 
unsigned int getSent () const
 
void removeListener (Observable &listener) const
 
void removeListener (Observable *const listener) const
 
void removeObserver (Observable &observer) const
 
void removeObserver (Observable *const observer) const
 

Protected Member Functions

 MINMAX_MAP (edgeType) minMaxEdge
 
 MINMAX_MAP (nodeType) minMaxNode
 
const MINMAX_PAIR (edgeType) &computeMinMaxEdge(const Graph *graph)
 
const MINMAX_PAIR (nodeType) &computeMinMaxNode(const Graph *graph)
 
void removeListenersAndClearEdgeMap ()
 
void removeListenersAndClearNodeMap ()
 
- Protected Member Functions inherited from tlp::AbstractProperty< nodeType, edgeType, PropertyInterface >
virtual void clone_handler (AbstractProperty< nodeType, edgeType, PropertyInterface > &)
 
- Protected Member Functions inherited from tlp::PropertyInterface
void notifyAfterSetAllEdgeValue ()
 
void notifyAfterSetAllNodeValue ()
 
void notifyAfterSetEdgeValue (const edge e)
 
void notifyAfterSetNodeValue (const node n)
 
void notifyBeforeSetAllEdgeValue ()
 
void notifyBeforeSetAllNodeValue ()
 
void notifyBeforeSetEdgeValue (const edge e)
 
void notifyBeforeSetNodeValue (const node n)
 
void notifyDestroy ()
 
void notifyRename (const std::string &newName)
 
- Protected Member Functions inherited from tlp::Observable
 Observable (const Observable &)
 
bool hasOnlookers () const
 
void observableDeleted ()
 
Observableoperator= (const Observable &)
 
void sendEvent (const Event &message)
 
virtual void treatEvents (const std::vector< Event > &events)
 

Protected Attributes

EDGE_VALUE _edgeMax
 
EDGE_VALUE _edgeMin
 
NODE_VALUE _nodeMax
 
NODE_VALUE _nodeMin
 
bool needGraphListener
 
- Protected Attributes inherited from tlp::AbstractProperty< nodeType, edgeType, PropertyInterface >
Tedge::RealType edgeDefaultValue
 
MutableContainer< typename Tedge::RealType > edgeProperties
 
Tnode::RealType nodeDefaultValue
 
MutableContainer< typename Tnode::RealType > nodeProperties
 
- Protected Attributes inherited from tlp::PropertyInterface
Graphgraph
 
MetaValueCalculatormetaValueCalculator
 
std::string name
 

Additional Inherited Members

- Static Public Member Functions inherited from tlp::Observable
static void disableEventNotification ()
 
static void enableEventNotification ()
 
static tlp::node getNode (const tlp::Observable *obs)
 
static ObservablegetObject (tlp::node n)
 
static const tlp::VectorGraph & getObservableGraph ()
 
static unsigned int getScheduled (tlp::node n)
 
static void holdObservers ()
 
static bool isAlive (tlp::node n)
 
static unsigned int observersHoldCounter ()
 
static void unholdObservers ()
 

Detailed Description

template<typename nodeType, typename edgeType, typename propType = PropertyInterface>
class tlp::MinMaxProperty< nodeType, edgeType, propType >

Abstracts the computation of minimal and maximal values on node and edge values of properties.

The value is lazily computed on first request. The value is cached, and the cache is invalidated whenever it cannot be simply updated.

Definition at line 46 of file minmaxproperty.h.

Constructor & Destructor Documentation

◆ MinMaxProperty()

template<typename nodeType , typename edgeType , typename propType >
tlp::MinMaxProperty< nodeType, edgeType, propType >::MinMaxProperty ( tlp::Graph graph,
const std::string &  name,
NODE_VALUE  NodeMin,
NODE_VALUE  NodeMax,
EDGE_VALUE  EdgeMin,
EDGE_VALUE  EdgeMax 
)

Constructs a MinMaxProperty.

Parameters
graphThe graph to attach the property to.
nameThe name of the property.
NodeMinThe minimal value the property can take for nodes (e.g. INT_MIN)
NodeMaxThe maximal value the property can take for nodes (e.g. INT_MIN)
EdgeMinThe minimal value the property can take for edges (e.g. INT_MIN)
EdgeMaxThe maximal value the property can take for edges (e.g. INT_MIN)

Definition at line 23 of file minmaxproperty.cxx.

Member Function Documentation

◆ getEdgeMax()

template<typename nodeType , typename edgeType , typename propType = PropertyInterface>
CONST_EDGE_VALUE tlp::MinMaxProperty< nodeType, edgeType, propType >::getEdgeMax ( const Graph graph = nullptr)
inline

Computes the maximum value on the edges. It is only computed if it has never been retrieved before, or if the cached value could not be updated.

Parameters
graphThe graph on which to compute.
Returns
The maximal value on this graph for this property.

Definition at line 112 of file minmaxproperty.h.

◆ getEdgeMin()

template<typename nodeType , typename edgeType , typename propType = PropertyInterface>
CONST_EDGE_VALUE tlp::MinMaxProperty< nodeType, edgeType, propType >::getEdgeMin ( const Graph graph = nullptr)
inline

Computes the minimum value on the edges. It is only computed if it has never been retrieved before, or if the cached value could not be updated.

Parameters
graphThe graph on which to compute.
Returns
The minimal value on this graph for this property.

Definition at line 100 of file minmaxproperty.h.

◆ getNodeMax()

template<typename nodeType , typename edgeType , typename propType = PropertyInterface>
CONST_NODE_VALUE tlp::MinMaxProperty< nodeType, edgeType, propType >::getNodeMax ( const Graph graph = nullptr)
inline

Computes the maximum value on the nodes. It is only computed if it has never been retrieved before, or if the cached value could not be updated.

Parameters
graphThe graph on which to compute.
Returns
The maximal value on this graph for this property.

Definition at line 88 of file minmaxproperty.h.

◆ getNodeMin()

template<typename nodeType , typename edgeType , typename propType = PropertyInterface>
CONST_NODE_VALUE tlp::MinMaxProperty< nodeType, edgeType, propType >::getNodeMin ( const Graph graph = nullptr)
inline

Gets the minimum value on the nodes. It is only computed if it has never been retrieved before, or if the cached value could not be updated.

Parameters
graphThe graph on which to compute.
Returns
The minimal value on this graph for this property.

Definition at line 76 of file minmaxproperty.h.

◆ treatEvent()

template<typename nodeType , typename edgeType , typename propType >
void tlp::MinMaxProperty< nodeType, edgeType, propType >::treatEvent ( const tlp::Event message)
overridevirtual

This function is called when events are sent to the Listeners, and Listeners only.

Is it passed a reference to the event that just happened.

Parameters
messageThe event that was sent.

Reimplemented from tlp::Observable.

Definition at line 284 of file minmaxproperty.cxx.

+ Here is the call graph for this function:

◆ updateAllEdgesValues()

template<typename nodeType , typename edgeType , typename propType >
void tlp::MinMaxProperty< nodeType, edgeType, propType >::updateAllEdgesValues ( CONST_EDGE_VALUE  newValue)

Updates the value of all edges, setting the maximum and minimum values to this. Should be called by subclasses in order to keep the cache up to date.

Parameters
newValueThe new maximal and minimal value.

Definition at line 271 of file minmaxproperty.cxx.

◆ updateAllNodesValues()

template<typename nodeType , typename edgeType , typename propType >
void tlp::MinMaxProperty< nodeType, edgeType, propType >::updateAllNodesValues ( CONST_NODE_VALUE  newValue)

Updates the value of all nodes, setting the maximum and minimum values to this. Should be called by subclasses in order to keep the cache up to date.

Parameters
newValueThe new maximal and minimal value.

Definition at line 258 of file minmaxproperty.cxx.

◆ updateEdgeValue()

template<typename nodeType , typename edgeType , typename propType >
void tlp::MinMaxProperty< nodeType, edgeType, propType >::updateEdgeValue ( tlp::edge  e,
CONST_EDGE_VALUE  newValue 
)

Updates the value on an edge, and updates the minimal/maximal cached values if necessary. Should be called by subclasses in order to keep the cache up to date.

Parameters
eThe edge for which the value is updated.
newValueThe new value on this edge.

Definition at line 224 of file minmaxproperty.cxx.

◆ updateNodeValue()

template<typename nodeType , typename edgeType , typename propType >
void tlp::MinMaxProperty< nodeType, edgeType, propType >::updateNodeValue ( tlp::node  n,
CONST_NODE_VALUE  newValue 
)

Updates the value on a node, and updates the minimal/maximal cached values if necessary. Should be called by subclasses in order to keep the cache up to date.

Parameters
nThe node for which the value is updated.
newValueThe new value on this node.

Definition at line 190 of file minmaxproperty.cxx.