TuringSim
C++ framework to simulate abstract computing models
amnesicMachineTransition.h
1 #pragma once
2 
3 #include <transition/transition.h>
4 
15  template<typename StateType_>
16  class AmnesicMachineTransition : public Transition<StateType_, std::monostate, std::monostate> {
18  public:
19  using typename Transition_::StateType;
20  using typename Transition_::StorageType;
21  using typename Transition_::ApplyHelperType;
22 
23  static_assert(std::is_same_v<StateType, StateType_>);
24  static_assert(std::is_same_v<StorageType, std::monostate>);
25  static_assert(std::is_same_v<ApplyHelperType, std::monostate>);
26 
29 
32 
35 
40 
45 
47  virtual ~AmnesicMachineTransition() override = default;
48 
49 #pragma clang diagnostic push
50 #pragma clang diagnostic ignored "-Wunused-parameter"
51 
58  virtual std::optional<ApplyHelperType>
59  match(const StateType& state, const StorageType& storage) const override final {
60  return this->matchFromState(state);
61  }
62 
69  virtual std::optional<ApplyHelperType> matchFromState(const StateType& state) const = 0;
70 
83  virtual StateType apply(const StateType& state, StorageType& storage, ApplyHelperType&& helper, bool& running) const override final {
84  return this->applyFromState(state, running);
85  }
86 #pragma clang diagnostic pop
87 
98  virtual StateType applyFromState(const StateType& state, bool& running) const = 0;
99  };
100 
101 }
TuringSim::Transition::Amnesic::AmnesicMachineTransition::apply
virtual StateType apply(const StateType &state, StorageType &storage, ApplyHelperType &&helper, bool &running) const override final
Apply a previously matching transition and return the new state.
Definition: amnesicMachineTransition.h:83
TuringSim::Transition::Amnesic::AmnesicMachineTransition
The transition base class for AmnesicMachine.
Definition: amnesicMachineTransition.h:16
TuringSim::Transition::Transition< StateType_, std::monostate, std::monostate >::ApplyHelperType
std::monostate ApplyHelperType
The type of apply helpers.
Definition: transition.h:82
TuringSim::Transition::Amnesic
Transitions for amnesic machines.
TuringSim::Transition::Amnesic::AmnesicMachineTransition::matchFromState
virtual std::optional< ApplyHelperType > matchFromState(const StateType &state) const =0
Test whether the transition matches a configuration. Returned optional is empty iff the transition do...
TuringSim::Transition::Amnesic::AmnesicMachineTransition::operator=
AmnesicMachineTransition & operator=(const AmnesicMachineTransition &)=default
The default copy assignment operator.
TuringSim::Transition::Amnesic::AmnesicMachineTransition::match
virtual std::optional< ApplyHelperType > match(const StateType &state, const StorageType &storage) const override final
Test whether the transition matches a configuration. Returned optional is empty iff the transition do...
Definition: amnesicMachineTransition.h:59
TuringSim::Transition::Transition< StateType_, std::monostate, std::monostate >::StateType
StateType_ StateType
The type of states.
Definition: transition.h:72
TuringSim::Transition::Transition
Base class for transitions.
Definition: transition.h:67
TuringSim::Transition::Amnesic::AmnesicMachineTransition::~AmnesicMachineTransition
virtual ~AmnesicMachineTransition() override=default
The default virtual destructor.
TuringSim::Transition::Amnesic::AmnesicMachineTransition::operator=
AmnesicMachineTransition & operator=(AmnesicMachineTransition &&)=default
The default move assignment operator.
TuringSim::Transition::Amnesic::AmnesicMachineTransition::AmnesicMachineTransition
AmnesicMachineTransition(const AmnesicMachineTransition &)=default
The default copy constructor.
TuringSim::Transition::Amnesic::AmnesicMachineTransition::AmnesicMachineTransition
AmnesicMachineTransition(AmnesicMachineTransition &&)=default
The default move constructor.
TuringSim::Transition::Amnesic::AmnesicMachineTransition::AmnesicMachineTransition
AmnesicMachineTransition()=default
The default constructor.
TuringSim::Transition::Amnesic::AmnesicMachineTransition::applyFromState
virtual StateType applyFromState(const StateType &state, bool &running) const =0
Apply a previously matching transition and return the new state, without irrelevant parameters.
TuringSim::Transition::Transition< StateType_, std::monostate, std::monostate >::StorageType
std::monostate StorageType
The type of storage.
Definition: transition.h:77