Tulip  4.3.0
Better Visualization Through Research
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Groups Pages
tlp::PropertyInterface Class Referenceabstract

#include <PropertyInterface.h>

Inherits tlp::Observable.

Inherited by tlp::AbstractProperty< tlp::BooleanType, tlp::BooleanType >, tlp::AbstractProperty< tlp::BooleanVectorType, tlp::BooleanVectorType, PropertyInterface >, tlp::AbstractProperty< tlp::ColorVectorType, tlp::ColorVectorType, PropertyInterface >, tlp::AbstractProperty< tlp::CoordVectorType, tlp::CoordVectorType, PropertyInterface >, tlp::AbstractProperty< tlp::DoubleVectorType, tlp::DoubleVectorType, PropertyInterface >, tlp::AbstractProperty< tlp::SizeVectorType, tlp::SizeVectorType, PropertyInterface >, tlp::AbstractProperty< tlp::StringVectorType, tlp::StringVectorType, PropertyInterface >, and tlp::NumericProperty.

Classes

class  MetaValueCalculator
 Base class for computing values on meta nodes and edges. More...
 

Public Member Functions

virtual PropertyInterfaceclonePrototype (Graph *graph, const std::string &name)=0
 
virtual int compare (const node n1, const node n2) const =0
 
virtual int compare (const edge e1, const edge e2) const =0
 
virtual void computeMetaValue (node metaNode, Graph *subgraph, Graph *metaGraph)=0
 
virtual void computeMetaValue (edge metaEdge, tlp::Iterator< edge > *it, Graph *metaGraph)=0
 
virtual bool copy (const node destination, const node source, PropertyInterface *property, bool ifNotDefault=false)=0
 
virtual bool copy (const edge destination, const edge source, PropertyInterface *property, bool ifNotDefault=false)=0
 
virtual void copy (PropertyInterface *source)=0
 
virtual void erase (const node)=0
 
virtual void erase (const edge)=0
 
virtual DataMem * getEdgeDataMemValue (const edge e) const =0
 
virtual DataMem * getEdgeDefaultDataMemValue () const =0
 
virtual std::string getEdgeDefaultStringValue () const =0
 
virtual std::string getEdgeStringValue (const edge e) const =0
 
tlp::GraphgetGraph () const
 
MetaValueCalculatorgetMetaValueCalculator ()
 
const std::string & getName () const
 
virtual DataMem * getNodeDataMemValue (const node n) const =0
 
virtual DataMem * getNodeDefaultDataMemValue () const =0
 
virtual std::string getNodeDefaultStringValue () const =0
 
virtual std::string getNodeStringValue (const node n) const =0
 
virtual DataMem * getNonDefaultDataMemValue (const node n) const =0
 
virtual DataMem * getNonDefaultDataMemValue (const edge e) const =0
 
virtual tlp::Iterator< edge > * getNonDefaultValuatedEdges (const Graph *=NULL) const =0
 
virtual tlp::Iterator< node > * getNonDefaultValuatedNodes (const Graph *=NULL) const =0
 
virtual std::string getTypename () const =0
 
virtual void setAllEdgeDataMemValue (const DataMem *v)=0
 
virtual bool setAllEdgeStringValue (const std::string &value)=0
 
virtual void setAllNodeDataMemValue (const DataMem *value)=0
 
virtual bool setAllNodeStringValue (const std::string &value)=0
 
virtual void setEdgeDataMemValue (const edge e, const DataMem *v)=0
 
virtual bool setEdgeStringValue (const edge e, const std::string &value)=0
 
virtual void setMetaValueCalculator (MetaValueCalculator *calculator)
 
virtual void setNodeDataMemValue (const node n, const DataMem *value)=0
 
virtual bool setNodeStringValue (const node n, const std::string &value)=0
 
- 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 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 treatEvent (const Event &message)
 
virtual void treatEvents (const std::vector< Event > &events)
 

Protected Attributes

Graphgraph
 
MetaValueCalculatormetaValueCalculator
 
std::string name
 

Friends

class PropertyManager
 

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

PropertyInterface describes the interface of a graph property.

The intent of a property is to hold a value for each node and edge (e.g. the degree of the nodes).

A property can be used in two different ways : Either it is attached to a graph; and in this case creating and deleting the property is handled by the graph (

See Also
Graph::getProperty()).

Either is is detached from a graph, and you have to handle creation and deletion yourself. This is most useful for some algorithms that need a temporary property, but do not want the property to appear on the graph after the computation.

Definition at line 52 of file PropertyInterface.h.

Member Function Documentation

virtual PropertyInterface* tlp::PropertyInterface::clonePrototype ( Graph graph,
const std::string &  name 
)
pure virtual

Creates a property of the same type (e.g. tlp::DoubleProperty) in the graph. The new property will not contain a copy of this property's values.

