Veheda is a finite state machine that operates off of functor registration with the machine. Two base structs are provided to derive from, state_function and filter_function, which allow interfacing with the finite state machine.
More information can be found at the project's homepage.