Aleph-w  1.5a.2
Biblioteca general de algoritmos y estructuras de datos
 Todo Clases Archivos Funciones Variables 'typedefs' Enumeraciones Amigas Grupos Páginas
single_graph.H
1 # ifndef SINGLE_GRAPH_H
2 # define SINGLE_GRAPH_H
3 
4 # include <tpl_dynSetTree.H>
5 
6 namespace Aleph {
7 
20 template <class GT,
21  class SN = Dft_Show_Node<GT>,
22  class SA = Dft_Show_Arc<GT> >
24 {
25  SN & sn;
26  SA & sa;
27 
28  typedef typename GT::Node GT_Node;
29 
30 public:
31 
32  Test_Single_Graph(SN && __sn = SN(), SA && __sa = SA())
33  : sn(__sn), sa(__sa)
34  {
35  // empty
36  }
37 
39  bool test_node(typename GT::Node * p)
40  {
42 
43  for (Node_Arc_Iterator<GT, SA> it(p, sa); it.has_curr(); it.next())
44  {
45  GT_Node * q = it.get_tgt_node();
46  if (nodes.exist(q))
47  return false;
48  else
49  nodes.insert(p);
50  }
51 
52  return true;
53  }
54 
55  bool operator () (GT & g)
56  {
57  for (Node_Iterator<GT, SN> it(g, sn); it.has_curr(); it.next())
58  if (not test_node(it.get_curr()))
59  return false;
60 
61  return true;
62  }
63 };
64 
65 
66 
67 } // end namespace Aleph
68 
69 # endif // SINGLE_GRAPH_H_H
Definition: tpl_dynSetTree.H:1126
Definition: tpl_graph.H:794
Definition: single_graph.H:23
Definition: tpl_graph.H:634
void next()
Adelanta el iterador una posición.
Definition: filter_iterator.H:143
bool exist(const Key &key) const
Retorna true si key pertenece al conjunto dinámico.
Definition: tpl_dynSetTree.H:287
Definition: tpl_graph.H:814
Definition: tpl_graph.H:694
bool test_node(typename GT::Node *p)
retorna true si p no tiene multiarcos ni lazos
Definition: single_graph.H:39
Key * insert(const Key &key)
Definition: tpl_dynSetTree.H:177

Leandro Rabindranath León