Enumerations and State
Enum State Machine
Enums are useful for tracking the current state of a small process.
Enum State Machine
enum_state_machine.cpp
#include <iostream>
#include <string>
enum class DoorState {
Closed,
Open,
Locked
};
std::string name(DoorState state) {
if (state == DoorState::Closed) {
return "closed";
}
if (state == DoorState::Open) {
return "open";
}
return "locked";
}
DoorState toggle(DoorState state) {
if (state == DoorState::Closed) {
return DoorState::Open;
}
if (state == DoorState::Open) {
return DoorState::Closed;
}
return DoorState::Locked;
}
int main() {
DoorState state = ;
std::cout << "before=" << name(state) << std::endl;
state = toggle(state);
std::cout << "after=" << name(state) << std::endl;
return 0;
}
#include <iostream>
#include <string>
enum class DoorState {
Closed,
Open,
Locked
};
std::string name(DoorState state) {
if (state == DoorState::Closed) {
return "closed";
}
if (state == DoorState::Open) {
return "open";
}
return "locked";
}
DoorState toggle(DoorState state) {
if (state == DoorState::Closed) {
return DoorState::Open;
}
if (state == DoorState::Open) {
return DoorState::Closed;
}
return DoorState::Locked;
}
int main() {
DoorState state = ;
std::cout << "before=" << name(state) << std::endl;
state = toggle(state);
std::cout << "after=" << name(state) << std::endl;
return 0;
}
#include <iostream>
#include <string>
enum class DoorState {
Closed,
Open,
Locked
};
std::string name(DoorState state) {
if (state == DoorState::Closed) {
return "closed";
}
if (state == DoorState::Open) {
return "open";
}
return "locked";
}
DoorState toggle(DoorState state) {
if (state == DoorState::Closed) {
return DoorState::Open;
}
if (state == DoorState::Open) {
return DoorState::Closed;
}
return DoorState::Locked;
}
int main() {
DoorState state = ;
std::cout << "before=" << name(state) << std::endl;
state = toggle(state);
std::cout << "after=" << name(state) << std::endl;
return 0;
}
state machine
A state machine stores the current state and updates it according to a rule.