TuringSim
C++ framework to simulate abstract computing models
turingMachineTransition.h
1 #pragma once
2 
3 #include <memory/tapeLike.h>
4 #include <symbol/symbolPattern.h>
5 #include <transition/transition.h>
6 
11 
19  template<
20  typename StateType_,
21  typename SymbolType_,
22  typename ApplyHelperType_,
23  bool hasHalfTape = false
24  >
26  public Transition<StateType_, Memory::TapeLike<hasHalfTape, SymbolType_>, ApplyHelperType_> {
29  public:
30  using typename Transition_::StateType;
31  using typename Transition_::StorageType;
32  using typename Transition_::ApplyHelperType;
33 
37  typedef SymbolType_ SymbolType;
38 
42  typedef typename StorageType_::Movement Movement;
43 
49  typedef typename std::integral_constant<bool, hasHalfTape> HasHalfTape;
50 
51  static_assert(std::is_same_v<StateType, StateType_>);
52  static_assert(std::is_same_v<StorageType, Memory::TapeLike<hasHalfTape, SymbolType>>);
53  static_assert(std::is_same_v<ApplyHelperType, ApplyHelperType_>);
54  static_assert(std::is_same_v<typename Memory::TapeLike<hasHalfTape, SymbolType>::Movement, Movement>);
55 
58 
61 
64 
69 
74 
76  virtual ~TuringMachineTransition() override = default;
77  };
78 }
TuringSim::Transition::Turing::TuringMachineTransition::~TuringMachineTransition
virtual ~TuringMachineTransition() override=default
The default virtual destructor.
TuringSim::Transition::Transition::ApplyHelperType
ApplyHelperType_ ApplyHelperType
The type of apply helpers.
Definition: transition.h:82
TuringSim::Transition::Turing::TuringMachineTransition::TuringMachineTransition
TuringMachineTransition(const TuringMachineTransition &)=default
The default copy constructor.
TuringSim::Memory::TapeLike
std::conditional_t< isHalfTape, HalfTape::HalfTape< SymbolType >, Tape::Tape< SymbolType > > TapeLike
Definition: tapeLike.h:12
TuringSim::Transition::Turing
Transitions for Turing machines.
Definition: localTuringMachineTransition.h:6
TuringSim::Transition::Transition::StateType
StateType_ StateType
The type of states.
Definition: transition.h:72
TuringSim::Transition::Transition
Base class for transitions.
Definition: transition.h:67
TuringSim::Transition::Turing::TuringMachineTransition::TuringMachineTransition
TuringMachineTransition()=default
The default constructor.
TuringSim::Transition::Turing::TuringMachineTransition
Base class for Turing machine transitions.
Definition: turingMachineTransition.h:26
TuringSim::Transition::Turing::TuringMachineTransition::operator=
TuringMachineTransition & operator=(const TuringMachineTransition &)=default
The default copy assignment operator.
TuringSim::Transition::Turing::TuringMachineTransition::HasHalfTape
std::integral_constant< bool, hasHalfTape > HasHalfTape
Whether the tape is a half-tape or a full tape.
Definition: turingMachineTransition.h:49
TuringSim::Transition::Turing::TuringMachineTransition::SymbolType
SymbolType_ SymbolType
The type of symbols on the tape.
Definition: turingMachineTransition.h:37
TuringSim::Transition::Turing::TuringMachineTransition::operator=
TuringMachineTransition & operator=(TuringMachineTransition &&)=default
The default move assignment operator.
TuringSim::Transition::Turing::TuringMachineTransition::TuringMachineTransition
TuringMachineTransition(TuringMachineTransition &&)=default
The default move constructor.
TuringSim::Transition::Transition::StorageType
StorageType_ StorageType
The type of storage.
Definition: transition.h:77
TuringSim::Transition::Turing::TuringMachineTransition::Movement
StorageType_::Movement Movement
The type of movement on the tape.
Definition: turingMachineTransition.h:42