Finite state machine: Difference between revisions
→{{header|C++}}: Simplified example, minor variable renaming (for clarity)
(Made draft) |
(→{{header|C++}}: Simplified example, minor variable renaming (for clarity)) |
||
Line 21:
database;
State
public:
finite_state_machine()
Line 30:
set(State const& state)
{
}
State
get() const
{
return
}▼
void▼
clear()▼
{▼
database.clear();▼
}
void
Line 54 ⟶ 59:
{
auto const&
transitions = database[
found = transitions.find(transition);
if(found == transitions.end())
return false;
auto const&
set(
return true;
}
Line 80 ⟶ 85:
container.clear();
auto const&
if(
return false;
auto const&
transitions =
if(transitions.size() == 0)
return false;
for(auto const&
{
container.push_back(next.first);▼
auto const&
transition = iterator.first;
}
return true;
}
Line 96 ⟶ 105:
{
return get_valid_transitions(get(), container);
▲ }
▲ void
▲ clear()
▲ {
▲ database.clear();
}
};
Line 126 ⟶ 130:
machine.add("ready", "quit", "exit");
machine.add("ready", "deposit", "waiting");
machine.add("waiting", "
machine.add("waiting", "refund", "refunding");
machine.add("dispense", "remove", "ready");
machine.add("refunding", "ready");
machine.set("ready");
Line 139 ⟶ 142:
print("Please deposit coins.");
else if(state == "waiting")
print("Please
else if(state == "dispense")
print("Dispensed...please remove product from tray.");
Line 178 ⟶ 181:
[ready] Enter next transition (deposit, quit):
> deposit
Please
[waiting] Enter next transition (refund,
> refund
Refunding money...
Line 195 ⟶ 188:
[ready] Enter next transition (deposit, quit):
> deposit
Please
[waiting] Enter next transition (refund,
>
Dispensed...please remove product from tray.
[dispense] Enter next transition (remove
> remove
Please deposit coins.
|