gv_fsm 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/templates.rb +23 -7
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6e2b60dc6b9b04ce5e69c1737103af124f756c56324a9c92193b35223acacf9e
|
|
4
|
+
data.tar.gz: 55ba355493f4e6ffe0ed6ea9a48174b1a478a024b6d07c6b3b4d4dafc9d4ebc3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 871eaa5cf354c80f516d31878efb9bea108ee55b76a04f3b4715bdc317e2eb8cb9b1005646248f9cff7838cb168aac7d120b8d3388d4be3cbf6ddf237426a0e0
|
|
7
|
+
data.tar.gz: 39e534fe925ac412a12b88c02e29bbfb106e3460509a7a4a1bbc077f7a6074e7b35f1071fb10151e8e96a1d08706b729919978efc025ee7361d7f6a3b5fd7d87
|
data/lib/templates.rb
CHANGED
|
@@ -442,7 +442,11 @@ public:
|
|
|
442
442
|
if (_states.find(state) == _states.end()) {
|
|
443
443
|
throw std::runtime_error("State not found: "s + state_names[state]);
|
|
444
444
|
}
|
|
445
|
-
|
|
445
|
+
state_t next = _states[state](*_data);
|
|
446
|
+
if (next == NO_CHANGE) {
|
|
447
|
+
next = state;
|
|
448
|
+
}
|
|
449
|
+
return next;
|
|
446
450
|
}
|
|
447
451
|
|
|
448
452
|
void operator()(<%= @prefix %>state_t from, <%= @prefix %>state_t to) {
|
|
@@ -453,12 +457,26 @@ public:
|
|
|
453
457
|
}
|
|
454
458
|
}
|
|
455
459
|
|
|
456
|
-
|
|
457
|
-
|
|
460
|
+
|
|
461
|
+
// Setup initial state links
|
|
462
|
+
void setup(state_t state) {
|
|
458
463
|
<%= ns %>::<%= self.sigint %>_requested = false;
|
|
459
|
-
<%= @prefix %>state_t prev_state = state;
|
|
460
464
|
_state.first = state;
|
|
461
465
|
_state.second = state;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// Evaluate the current state and update the next state
|
|
469
|
+
// to be used when main loop is customized (i.e., not using FSM::run())
|
|
470
|
+
state_t eval_state() {
|
|
471
|
+
(*this)(_state.first, _state.second);
|
|
472
|
+
_state.first = _state.second;
|
|
473
|
+
_state.second = (*this)(_state.second);
|
|
474
|
+
return _state.second;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// Run the FSM from a given state
|
|
478
|
+
void run(<%= @prefix %>state_t state, operation_fun operation = nullptr) {
|
|
479
|
+
setup(state);
|
|
462
480
|
<% if sigint then -%>
|
|
463
481
|
std::signal(SIGINT, [](int signum) {
|
|
464
482
|
<% if log == :syslog then -%>
|
|
@@ -471,9 +489,7 @@ public:
|
|
|
471
489
|
if (operation) {
|
|
472
490
|
operation(*_data);
|
|
473
491
|
}
|
|
474
|
-
(
|
|
475
|
-
_state.first = _state.second;
|
|
476
|
-
_state.second = (*this)(_state.second);
|
|
492
|
+
eval_state();
|
|
477
493
|
if (_timing_func) {
|
|
478
494
|
_timing_func();
|
|
479
495
|
}
|
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gv_fsm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Paolo Bosetti
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-01-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ruby-graphviz
|