34namespace Gecode {
namespace Gist {
40 : _startNode(theNode), _node(theNode),
41 _alternative(theNode->getAlternative(na0)),
67 return _node != _startNode && !_node->
isRoot();
73 _node =
static_cast<Node*
>(_node->getParent(na));
74 if (_node->isRoot()) {
78 for (
int i=
p->getNumberOfChildren(); i--;) {
79 if (
p->getChild(na,i) == _node) {
97 _node = _node->getChild(na,0);
103 return (!_node->isRoot()) && (_node != _startNode) &&
104 (_alternative < _node->getParent(na)->getNumberOfChildren() - 1);
111 static_cast<Node*
>(_node->getParent(na)->getChild(na,++_alternative));
117 return (!onlyDirty ||
n->isDirty()) &&
119 (
n->hasSolvedChildren() ||
n->getNoOfOpenChildren(
na) > 0) &&
132 if (
n->getStatus() ==
BRANCH &&
133 !
n->hasSolvedChildren() &&
134 n->getNoOfOpenChildren(
na) == 0) {
136 n->setChildrenLayoutDone(
false);
163 if (
n->getStatus() ==
STOP) {
178 NextSolCursor::notOnSol(
void) {
228 curDepth(0), depth(0), failed(0), solved(0), choice(0), open(0) {}
233 switch (
n->getStatus()) {
257 int c_d,
int a_d,
bool clear,
260 _c_d(c_d), _a_d(a_d), _clear(clear) {}
270 n->getBranchLabel(_na,
p,
p->getChoice(),
273 if (
n->getNumberOfChildren() < 1 &&
int p
Number of positive literals for node type.
int n
Number of negative literals for node type.
struct Gecode::@603::NNF::@65::@67 a
For atomic nodes.
Static reference to the currently best space.
BranchLabelCursor(VisualNode *theNode, BestNode *curBest, int c_d, int a_d, bool clear, VisualNode::NodeAllocator &na)
Constructor.
void processCurrentNode(void)
void processCurrentNode(void)
Dispose node.
DisposeCursor(VisualNode *theNode, const VisualNode::NodeAllocator &na)
Constructor.
void processCurrentNode(void)
Process node.
HideFailedCursor(VisualNode *theNode, const VisualNode::NodeAllocator &na, bool onlyDirtyNodes)
Constructor.
bool mayMoveDownwards(void)
Test if the cursor may move to the first child node.
void processCurrentNode(void)
Do nothing.
bool mayMoveUpwards(void)
Test if the cursor may move to the parent node.
NextSolCursor(VisualNode *theNode, bool backwards, const VisualNode::NodeAllocator &na)
Constructor.
void moveSidewards(void)
Move cursor to the first sibling.
bool mayMoveDownwards(void)
Test if cursor may move to the first child node.
bool mayMoveSidewards(void)
Test if cursor may move to the first sibling.
void moveDownwards(void)
Move cursor to the first child node.
bool hasLabel(T *n) const
Return whether node n has a label.
void setLabel(T *n, const QString &l)
Set label of node n to l.
void clearLabel(T *n)
Remove label of node n.
A cursor that can be run over a tree.
const VisualNode::NodeAllocator & na
void moveDownwards(void)
Move cursor to the first child node.
bool mayMoveUpwards(void)
Test if the cursor may move to the parent node.
NodeCursor(Node *theNode, const typename Node::NodeAllocator &na)
Construct cursor, initially set to theNode.
Node * node(void)
Return current node.
unsigned int alternative(void)
Return current alternative.
Node * startNode(void)
Return start node.
void moveSidewards(void)
Move cursor to the first sibling.
bool mayMoveSidewards(void)
Test if cursor may move to the first sibling.
void moveUpwards(void)
Move cursor to the parent node.
bool mayMoveDownwards(void)
Test if cursor may move to the first child node.
Base class for nodes of the search tree.
unsigned int getNumberOfChildren(void) const
Return the number of children.
int getParent(void) const
Return the parent.
bool isRoot(void) const
Check if this node is the root of a tree.
bool hasSolvedChildren(void)
Return whether the subtree of this node has any solved children.
NodeStatus getStatus(void) const
Return current status of the node.
int choice
Number of choice nodes.
void moveDownwards(void)
Move cursor to the first child node.
int failed
Number of failed nodes.
StatCursor(VisualNode *theNode, const VisualNode::NodeAllocator &na)
Constructor.
int depth
Depth of the search tree.
void processCurrentNode(void)
Collect statistics.
int open
Number of open nodes.
int solved
Number of solved nodes.
void moveUpwards(void)
Move cursor to the parent node.
UnhideAllCursor(VisualNode *theNode, const VisualNode::NodeAllocator &na)
Constructor.
void processCurrentNode(void)
Process node.
void processCurrentNode(void)
Process node.
UnstopAllCursor(VisualNode *theNode, const VisualNode::NodeAllocator &na)
Constructor.
Node class that supports visual layout
void dispose(void)
Free allocated memory.
@ UNDETERMINED
Node that has not been explored yet.
@ FAILED
Node representing failure.
@ STOP
Node representing stop point.
@ SOLVED
Node representing a solution.
@ BRANCH
Node representing a branch.
Gecode toplevel namespace