|
TuringSim
C++ framework to simulate abstract computing models
|
3 #include <memory/tapeLike.h>
4 #include <symbol/symbolPattern.h>
5 #include <transition/transition.h>
22 typename ApplyHelperType_,
23 bool hasHalfTape =
false
26 public Transition<StateType_, Memory::TapeLike<hasHalfTape, SymbolType_>, ApplyHelperType_> {
42 typedef typename StorageType_::Movement
Movement;
49 typedef typename std::integral_constant<bool, hasHalfTape>
HasHalfTape;
51 static_assert(std::is_same_v<StateType, StateType_>);
53 static_assert(std::is_same_v<ApplyHelperType, ApplyHelperType_>);
virtual ~TuringMachineTransition() override=default
The default virtual destructor.
ApplyHelperType_ ApplyHelperType
The type of apply helpers.
TuringMachineTransition(const TuringMachineTransition &)=default
The default copy constructor.
std::conditional_t< isHalfTape, HalfTape::HalfTape< SymbolType >, Tape::Tape< SymbolType > > TapeLike
Transitions for Turing machines.
StateType_ StateType
The type of states.
Base class for transitions.
TuringMachineTransition()=default
The default constructor.
Base class for Turing machine transitions.
TuringMachineTransition & operator=(const TuringMachineTransition &)=default
The default copy assignment operator.
std::integral_constant< bool, hasHalfTape > HasHalfTape
Whether the tape is a half-tape or a full tape.
SymbolType_ SymbolType
The type of symbols on the tape.
TuringMachineTransition & operator=(TuringMachineTransition &&)=default
The default move assignment operator.
TuringMachineTransition(TuringMachineTransition &&)=default
The default move constructor.
StorageType_ StorageType
The type of storage.
StorageType_::Movement Movement
The type of movement on the tape.