Tulip  5.4.0
Large graphs analysis and drawing
tlp::AbstractProperty< Tnode, Tedge, Tprop > Class Template Reference

#include <AbstractProperty.h>

+ Inheritance diagram for tlp::AbstractProperty< Tnode, Tedge, Tprop >:

Classes

class  MetaValueCalculator
 

Public Member Functions

 AbstractProperty (Graph *, const std::string &n="")
 
int compare (const node n1, const node n2) const override
 
int compare (const edge e1, const edge e2) const override
 
void computeMetaValue (node n, Graph *sg, Graph *mg) override
 
void computeMetaValue (edge e, tlp::Iterator< edge > *itE, Graph *mg) override
 
bool copy (const node destination, const node source, PropertyInterface *property, bool ifNotDefault=false) override
 
bool copy (const edge destination, const edge source, PropertyInterface *property, bool ifNotDefault=false) override
 
void copy (PropertyInterface *property) override
 
unsigned int edgeValueSize () const override
 
void erase (const node n) override
 
void erase (const edge e) 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 node n) const override
 
DataMem * getNonDefaultDataMemValue (const edge e) 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< Tnode, Tedge, Tprop > & operator= (AbstractProperty< Tnode, Tedge, Tprop > &prop)
 
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
 

Protected Member Functions

virtual void clone_handler (AbstractProperty< Tnode, Tedge, Tprop > &)
 

Protected Attributes

Tedge::RealType edgeDefaultValue
 
MutableContainer< typename Tedge::RealType > edgeProperties
 
Tnode::RealType nodeDefaultValue
 
MutableContainer< typename Tnode::RealType > nodeProperties
 

Friends

class Graph
 
class GraphView
 

Detailed Description

template<class Tnode, class Tedge, class Tprop = PropertyInterface>
class tlp::AbstractProperty< Tnode, Tedge, Tprop >

This class extends upon PropertyInterface, and adds type-safe methods to get and set the node and edge values, through the magic of template programming.

Nodes and Edges can have different types (e.g. tlp::LayoutProperty has tlp::PointType as node type and tlp::LineType as edge type), but most of the time they have the same type (e.g. tlp::DoubleProperty, tlp::IntegerProperty).

Some of the pure virtual functions of PropertyInterface are implemented in this class (e.g. erase()).

The actual data is stored in this class, and it manages the default values.

Definition at line 55 of file AbstractProperty.h.

Member Function Documentation

◆ clone_handler()

template<class Tnode, class Tedge, class Tprop = PropertyInterface>
virtual void tlp::AbstractProperty< Tnode, Tedge, Tprop >::clone_handler ( AbstractProperty< Tnode, Tedge, Tprop > &  )
inlineprotectedvirtual

Enable to clone part of sub_class.

Definition at line 543 of file AbstractProperty.h.

◆ erase() [1/2]

template<class Tnode, class Tedge, class Tprop = PropertyInterface>
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::erase ( const node  n)
inlineoverride

Resets the value of a node to the default value.

Parameters
nThe node to reset the value of.

Definition at line 229 of file AbstractProperty.h.

◆ erase() [2/2]

template<class Tnode, class Tedge, class Tprop = PropertyInterface>
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::erase ( const edge  e)
inlineoverride

Resets the value of an edge to the default value.

Parameters
eThe edge to reset the value of.

Definition at line 240 of file AbstractProperty.h.

◆ getEdgeDefaultValue()

template<class Tnode , class Tedge , class Tprop >
Tedge::RealType tlp::AbstractProperty< Tnode, Tedge, Tprop >::getEdgeDefaultValue ( ) const
inline

Gets the default edge value of the property.

Returns
The default value of edges.

Definition at line 41 of file AbstractProperty.cxx.

+ Here is the caller graph for this function:

◆ getEdgesEqualTo()

template<class Tnode , class Tedge, class Tprop >
tlp::Iterator< tlp::edge > * tlp::AbstractProperty< Tnode, Tedge, Tprop >::getEdgesEqualTo ( typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue  v,
const Graph g = nullptr 
) const
virtual

Returns an iterator through all edges belonging to g whose associated value is equal to val. If g is nullptr, the graph given when creating the property is considered.

Definition at line 78 of file AbstractProperty.cxx.

◆ getEdgeValue()

template<class Tnode , class Tedge , class Tprop >
tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue tlp::AbstractProperty< Tnode, Tedge, Tprop >::getEdgeValue ( const edge  e) const
inline

Returns the value associated to the edge e in this property. If there is no value, it returns the default edge value.

Parameters
eThe edge for which we want to get the value of the property.
Returns
:StoredType< Tedge::RealType >::ReturnedConstValue The value of the property for this edge.

Definition at line 54 of file AbstractProperty.cxx.

+ Here is the caller graph for this function:

◆ getNodeDefaultValue()

template<class Tnode , class Tedge , class Tprop >
Tnode::RealType tlp::AbstractProperty< Tnode, Tedge, Tprop >::getNodeDefaultValue ( ) const
inline

Gets the default node value of the property.

Returns
The default value of nodes.

Definition at line 35 of file AbstractProperty.cxx.

+ Here is the caller graph for this function:

◆ getNodesEqualTo()

