Tulip  4.2.0
Better Visualization Through Research
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Groups Pages
tlp::MinMaxProperty< nodeType, edgeType > Class Template Reference

#include <minmaxproperty.h>

Inherits tlp::AbstractProperty< nodeType, edgeType >.

Inherited by tlp::DoubleProperty, and tlp::LayoutProperty.

Public Member Functions

 MinMaxProperty (tlp::Graph *graph, std::string name, typename nodeType::RealType NodeMin, typename nodeType::RealType NodeMax, typename edgeType::RealType EdgeMin, typename edgeType::RealType EdgeMax)
 
edgeType::RealType getEdgeMax (Graph *graph=NULL)
 
edgeType::RealType getEdgeMin (Graph *graph=NULL)
 
nodeType::RealType getNodeMax (Graph *graph=NULL)
 
nodeType::RealType getNodeMin (Graph *graph=NULL)
 
virtual void treatEvent (const tlp::Event &ev)
 
void updateAllEdgesValues (typename edgeType::RealType newValue)
 
void updateAllNodesValues (typename nodeType::RealType newValue)
 
template<>
void updateEdgeValue (tlp::edge e, tlp::LineType::RealType newValue)
 
void updateEdgeValue (tlp::edge e, typename edgeType::RealType newValue)
 
void updateNodeValue (tlp::node n, typename nodeType::RealType newValue)
 
- Public Member Functions inherited from tlp::AbstractProperty< nodeType, edgeType >
 AbstractProperty (Graph *, std::string n="")
 
int compare (const node n1, const node n2) const
 
int compare (const edge e1, const edge e2) const
 
virtual void computeMetaValue (node n, Graph *sg, Graph *mg)
 
virtual void computeMetaValue (edge e, tlp::Iterator< edge > *itE, Graph *mg)
 
virtual bool copy (const node destination, const node source, PropertyInterface *property, bool ifNotDefault=false)
 
virtual bool copy (const edge destination, const edge source, PropertyInterface *property, bool ifNotDefault=false)
 
virtual void copy (PropertyInterface *property)
 
virtual void erase (const node n)
 
virtual void erase (const edge e)
 
virtual DataMem * getEdgeDataMemValue (const edge e) const
 
virtual DataMem * getEdgeDefaultDataMemValue () const
 
virtual std::string getEdgeDefaultStringValue () const
 
virtual edgeType::RealType getEdgeDefaultValue () const
 
virtual std::string getEdgeStringValue (const edge e) const
 
virtual tlp::StoredType
< typename edgeType::RealType >
::ReturnedConstValue 
getEdgeValue (const edge e) const
 
virtual DataMem * getNodeDataMemValue (const node n) const
 
virtual DataMem * getNodeDefaultDataMemValue () const
 
virtual std::string getNodeDefaultStringValue () const
 
virtual nodeType::RealType getNodeDefaultValue () const
 
virtual std::string getNodeStringValue (const node n) const
 
virtual tlp::StoredType
< typename nodeType::RealType >
::ReturnedConstValue 
getNodeValue (const node n) const
 
virtual DataMem * getNonDefaultDataMemValue (const node n) const
 
virtual DataMem * getNonDefaultDataMemValue (const edge e) const
 
virtual tlp::Iterator< edge > * getNonDefaultValuatedEdges (const Graph *g=NULL) const
 
virtual tlp::Iterator< node > * getNonDefaultValuatedNodes (const Graph *g=NULL) const
 
virtual AbstractProperty
< nodeType, edgeType > & 
operator= (AbstractProperty< nodeType, edgeType > &prop)
 
virtual void setAllEdgeDataMemValue (const DataMem *v)
 
virtual bool setAllEdgeStringValue (const std::string &inV)
 
virtual void setAllEdgeValue (const typename edgeType::RealType &v)
 
virtual void setAllNodeDataMemValue (const DataMem *v)
 
virtual bool setAllNodeStringValue (const std::string &inV)
 
virtual void setAllNodeValue (const typename nodeType::RealType &v)
 
virtual void setEdgeDataMemValue (const edge e, const DataMem *v)
 
virtual bool setEdgeStringValue (const edge inE, const std::string &inV)
 
virtual void setEdgeValue (const edge e, const typename edgeType::RealType &v)
 
virtual void setMetaValueCalculator (PropertyInterface::MetaValueCalculator *mvCalc)
 
virtual void setNodeDataMemValue (const node n, const DataMem *v)
 
virtual bool setNodeStringValue (const node inN, const std::string &inV)
 
virtual void setNodeValue (const node n, const typename nodeType::RealType &v)
 
- Public Member Functions inherited from tlp::PropertyInterface
void addPropertyObserver (Observable *pObs)
 
virtual PropertyInterfaceclonePrototype (Graph *graph, const std::string &name)=0
 
tlp::GraphgetGraph () const
 
