9 #ifndef __DIADES__AUTOMATA__EXPERIMENTAL__BELIEFSTATE__HH 10 #define __DIADES__AUTOMATA__EXPERIMENTAL__BELIEFSTATE__HH 22 namespace Experimental
25 template<
typename StateMachine>
69 template<
class InputStateIterator>
107 template<
typename IsGoal>
120 result->insertState(trans.target());
134 template<
typename IsGoal>
147 result->insertState(trans.source());
170 result->insertState(trans.target());
192 result->insertState(trans.source());
215 result->insertState(trans.target());
236 result->insertState(trans.source());
249 template<
typename Predicate>
260 if(predicate(trans.target()))
262 result->insertState(trans.target());
275 template<
typename Predicate>
286 if(predicate(trans.source()))
288 result->insertState(trans.source());
328 template<
typename TransitionPredicate,
typename TransitionInsertIterator>
331 TransitionInsertIterator transInsertIterator,
332 TransitionInsertIterator targetTransInsertIterator)
337 targetTransInsertIterator);
376 template<
typename IsGoal,
typename IsForb
idden,
typename TransitionInsertIterator>
379 TransitionInsertIterator transInsertIterator,
380 TransitionInsertIterator targetTransInsertIterator)
386 std::stack<Transition> visitingTransitions;
387 list<Transition> resultTransitions;
396 visitingTransitions.push(t);
400 while (!visitingTransitions.empty()) {
401 auto current = visitingTransitions.top();
402 visitingTransitions.pop();
411 if(!isForbidden(t) && visited[t] ==0)
413 visitingTransitions.push(t);
419 resultTransitions.push_back(
current);
423 while(!resultTransitions.empty())
425 result->insertState(resultTransitions.front().target());
427 std::stack<Transition> visitingTransitions2;
428 visitingTransitions2.push(resultTransitions.front());
429 while (!visitingTransitions2.empty()) {
430 auto current = visitingTransitions2.top();
431 visitingTransitions2.pop();
436 *targetTransInsertIterator++=
current;
440 *transInsertIterator++=
current;
448 visitingTransitions2.push(t);
454 resultTransitions.pop_front();
465 template<
typename Fsm>
473 template<
typename Fsm>
481 template<
typename Fsm>
OutputEventTransitionIterator outputEventTransitionBegin(State s, const EventPropertyId &e) const
Diades::Graph::ConstNodeMap< Type > CstStMap
Diades::Graph::Edge Transition
SharedPtr nextBeliefState() const
Diades::Graph::Node State
OutputTransitionIterator outputTransitionBegin(State s) const
InputTransitionIterator inputTransitionBegin(State s) const
void insertStates(InputStateIterator first, InputStateIterator last)
CstStMap< BsPtr< Fsm > > CstBsMap
std::shared_ptr< BeliefState > SharedPtr
InputEventTransitionIterator inputEventTransitionEnd(State s, const EventPropertyId &e) const
typename BeliefState< Fsm >::SharedPtr BsPtr
SharedPtr nextReachableBeliefState(TransitionPredicate isGoal, TransitionInsertIterator transInsertIterator, TransitionInsertIterator targetTransInsertIterator)
nextReachableBeliefState
BeliefState(const Fsm &fsm)
Iterator findNode(Node n) const
Namespace of the Diades project.
SharedPtr prevBeliefState() const
SharedPtr prevBeliefState(const EventPropertyId &event) const
OutputTransitionIterator outputTransitionEnd(State s) const
InputTransitionIterator inputTransitionEnd(State s) const
_EventPropertyId EventPropertyId
void insertState(State s)
Graph::Graph & behaviour()
ConstIterator on the Net.
SharedPtr prevPredicateBeliefState(IsGoal isGoal)
void removeState(State s)
typename Fsm::EventPropertyId EventPropertyId
OutputEventTransitionIterator outputEventTransitionEnd(State s, const EventPropertyId &e) const
SharedPtr prevBeliefState(Predicate predicate) const
SharedPtr nextReachableBeliefState(IsGoal isGoal, IsForbidden isForbidden, TransitionInsertIterator transInsertIterator, TransitionInsertIterator targetTransInsertIterator)
nextReachableBeliefState
SharedPtr nextPredicateBeliefState(IsGoal isGoal)
Diades::Graph::NodeMap< Type > StMap
InputEventTransitionIterator inputEventTransitionBegin(State s, const EventPropertyId &e) const
SharedPtr nextBeliefState(Predicate predicate) const
StMap< BsPtr< Fsm > > BsMap
Diades::Graph::GraphNodeSet Gns
typename Fsm::Transition Transition
Iterator findState(State s) const
typename Fsm::State State
void insertNodes(InputNodeIterator first, InputNodeIterator last)
SharedPtr nextBeliefState(const EventPropertyId &event) const