From 241b2c9576afab416d6e64f7f57546408a0fc1db Mon Sep 17 00:00:00 2001 From: Mihai Galos Date: Tue, 8 Mar 2022 17:47:02 +0100 Subject: [PATCH] Add state machine example --- examples/statemachine/statemachine.v | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 examples/statemachine/statemachine.v diff --git a/examples/statemachine/statemachine.v b/examples/statemachine/statemachine.v new file mode 100644 index 0000000000..16a24b9003 --- /dev/null +++ b/examples/statemachine/statemachine.v @@ -0,0 +1,33 @@ +import datatypes.fsm + +struct MyReceiver { +mut: + data []string +} + +fn main() { + mut receiver := &MyReceiver{} + mut s := fsm.new() + s.add_state('A', on_state_entry, on_state_run, on_state_exit) + s.add_state('B', on_state_entry, on_state_run, on_state_exit) + s.add_transition('A', 'B', condition_transition) + s.run(receiver) + s.run(receiver) + s.run(receiver) +} + +fn on_state_entry(mut receiver MyReceiver) { + println('on_state_entry') +} + +fn on_state_run(mut receiver MyReceiver) { + println('on_state_run') +} + +fn on_state_exit(mut receiver MyReceiver) { + println('on_state_exit') +} + +fn condition_transition(receiver &MyReceiver) bool { + return true +}