#include <Graph.h>
Public Member Functions | |
Graph () | |
Constructor. | |
Graph (const Graph &g) | |
Graph (const Graph &g, const list< Node > &listNode) | |
void | operator= (const Graph &g) |
void | copy (const Graph &g) |
~Graph () | |
Destructor. | |
void | assign (const GRAPH_TYPE &x) |
const GRAPH_TYPE & | inf () |
virtual Node | newNode (const NODE_TYPE &x) |
void | assign (Node n, const NODE_TYPE &x) |
NODE_TYPE & | inf (Node n) |
NODE_TYPE | inf (Node n) const |
virtual void | removeNode (Node n) |
virtual Edge | newEdge (Node source, Node target, const EDGE_TYPE &x=0) |
void | assign (Edge n, const EDGE_TYPE &x) |
EDGE_TYPE & | inf (Edge n) |
EDGE_TYPE | inf (Edge n) const |
virtual void | removeEdge (Edge e) |
map< Node, NODE_TYPE > | getNodeMap () const |
map< Edge, EDGE_TYPE > | getEdgeMap () const |
Protected Attributes | |
map< Node, NODE_TYPE > | nodeMap |
map< Edge, EDGE_TYPE > | edgeMap |
Private Attributes | |
GRAPH_TYPE | x |
Fecha de creación : 2007-03-18
Definition at line 39 of file Graph.h.
Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::Graph | ( | ) | [inline] |
Constructor.
Definition at line 25 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::edgeMap, and Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
00025 : graph() 00026 { 00027 nodeMap = map< Node, NODE_TYPE >() ; 00028 edgeMap = map< Edge, EDGE_TYPE >() ; 00029 }
Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::Graph | ( | const Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE > & | g | ) | [inline] |
Definition at line 32 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::copy().
00033 { 00034 this->copy( g ) ; 00035 }
Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::Graph | ( | const Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE > & | g, | |
const list< Node > & | listNode | |||
) | [inline] |
Definition at line 38 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::copy(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf(), Node, and Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
00039 { 00040 node_map<Node> copy(g, node()); 00041 00042 for( list<Node>::const_iterator it = listNode.begin(); it != listNode.end(); ++it) 00043 { 00044 Node tmp = new_node(); 00045 copy[*it] = tmp ; 00046 nodeMap[ tmp ] = g.inf(*it) ; 00047 00048 // copy[*it] = newNode( g.inf( *it ) ); 00049 } 00050 00051 for( list<Node>::const_iterator it = listNode.begin(); it != listNode.end(); ++it){ 00052 00053 node::out_edges_iterator e_it, e_end; 00054 00055 for (e_it = (*it).out_edges_begin(), e_end = (*it).out_edges_end(); e_it != e_end; ++e_it) { 00056 00057 if ( copy[e_it->target()] != node() ) { 00058 00059 new_edge( copy[e_it->source()], copy[e_it->target()] ); 00060 00061 } 00062 00063 } 00064 } 00065 00066 // nodeMap = g.getNodeMap() ; 00067 // edgeMap = g.getEdgeMap() ; 00068 }
Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::~Graph | ( | ) | [inline] |
Destructor.
Definition at line 111 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::edgeMap, and Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
void Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::operator= | ( | const Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE > & | g | ) | [inline] |
Definition at line 71 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::copy().
00072 { 00073 this->copy( g ) ; 00074 }
void Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::copy | ( | const Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE > & | g | ) | [inline] |
Definition at line 77 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf(), Node, and Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
Referenced by Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::Graph(), and Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::operator=().
00078 { 00079 node_map<node> copy(g, node()); 00080 00081 for( graph::node_iterator it = g.nodes_begin(); it != g.nodes_end(); ++it) 00082 { 00083 Node tmp = new_node(); 00084 copy[*it] = tmp ; 00085 nodeMap[ tmp ] = g.inf(*it) ; 00086 } 00087 00088 for( graph::node_iterator it = g.nodes_begin(); it != g.nodes_end(); ++it){ 00089 00090 node::out_edges_iterator e_it, e_end; 00091 00092 for (e_it = (*it).out_edges_begin(), e_end = (*it).out_edges_end(); e_it != e_end; ++e_it) { 00093 00094 if ( copy[e_it->target()] != node() ) { 00095 00096 new_edge( copy[e_it->source()], copy[e_it->target()] ); 00097 00098 } 00099 00100 } 00101 } 00102 00103 // nodeMap = g.getNodeMap() ; 00104 // edgeMap = g.getEdgeMap() ; 00105 }
void Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::assign | ( | const GRAPH_TYPE & | x | ) | [inline] |
const GRAPH_TYPE & Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf | ( | ) | [inline] |
Definition at line 130 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::x.
Referenced by Tree::areSubtreesEqual(), HyperSurface::buildAreaTree(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::copy(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::Graph(), Tree::print(), and Tree::swapSubtrees().
00131 { 00132 return x ; 00133 }
Node Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::newNode | ( | const NODE_TYPE & | x | ) | [inline, virtual] |
x |
Definition at line 159 of file Graph.cpp.
References Node, and Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
Referenced by HyperSurface::buildAreaTree().
void Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::assign | ( | Node | n, | |
const NODE_TYPE & | x | |||
) | [inline] |
n | ||
x |
Definition at line 172 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
NODE_TYPE & Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf | ( | Node | n | ) | [inline] |
n |
Definition at line 183 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
00184 { 00185 return nodeMap[n] ; 00186 }
NODE_TYPE Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf | ( | Node | n | ) | const [inline] |
n |
Definition at line 194 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
00195 { 00196 return nodeMap.find(n)->second ; 00197 }
void Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::removeNode | ( | Node | n | ) | [inline, virtual] |
n |
Definition at line 140 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::edgeMap, and Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
Referenced by HyperSurface::buildAreaTree().
00141 { 00142 if( !n.is_hidden() ){ 00143 for( typename Node::inout_edges_iterator it = n.inout_edges_begin(); it != n.inout_edges_end(); ++it ){ 00144 edgeMap.erase(*it) ; 00145 } 00146 }else{ 00147 cout << "Warning!!!: Not implement, remove node hidden" << endl ; 00148 } 00149 00150 del_node( n ) ; 00151 nodeMap.erase( n ) ; 00152 }
Edge Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::newEdge | ( | Node | source, | |
Node | target, | |||
const EDGE_TYPE & | x = 0 | |||
) | [inline, virtual] |
void Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::assign | ( | Edge | n, | |
const EDGE_TYPE & | x | |||
) | [inline] |
n | ||
x |
Definition at line 219 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::edgeMap.
EDGE_TYPE & Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf | ( | Edge | n | ) | [inline] |
n |
Definition at line 230 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::edgeMap.
00231 { 00232 return edgeMap[n] ; 00233 }
EDGE_TYPE Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf | ( | Edge | n | ) | const |
void Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::removeEdge | ( | Edge | e | ) | [inline, virtual] |
map< Node, NODE_TYPE > Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::getNodeMap | ( | ) | const [inline] |
Definition at line 245 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap.
00246 { 00247 return nodeMap ; 00248 }
map< Edge, EDGE_TYPE > Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::getEdgeMap | ( | ) | const [inline] |
Definition at line 251 of file Graph.cpp.
References Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::edgeMap.
00252 { 00253 return edgeMap ; 00254 }
map< Node, NODE_TYPE > Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::nodeMap [protected] |
Definition at line 68 of file Graph.h.
Referenced by Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::assign(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::copy(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::getNodeMap(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::Graph(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::newNode(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::removeNode(), and Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::~Graph().
map< Edge, EDGE_TYPE > Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::edgeMap [protected] |
Definition at line 69 of file Graph.h.
Referenced by Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::assign(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::getEdgeMap(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::Graph(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::newEdge(), Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::removeNode(), and Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::~Graph().
GRAPH_TYPE Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::x [private] |
Definition at line 72 of file Graph.h.
Referenced by Graph< NODE_TYPE, EDGE_TYPE, GRAPH_TYPE >::inf().