nodecursor.hh gecode/gist/visualnode.hh gecode/gist/nodecursor.hpp /usr/include/gecode/gist/drawingcursor.hh /usr/include/gecode/gist/layoutcursor.hh Gecode::Gist::NodeCursor Gecode::Gist::HideFailedCursor Gecode::Gist::UnhideAllCursor Gecode::Gist::UnstopAllCursor Gecode::Gist::NextSolCursor Gecode::Gist::StatCursor Gecode::Gist::BranchLabelCursor Gecode::Gist::DisposeCursor Gecode Gecode::Gist /*-*-mode:C++;c-basic-offset:2;indent-tabs-mode:nil-*-*/ /* *Mainauthors: *GuidoTack<tack@gecode.org> * *Copyright: *GuidoTack,2006 * *Lastmodified: *$Date:2013-05-0609:02:17+0200(Mon,06May2013)$by$Author:tack$ *$Revision:13613$ * *ThisfileispartofGecode,thegenericconstraint *developmentenvironment: *http://www.gecode.org * *Permissionisherebygranted,freeofcharge,toanypersonobtaining *acopyofthissoftwareandassociateddocumentationfiles(the *"Software"),todealintheSoftwarewithoutrestriction,including *withoutlimitationtherightstouse,copy,modify,merge,publish, *distribute,sublicense,and/orsellcopiesoftheSoftware,andto *permitpersonstowhomtheSoftwareisfurnishedtodoso,subjectto *thefollowingconditions: * *Theabovecopyrightnoticeandthispermissionnoticeshallbe *includedinallcopiesorsubstantialportionsoftheSoftware. * *THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND, *EXPRESSORIMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOF *MERCHANTABILITY,FITNESSFORAPARTICULARPURPOSEAND *NONINFRINGEMENT.INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBE *LIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,WHETHERINANACTION *OFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOFORINCONNECTION *WITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHESOFTWARE. * */ #ifndefGECODE_GIST_NODECURSOR_HH #defineGECODE_GIST_NODECURSOR_HH #include<gecode/gist/visualnode.hh> namespaceGecode{namespaceGist{ template<classNode> classNodeCursor{ private: Node*_startNode; Node*_node; unsignedint_alternative; protected: consttypenameNode::NodeAllocator&na; voidnode(Node*n); Node*startNode(void); public: NodeCursor(Node*theNode,consttypenameNode::NodeAllocator&na); Node*node(void); unsignedintalternative(void); voidalternative(unsignedinta); boolmayMoveUpwards(void); voidmoveUpwards(void); boolmayMoveDownwards(void); voidmoveDownwards(void); boolmayMoveSidewards(void); voidmoveSidewards(void); }; classHideFailedCursor:publicNodeCursor<VisualNode>{ private: boolonlyDirty; public: HideFailedCursor(VisualNode*theNode, constVisualNode::NodeAllocator&na, boolonlyDirtyNodes); boolmayMoveDownwards(void); voidprocessCurrentNode(void); }; classUnhideAllCursor:publicNodeCursor<VisualNode>{ public: UnhideAllCursor(VisualNode*theNode, constVisualNode::NodeAllocator&na); voidprocessCurrentNode(void); }; classUnstopAllCursor:publicNodeCursor<VisualNode>{ public: UnstopAllCursor(VisualNode*theNode, constVisualNode::NodeAllocator&na); voidprocessCurrentNode(void); }; classNextSolCursor:publicNodeCursor<VisualNode>{ private: boolback; boolnotOnSol(void); public: NextSolCursor(VisualNode*theNode,boolbackwards, constVisualNode::NodeAllocator&na); voidprocessCurrentNode(void); boolmayMoveUpwards(void); boolmayMoveDownwards(void); voidmoveDownwards(void); boolmayMoveSidewards(void); voidmoveSidewards(void); }; classStatCursor:publicNodeCursor<VisualNode>{ private: intcurDepth; public: intdepth; intfailed; intsolved; intchoice; intopen; StatCursor(VisualNode*theNode, constVisualNode::NodeAllocator&na); voidprocessCurrentNode(void); voidmoveDownwards(void); voidmoveUpwards(void); }; classBranchLabelCursor:publicNodeCursor<VisualNode>{ private: VisualNode::NodeAllocator&_na; BestNode*_curBest; int_c_d; int_a_d; bool_clear; public: BranchLabelCursor(VisualNode*theNode,BestNode*curBest, intc_d,inta_d,boolclear, VisualNode::NodeAllocator&na); voidprocessCurrentNode(void); }; classDisposeCursor:publicNodeCursor<VisualNode>{ public: DisposeCursor(VisualNode*theNode, constVisualNode::NodeAllocator&na); voidprocessCurrentNode(void); }; }} #include<gecode/gist/nodecursor.hpp> #endif //STATISTICS:gist-any