1: // Implementation of methods for class rs_ff_session. 05/26/98
2: // rj@elilabs.com
4: #include "rs_ff_session.H"
5: #include "rs_ff_state.H"
7: rs_ff_session::rs_ff_session(rs_ff_state* initial_state) // this is the only valid constructor
8: : current_state(initial_state) {
9: entry_action();
10: }
13: // Do this when we enter a new state
14: //
15: void rs_ff_session::entry_action(void) {
16: current_state->entry_action(this); // do the current state's entry_action
17: return;
18: }
21: // event handlers
23: // event S
24: //
25: void rs_ff_session::S(void) {
26: if (!current_state->S__guard(this)) return;
27: current_state->S__exit_action(this);
28: current_state = current_state->S__next_state();
29: entry_action();
30: return;
31: }
33: // event Sbar
34: //
35: void rs_ff_session::Sbar(void) {
36: if (!current_state->Sbar__guard(this)) return;
37: current_state->Sbar__exit_action(this);
38: current_state = current_state->Sbar__next_state();
39: entry_action();
40: return;
41: }
43: // event R
44: //
45: void rs_ff_session::R(void) {
46: if (!current_state->R__guard(this)) return;
47: current_state->R__exit_action(this);
48: current_state = current_state->R__next_state();
49: entry_action();
50: return;
51: }
53: // event Rbar
54: //
55: void rs_ff_session::Rbar(void) {
56: if (!current_state->Rbar__guard(this)) return;
57: current_state->Rbar__exit_action(this);
58: current_state = current_state->Rbar__next_state();
59: entry_action();
60: return;
61: }