Parameters
graphThe Graph in which to create the new property.
nameThe name of the new property.
Returns
The newly created property.

Implemented in tlp::BooleanProperty.

virtual int tlp::PropertyInterface::compare ( const node  n1,
const node  n2 
) const
pure virtual

Compares the value this property holds for the two given nodes.

Parameters
n1The first node to compare the value of.
n2The second node to compare the value of.
Returns
0 if the values are identical, a positive value if n1 is greater than n2, and a negative value if n1 is less than n2.
virtual int tlp::PropertyInterface::compare ( const edge  e1,
const edge  e2 
) const
pure virtual

Compares the value this property holds for the two given edges.

Parameters
e1The first edge to compare the value of.
e2The second edge to compare the value of.
Returns
0 if the values are identical, a positive value if e1 is greater than e2, and a negative value if e1 is less than e2.
virtual void tlp::PropertyInterface::computeMetaValue ( node  metaNode,
Graph subgraph,
Graph metaGraph 
)
pure virtual

Sets the value of the metanode to a computed value.

The value is computed by this property's MetaValueCalculator.

Parameters
metaNodeThe metanode to compute a value on.
subgraphThe subgraph pointed by the metanode.
metaGraphThe graph who owns the meta node.
virtual void tlp::PropertyInterface::computeMetaValue ( edge  metaEdge,
tlp::Iterator< edge > *  it,
Graph metaGraph 
)
pure virtual

Sets the value of the metaedge to a computed value.

Parameters
metaEdgeThe meta edge to compute a value on.
itThe edges represented by the meta edge.
metaGraphThe graph who owns the meta edge.
virtual bool tlp::PropertyInterface::copy ( const node  destination,
const node  source,
PropertyInterface property,
bool  ifNotDefault = false 
)
pure virtual

Copies the value of a node in another property to a node in this property.

Parameters
destinationThe node whose value will be set.
sourceThe node whose value to copy.
propertyThe property from which to copy the source node value.
ifNotDefaultIf true, the copy will only be performed if the source node's value is not the default value.
Returns
True if the copy was performed, false otherwise.
virtual bool tlp::PropertyInterface::copy ( const edge  destination,
const edge  source,
PropertyInterface property,
bool  ifNotDefault = false 
)
pure virtual

Copies the value of an edge in another property to an edge in this property.

Parameters
destinationThe edge whose value will be set.
sourceThe edge whose value to copy.
propertyThe property from which to copy the source edge value.
ifNotDefaultIf true, the copy will only be performed if the source edge's value is not the default value.
Returns
True if the copy was performed, false otherwise.
virtual void tlp::PropertyInterface::copy ( PropertyInterface source)
pure virtual

Copies the values of the passed property to this property.

Parameters
sourceThe property from which to copy values.
virtual DataMem* tlp::PropertyInterface::getEdgeDataMemValue ( const edge  e) const
pure virtual

Gets the edge value, contained in a tlp::DataMem structure.

Parameters
nThe edge to get the value of.
Returns
The value of the edge, in a tlp::DataMem.
Warning
The ownership of this pointer is given to the caller.
virtual DataMem* tlp::PropertyInterface::getEdgeDefaultDataMemValue ( ) const
pure virtual

Gets a pointer to the tlp::DataMem structure that contains the edge default value.

Returns
The DataMem structure containing the edge default value.
Warning
The ownership of this pointer is given to the caller.
virtual std::string tlp::PropertyInterface::getEdgeDefaultStringValue ( ) const
pure virtual

Gets a string representation of the edge default value.

Returns
A string representation of the edge default value.
virtual std::string tlp::PropertyInterface::getEdgeStringValue ( const edge  e) const
pure virtual

Gets a string representation of the edge default value.

Parameters
eThe edge to get the value of.
Returns
A string representation of the edge default value.
MetaValueCalculator* tlp::PropertyInterface::getMetaValueCalculator ( )
inline

Gets the MetaValueCalculator of this property.

Returns
The MetaValueCalculator of this property

Definition at line 339 of file PropertyInterface.h.

const std::string& tlp::PropertyInterface::getName ( ) const
inline

Gets the name of the property (e.g. viewLayout).

Returns
The name of this property.

Definition at line 123 of file PropertyInterface.h.

virtual DataMem* tlp::PropertyInterface::getNodeDataMemValue ( const node  n) const
pure virtual

Gets the node value, contained in a tlp::DataMem structure.

Parameters
nThe node to get the value of.
Returns
The value of the node, in a tlp::DataMem.
Warning
The ownership of this pointer is given to the caller.
virtual DataMem* tlp::PropertyInterface::getNodeDefaultDataMemValue ( ) const
pure virtual

Gets a pointer to the tlp::DataMem structure that contains the node default value.

Returns
The DataMem structure containing the node default value.
Warning
The ownership of this pointer is given to the caller.
virtual std::string tlp::PropertyInterface::getNodeDefaultStringValue ( ) const
pure virtual

