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

Method setNumberOfChildren

gecode/gist/node.cpp:41–76  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39namespace Gecode { namespace Gist {
40
41 void
42 Node::setNumberOfChildren(unsigned int n, NodeAllocator& na) {
43 assert(getTag() == UNDET);
44 switch (n) {
45 case 0:
46 setTag(LEAF);
47 break;
48 case 1:
49 childrenOrFirstChild =
50 reinterpret_cast<void*>(
51 static_cast<ptrdiff_t>(na.allocate(getIndex(na)) << 2));
52 noOfChildren = 1;
53 setTag(TWO_CHILDREN);
54 break;
55 case 2:
56 {
57 int idx = getIndex(na);
58 childrenOrFirstChild =
59 reinterpret_cast<void*>(
60 static_cast<ptrdiff_t>(na.allocate(idx) << 2));
61 noOfChildren = -na.allocate(idx);
62 setTag(TWO_CHILDREN);
63 }
64 break;
65 default:
66 {
67 int idx = getIndex(na);
68 noOfChildren = n;
69 int* children = heap.alloc<int>(n);
70 childrenOrFirstChild = static_cast<void*>(children);
71 setTag(MORE_CHILDREN);
72 for (unsigned int i=n; i--;)
73 children[i] = na.allocate(idx);
74 }
75 }
76 }
77
78}}
79

Callers

nothing calls this directly

Calls 1

allocateMethod · 0.45

Tested by

no test coverage detected