31 #define GRAPH_FOR_EACH_ARC_CONST(G,A) \
32 for (HypergraphLib::Graph::MapArcsById::const_iterator A = G->GetArcs().begin(); \
33 A != G->GetArcs().end(); \
36 #define GRAPH_FOR_EACH_ARC(G,A) \
37 for (HypergraphLib::Graph::MapArcsById::iterator A = G->GetArcs().begin(); \
38 A != G->GetArcs().end(); \
41 #define GRAPH_FOR_EACH_NODE_CONST(G,N) \
42 for (HypergraphLib::Graph::MapNodesById::const_iterator N = G->GetNodes().begin(); \
43 N != G->GetNodes().end(); \
46 #define GRAPH_FOR_EACH_NODE(G,N) \
47 for (HypergraphLib::Graph::MapNodesById::iterator N = G->GetNodes().begin(); \
48 N != G->GetNodes().end(); \
73 Graph(
const Graph &__G,
int __clone=1,
int __reverse=0);
78 Graph(
const Graph &__G,
const std::set <Node *> & );
79 Graph(
const Graph &__G,
const std::vector <Node*> & __nodes);
84 Node * GetNode (
int)
const;
91 Node* MergeNodes(
Node *__A,
Node *__B,
int __id,
bool __keepNodes=
false);
92 Node* MergeNodes(
int __A,
int __B,
int __id,
bool __keepNodes=
false);
97 Arc * GetArc (
int)
const;
102 int RemoveNode (
int __id);
107 int RemoveNode (
Node *);
112 int RemoveArc (
int __id);
117 int RemoveArc (
Arc *);
122 Node * AddNode (
int __id=0);
128 Arc * AddArc (
const std::vector<int> &,
int __id);
136 Arc * AddArc(
const int __id,
int __rank, ...);
138 Arc * AddArc(
const int __id,
const std::multimap<int, Node*> & __nodes);
147 int CheckFreeNodeId(
int __id)
const;
156 int CheckFreeArcId(
int __id)
const;
190 void CheckIntegrity()
const;
195 void Filaments ( std::vector < std::vector < int > > & __filaments );
200 bool IsCycle ()
const;
201 bool IsCycle (
const std::vector < Node * > & __nodes)
const;
207 Arc * DuplicateArc(
int __id,
int __dupId);
208 Arc * DuplicateArc(
Arc * __arc,
int __dupId);