Gets a string representation of the node default value.

Returns
A string representation of the node default value.
virtual std::string tlp::PropertyInterface::getNodeStringValue ( const node  n) const
pure virtual

Gets a string representation of the node default value.

Parameters
nThe node to get the value of.
Returns
A string representation of the node default value.
virtual DataMem* tlp::PropertyInterface::getNonDefaultDataMemValue ( const node  n) const
pure virtual

Returns the value in a DataMem if it is not default, otherwise returns NULL.

Parameters
nThe node to get the value of.
Returns
The value of the node if it is not default, or NULL.
Warning
The ownership of this pointer is given to the caller.
virtual DataMem* tlp::PropertyInterface::getNonDefaultDataMemValue ( const edge  e) const
pure virtual

Returns the value in a DataMem if it is not default, otherwise returns NULL.

Parameters
eThe edge to get the value of.
Returns
The value of the edge if it is not default, or NULL.
Warning
The ownership of this pointer is given to the caller.
virtual tlp::Iterator<edge>* tlp::PropertyInterface::getNonDefaultValuatedEdges ( const Graph = NULL) const
pure virtual

Gets an Iterator on all non-default valuated edges. When given a Graph as parameter, only edges belonging to this graph are iterated over.

Returns
An Iterator over edges whose value is not default.
Warning
The ownership of the iterator is given to the caller.
virtual tlp::Iterator<node>* tlp::PropertyInterface::getNonDefaultValuatedNodes ( const Graph = NULL) const
pure virtual

Gets an Iterator on all non-default valuated nodes. When given a Graph as parameter, only nodes belonging to this graph are iterated over.

Returns
An Iterator over nodes whose value is not default.
Warning
The ownership of the iterator is given to the caller.
virtual std::string tlp::PropertyInterface::getTypename ( ) const
pure virtual

Gets a string describing the type of the property (e.g. "graph", "double", "layout", "string", "integer", "color", "size").

Returns
The name of this property's type.

Implemented in tlp::BooleanProperty.

virtual void tlp::PropertyInterface::setAllEdgeDataMemValue ( const DataMem *  v)
pure virtual

Sets all the edges value to the value contained in the given DataMem structure. All previous values are lost.

Parameters
valueThe value to set on all the edges.
virtual bool tlp::PropertyInterface::setAllEdgeStringValue ( const std::string &  value)
pure virtual

Sets all the edges value to the value described by the string. For some types, some parsing will be necessary (e.g. LayoutPorperty). All previous values are lost.

Parameters
valueA string describing the new value to set on all the edges.
Returns
Whether the given string was a correct representation for this property's type. If not, the values are not set.
virtual void tlp::PropertyInterface::setAllNodeDataMemValue ( const DataMem *  value)
pure virtual

Sets all the nodes value to the value contained in the given DataMem structure. All previous values are lost.

Parameters
valueThe value to set on all the nodes.
virtual bool tlp::PropertyInterface::setAllNodeStringValue ( const std::string &  value)
pure virtual

Sets all the nodes value to the value described by the string. For some types, some parsing will be necessary (e.g. LayoutPorperty). All previous values are lost.

Parameters
valueA string describing the new value to set on all the nodes.
Returns
Whether the given string was a correct representation for this property's type. If not, the values are not set.
virtual void tlp::PropertyInterface::setEdgeDataMemValue ( const edge  e,
const DataMem *  v 
)
pure virtual

Sets the edge value.

Parameters
eThe edge to set the value of.
valueThe value to set to this edge.
virtual bool tlp::PropertyInterface::setEdgeStringValue ( const edge  e,
const std::string &  value 
)
pure virtual

Sets a new value on the edge, described by the string parameter.

Parameters
eThe edge on which to set value on.
valueA string describing the value to set on the edge.
Returns
Whether the string was a correct representation for this property's type. If not, the value is not set.
virtual void tlp::PropertyInterface::setMetaValueCalculator ( MetaValueCalculator calculator)
inlinevirtual

Sets the Calculator for meta nodes and edges.

Parameters
calculatorThe object containing the logic for computing the meta values for the nodes and edges.
Warning
The ownership of the MetaValueCalculator is not taken by the property.

Definition at line 349 of file PropertyInterface.h.

virtual void tlp::PropertyInterface::setNodeDataMemValue ( const node  n,
const DataMem *  value 
)
pure virtual

Sets the node value.

Parameters
nThe node to set the value of.
valueThe value to set to this node.
virtual bool tlp::PropertyInterface::setNodeStringValue ( const node  n,
const std::string &  value 
)
pure virtual

Sets a new value on the node, described by the string parameter.

Parameters
nThe node on which to set the new value.
valueA string describing the value to set on the node.
Returns
Whether the string was a correct representation for this property's type. If not, the value is not set.