MCPcopy Create free account
hub / github.com/Gecode/gecode / init

Method init

gecode/int/nvalues/graph.hpp:45–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43 }
44
45 forceinline void
46 Graph::init(Space& home, const ValSet& vs, const ViewArray<IntView>& x) {
47 using namespace ViewValGraph;
48 n_view = x.size() + vs.size();
49 view = home.alloc<ViewNode<IntView>*>(n_view);
50
51 // Create nodes corresponding to the value set vs
52 {
53 int i = x.size();
54 ValSet::Ranges vsr(vs);
55 ValNode<IntView>** v = &val;
56 for (Iter::Ranges::ToValues<ValSet::Ranges> n(vsr); n(); ++n) {
57 // Create view node
58 view[i] = new (home) ViewNode<IntView>();
59 // Create and link value node
60 ValNode<IntView>* nv = new (home) ValNode<IntView>(n.val());
61 *v = nv; v = nv->next_val_ref();
62 // Create and link single edge
63 Edge<IntView>** e = view[i]->val_edges_ref();
64 *e = new (home) Edge<IntView>(nv,view[i],nullptr);
65 // Match edge
66 (*e)->revert(view[i]); nv->matching(*e);
67 i++;
68 }
69 *v = nullptr;
70 n_val = vs.size();
71 n_matched = vs.size();
72 assert(i - x.size() == vs.size());
73 }
74
75 // Initialize real view nodes
76 for (int i=0; i<x.size(); i++) {
77 view[i] = new (home) ViewNode<IntView>(x[i]);
78 ViewValGraph::Graph<IntView>::init(home,view[i]);
79 }
80
81 // Match the real view nodes, if possible
82 Region r;
83 ViewNodeStack m(r,n_view);
84 for (int i=0; i<x.size(); i++)
85 if (match(m,view[i]))
86 n_matched++;
87 }
88
89 forceinline void
90 Graph::sync(void) {

Callers 1

prune_upperMethod · 0.45

Calls 7

next_val_refMethod · 0.80
val_edges_refMethod · 0.80
revertMethod · 0.80
matchingMethod · 0.80
nFunction · 0.50
sizeMethod · 0.45
valMethod · 0.45

Tested by

no test coverage detected