Tools to Make It Easier to Make Graph Maps
[Auxiliary Data Structures]


Detailed Description

This group describes the tools that makes it easier to make graph maps that dynamically update with the graph changes.


Files

file  map_registry.h
 Map registry for graph maps.

Classes

class  MapRegistry

Defines

#define CREATE_EDGE_MAP_REGISTRY
#define CREATE_NODE_MAP_REGISTRY
#define CREATE_MAP_REGISTRIES
#define CREATE_NODE_MAP(DynMap)
#define CREATE_EDGE_MAP(DynMap)
#define CREATE_MAPS(DynMap)
#define CREATE_SYM_EDGE_MAP_REGISTRY
#define CREATE_SYM_EDGE_MAP(DynMap)
#define IMPORT_NODE_MAP(From, from, To, to)
#define IMPORT_EDGE_MAP(From, from, To, to)
#define KEEP_MAPS(From, To)


Define Documentation

#define CREATE_EDGE_MAP_REGISTRY
 

Value:

typedef MapRegistry<Graph, Edge, EdgeIt> EdgeMapRegistry; \ mutable EdgeMapRegistry edge_maps;
Creates the EdgeMapRegistry type an declare a mutable instance named edge_maps. Definition at line 30 of file map_defines.h.

#define CREATE_NODE_MAP_REGISTRY
 

Value:

typedef MapRegistry<Graph, Node, NodeIt> NodeMapRegistry; \ mutable NodeMapRegistry node_maps;
Creates the NodeMapRegistry type an declare a mutable instance named node_maps. Definition at line 37 of file map_defines.h.

#define CREATE_MAP_REGISTRIES
 

Value:

Creates both map registries. Definition at line 43 of file map_defines.h.

#define CREATE_NODE_MAP DynMap   ) 
 

Value:

template <typename Value> \ class NodeMap : public DynMap<NodeMapRegistry, Value> { \ public: \ typedef DynMap<NodeMapRegistry, Value> Parent; \ NodeMap(const typename Parent::Graph& g) \ : Parent(g, g.node_maps) {} \ NodeMap(const typename Parent::Graph& g, const Value& v) \ : Parent(g, g.node_maps, v) {} \ NodeMap(const NodeMap& copy) : Parent(static_cast<const Parent&>(copy)) {} \ template <typename TT> \ NodeMap(const NodeMap<TT>& copy) \ : Parent(static_cast<const typename NodeMap<TT>::Parent&>(copy)) {} \ NodeMap& operator=(const NodeMap& copy) { \ Parent::operator=(static_cast<const Parent&>(copy));\ return *this; \ } \ template <typename TT> \ NodeMap& operator=(const NodeMap<TT>& copy) { \ Parent::operator=(static_cast<const typename NodeMap<TT>::Parent&>(copy));\ return *this; \ } \ };
Creates a map from a template map. The import method is an overloading of the map type. The reason to use these macro is that the c++ does not support the template typedefs. If a future release of the c++ supports this feature it should be fixed. Definition at line 53 of file map_defines.h.

#define CREATE_EDGE_MAP DynMap   ) 
 

Value:

template <typename Value> \ class EdgeMap : public DynMap<EdgeMapRegistry, Value> { \ public: \ typedef DynMap<EdgeMapRegistry, Value> Parent; \ \ EdgeMap(const typename Parent::Graph& g) \ : Parent(g, g.edge_maps) {} \ EdgeMap(const typename Parent::Graph& g, const Value& v) \ : Parent(g, g.edge_maps, v) {} \ EdgeMap(const EdgeMap& copy) : Parent(static_cast<const Parent&>(copy)) {} \ template <typename TT> \ EdgeMap(const EdgeMap<TT>& copy) \ : Parent(static_cast<const typename EdgeMap<TT>::Parent&>(copy)) {} \ EdgeMap& operator=(const EdgeMap& copy) { \ Parent::operator=(static_cast<const Parent&>(copy));\ return *this; \ } \ template <typename TT> \ EdgeMap& operator=(const EdgeMap<TT>& copy) { \ Parent::operator=(static_cast<const typename EdgeMap<TT>::Parent&>(copy));\ return *this; \ } \ };
Creates a map from a template map. The import method is an overloading of the map type. The reason to use these macro is that the c++ does not support the template typedefs. If a future release of the c++ supports this feature it should be fixed. Definition at line 83 of file map_defines.h.

#define CREATE_MAPS DynMap   ) 
 

Value:

CREATE_NODE_MAP(DynMap) \ CREATE_EDGE_MAP(DynMap)
This macro creates both maps. Definition at line 110 of file map_defines.h.