template<class Tnode, class Tedge , class Tprop >
tlp::Iterator< tlp::node > * tlp::AbstractProperty< Tnode, Tedge, Tprop >::getNodesEqualTo ( typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue  v,
const Graph g = nullptr 
) const
virtual

Returns an iterator through all nodes belonging to g whose associated value is equal to val. If g is nullptr, the graph given when creating the property is considered.

Definition at line 60 of file AbstractProperty.cxx.

◆ getNodeValue()

template<class Tnode , class Tedge , class Tprop >
tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue tlp::AbstractProperty< Tnode, Tedge, Tprop >::getNodeValue ( const node  n) const
inline

Returns the value associated with the node n in this property. If there is no value, it returns the default node value.

Parameters
nThe node for which we want to get the value of the property.
Returns
:StoredType< Tnode::RealType >::ReturnedConstValue The value of the property for this node.

Definition at line 47 of file AbstractProperty.cxx.

+ Here is the caller graph for this function:

◆ operator=()

template<class Tnode, class Tedge, class Tprop = PropertyInterface>
virtual AbstractProperty<Tnode, Tedge, Tprop>& tlp::AbstractProperty< Tnode, Tedge, Tprop >::operator= ( AbstractProperty< Tnode, Tedge, Tprop > &  prop)
inlinevirtual

This operator overload allows to copy a property using the following syntax :

IntegerProperty* shape = graph->getProperty<IntegerProperty>("viewShape");
IntegerProperty* backup = graph->getProperty<IntegerProperty>("shapeBackup");
*backup = *shape; // all the values from 'shape' will be copied into 'backup'.
Parameters
propThe property to copy the values from.
Returns
This property with the values copied.

Definition at line 256 of file AbstractProperty.h.

◆ setAllEdgeValue()

template<class Tnode , class Tedge, class Tprop >
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::setAllEdgeValue ( typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue  v)
virtual

Sets the value of all edges and notify the observers. All previous values are lost and the given value is assigned as the default one to the future added edges.

Parameters
vThe value to set to all edges.

Definition at line 226 of file AbstractProperty.cxx.

◆ setAllNodeValue()

template<class Tnode, class Tedge , class Tprop >
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::setAllNodeValue ( typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue  v)
virtual

Sets the value of all nodes and notify the observers. All previous values are lost and the given value is assigned as the default one to the future added nodes.

Parameters
vThe value to set to all nodes.

Definition at line 114 of file AbstractProperty.cxx.

◆ setEdgeDefaultValue()

template<class Tnode , class Tedge, class Tprop >
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::setEdgeDefaultValue ( typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue  v)
virtual

Sets the value assigned as the default one to the future added edges.

Since
Tulip 5.0
Parameters
valuethe new value to set on future added edges.
Returns
Whether the given string was a correct representation for this property's type. If not, the default value is not set.

Definition at line 185 of file AbstractProperty.cxx.

◆ setEdgeValue()

template<class Tnode , class Tedge, class Tprop >
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::setEdgeValue ( const edge  e,
typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue  v 
)
virtual

Set the value of an edge and notify the observers of a modification.

Parameters
eThe edge to set the value of.
vThe value to affect for this edge.

Definition at line 105 of file AbstractProperty.cxx.

◆ setNodeDefaultValue()

template<class Tnode, class Tedge , class Tprop >
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::setNodeDefaultValue ( typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue  v)
virtual

Sets the value assigned as the default one to the future added nodes.

Since
Tulip 5.0
Parameters
vthe new value to set on future added nodes.
Returns
Whether the given string was a correct representation for this property's type. If not, the default value is not set.

Definition at line 123 of file AbstractProperty.cxx.

◆ setNodeValue()

template<class Tnode, class Tedge , class Tprop >
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::setNodeValue ( const node  n,
typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue  v 
)
virtual

Sets the value of a node and notify the observers of a modification.

Parameters
nThe node to set the value of.
vThe value to affect for this node.
Examples:
graph_display/graph_display.cpp.

Definition at line 96 of file AbstractProperty.cxx.

◆ setValueToGraphEdges()

template<class Tnode , class Tedge, class Tprop >
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::setValueToGraphEdges ( typename tlp::StoredType< typename Tedge::RealType >::ReturnedConstValue  v,
const Graph graph 
)
virtual

Sets the value of all edges in a graph and notify the observers. Only the edges from that graph will have their value modified in the property and the default edge value will not be modified.

Since
Tulip 5.0
Parameters
vThe value to set to all edges.
graphA graph on which to modify
Warning
If the provided graph is not a descendant of the one associated to that property (including itself), no edge value will be modified.

Definition at line 235 of file AbstractProperty.cxx.

◆ setValueToGraphNodes()

template<class Tnode, class Tedge , class Tprop >
void tlp::AbstractProperty< Tnode, Tedge, Tprop >::setValueToGraphNodes ( typename tlp::StoredType< typename Tnode::RealType >::ReturnedConstValue  v,
const Graph graph 
)
virtual

Sets the value of all nodes in a graph and notify the observers. Only the nodes from that graph will have their value modified in the property and the default node value will not be modified.

Since
Tulip 5.0
Parameters
vThe value to set to all nodes.
graphA graph that defines the set of nodes
Warning
If the provided graph is not a descendant of the one associated to that property (including itself), no node value will be modified.

Definition at line 163 of file AbstractProperty.cxx.