MetaValueCalculatorgetMetaValueCalculator ()
 
const std::string & getName () const
 
virtual std::string getTypename () const =0
 
void removePropertyObserver (Observable *pObs)
 
- Public Member Functions inherited from tlp::Observable
void addListener (Observable *const listener) 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 *const listener) const
 
void removeObserver (Observable *const observerver) const
 

Protected Member Functions

void computeMinMaxEdge (Graph *graph)
 
template<>
void computeMinMaxNode (Graph *sg)
 
void computeMinMaxNode (Graph *graph)
 
- Protected Member Functions inherited from tlp::AbstractProperty< nodeType, edgeType >
virtual void clone_handler (AbstractProperty< nodeType, edgeType > &)
 
- 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 ()
 
- Protected Member Functions inherited from tlp::Observable
 Observable (const Observable &)
 
tlp::Iterator< tlp::Observable * > * getObservables () const
 
bool hasOnlookers () const
 
void notifyObservers ()
 
void observableDeleted ()
 
Observableoperator= (const Observable &)
 
void sendEvent (const Event &message)
 
virtual void treatEvents (const std::vector< Event > &events)
 

Protected Attributes

edgeType::RealType _edgeMax
 
edgeType::RealType _edgeMin
 
nodeType::RealType _nodeMax
 
nodeType::RealType _nodeMin
 
TLP_HASH_MAP< unsigned int, bool > edgeValueUptodate
 
TLP_HASH_MAP< unsigned int,
typename edgeType::RealType > 
maxEdge
 
TLP_HASH_MAP< unsigned int,
typename nodeType::RealType > 
maxNode
 
TLP_HASH_MAP< unsigned int,
typename edgeType::RealType > 
minEdge
 
TLP_HASH_MAP< unsigned int,
typename nodeType::RealType > 
minNode
 
TLP_HASH_MAP< unsigned int, bool > nodeValueUptodate
 
- Protected Attributes inherited from tlp::AbstractProperty< nodeType, edgeType >
edgeType::RealType edgeDefaultValue
 
MutableContainer< typename
edgeType::RealType > 
edgeProperties
 
nodeType::RealType nodeDefaultValue
 
MutableContainer< typename
nodeType::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 ObservablegetObject (tlp::node n)
 
static const tlp::VectorGraph & getObservableGraph ()
 
static void holdObservers ()
 
static bool isAlive (tlp::node n)
 
static unsigned int observersHoldCounter ()
 
static void unholdObservers ()
 

Detailed Description

template<typename nodeType, typename edgeType>
class tlp::MinMaxProperty< nodeType, edgeType >

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 38 of file minmaxproperty.h.

Constructor & Destructor Documentation

template<typename nodeType , typename edgeType >
tlp::MinMaxProperty< nodeType, edgeType >::MinMaxProperty ( tlp::Graph graph,
std::string  name,
typename nodeType::RealType  NodeMin,
typename nodeType::RealType  NodeMax,
typename edgeType::RealType  EdgeMin,
typename edgeType::RealType  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

template<typename nodeType , typename edgeType >
edgeType::RealType tlp::MinMaxProperty< nodeType, edgeType >::getEdgeMax ( tlp::Graph graph = NULL)

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 74 of file minmaxproperty.cxx.

template<typename nodeType , typename edgeType >
edgeType::RealType tlp::MinMaxProperty< nodeType, edgeType >::getEdgeMin ( tlp::Graph graph = NULL)

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 59 of file minmaxproperty.cxx.

template<typename nodeType , typename edgeType >
nodeType::RealType tlp::MinMaxProperty< nodeType, edgeType >::getNodeMax ( tlp::Graph graph = NULL)

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 44 of file minmaxproperty.cxx.

template<typename nodeType , typename edgeType >
nodeType::RealType tlp::MinMaxProperty< nodeType, edgeType >::getNodeMin ( tlp::Graph graph = NULL)

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 29 of file minmaxproperty.cxx.

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

treatEvent 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 239 of file minmaxproperty.cxx.

template<typename nodeType , typename edgeType >
void tlp::MinMaxProperty< nodeType, edgeType >::updateAllEdgesValues ( typename edgeType::RealType  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 225 of file minmaxproperty.cxx.

template<typename nodeType , typename edgeType >
void tlp::MinMaxProperty< nodeType, edgeType >::updateAllNodesValues ( typename nodeType::RealType  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 211 of file minmaxproperty.cxx.

template<typename nodeType , typename edgeType >
void tlp::MinMaxProperty< nodeType, edgeType >::updateEdgeValue ( tlp::edge  e,
typename edgeType::RealType  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 183 of file minmaxproperty.cxx.

template<typename nodeType , typename edgeType >
void tlp::MinMaxProperty< nodeType, edgeType >::updateNodeValue ( tlp::node  n,
typename nodeType::RealType  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 155 of file minmaxproperty.cxx.