#define CREATE_SYM_EDGE_MAP_REGISTRY
 

Value:

typedef SymEdgeIt<Graph, Edge, EdgeIt> SymEdgeIt; \ typedef MapRegistry<Graph, Edge, SymEdgeIt> SymEdgeMapRegistry; \ mutable SymEdgeMapRegistry sym_edge_maps;
This macro creates MapRegistry for Symmetric Edge Maps. Definition at line 116 of file map_defines.h.

#define CREATE_SYM_EDGE_MAP DynMap   ) 
 

Value:

template <typename Value> \ class SymEdgeMap : public SymMap<DynMap, SymEdgeMapRegistry, Value> { \ public: \ typedef SymMap<DynMap, SymEdgeMapRegistry, Value> Parent; \ \ SymEdgeMap(const typename Parent::Graph& g) \ : Parent(g, g.sym_edge_maps) {} \ SymEdgeMap(const typename Parent::Graph& g, const Value& v) \ : Parent(g, g.sym_edge_maps, v) {} \ SymEdgeMap(const SymEdgeMap& copy) \ : Parent(static_cast<const Parent&>(copy)) {} \ template <typename TT> \ SymEdgeMap(const NodeMap<TT>& copy) \ : Parent(static_cast<const typename SymEdgeMap<TT>::Parent&>(copy)) {} \ SymEdgeMap& operator=(const SymEdgeMap& copy) { \ Parent::operator=(static_cast<const Parent&>(copy));\ return *this; \ } \ template <typename TT> \ SymEdgeMap& operator=(const SymEdgeMap<TT>& copy) { \ Parent::operator=(static_cast<const typename SymEdgeMap<TT>::Parent&>(copy));\ return *this; \ } \ };
Creates a map from a template map. The import method is an overloading of the map type. The reason to use these macro is that the c++ does not support the template typedefs. If a future release of the c++ supports this feature it should be fixed. Definition at line 128 of file map_defines.h.

#define IMPORT_NODE_MAP From,
from,
To,
to   ) 
 

Value:

template <typename Value> \ class NodeMap : public From::template NodeMap<Value> { \ \ public: \ typedef typename From::template NodeMap<Value> Parent; \ \ NodeMap(const To& to) \ : Parent(static_cast<const From&>(from)) { } \ NodeMap(const To& to, const Value& value) \ : Parent(static_cast<const From&>(from), value) { } \ NodeMap(const NodeMap& copy) \ : Parent(static_cast<const Parent&>(copy)) {} \ template <typename TT> \ NodeMap(const NodeMap<TT>& copy) \ : Parent(static_cast<const typename NodeMap<TT>::Parent&>(copy)) {} \ NodeMap& operator=(const NodeMap& copy) { \ Parent::operator=(static_cast<const Parent&>(copy)); \ return *this; \ } \ template <typename TT> \ NodeMap& operator=(const NodeMap<TT>& copy) { \ Parent::operator=(static_cast<const typename NodeMap<TT>::Parent&>(copy));\ return *this; \ } \ };
This is a macro to import an node map into a graph class. Definition at line 156 of file map_defines.h.

#define IMPORT_EDGE_MAP From,
from,
To,
to   ) 
 

Value:

template <typename Value> \ class EdgeMap : public From::template EdgeMap<Value> { \ \ public: \ typedef typename From::template EdgeMap<Value> Parent; \ \ EdgeMap(const To& to) \ : Parent(static_cast<const From&>(from)) { } \ EdgeMap(const To& to, const Value& value) \ : Parent(static_cast<const From&>(from), value) { } \ EdgeMap(const EdgeMap& copy) \ : Parent(static_cast<const Parent&>(copy)) {} \ template <typename TT> \ EdgeMap(const EdgeMap<TT>& copy) \ : Parent(static_cast<const typename EdgeMap<TT>::Parent&>(copy)) {} \ EdgeMap& operator=(const EdgeMap& copy) { \ Parent::operator=(static_cast<const Parent&>(copy)); \ return *this; \ } \ template <typename TT> \ EdgeMap& operator=(const EdgeMap<TT>& copy) { \ Parent::operator=(static_cast<const typename EdgeMap<TT>::Parent&>(copy));\ return *this; \ } \ };
This is a macro to import an edge map into a graph class. Definition at line 185 of file map_defines.h.

#define KEEP_MAPS From,
To   ) 
 

Value:

KEEP_EDGE_MAP(From, To) \ KEEP_NODE_MAP(From, To)
This is a macro to keep the node and edge maps for a graph class. Definition at line 221 of file map_defines.h.


Generated on Thu Sep 30 12:18:36 2004 for LEMON by doxygen 1.3.8