TuringSim
C++ framework to simulate abstract computing models
simpleSymbolPattern.h
1 #pragma once
2 
3 #include <symbol/symbolPattern.h>
4 
5 namespace TuringSim::Symbol {
12  template <typename T>
13  class SimpleSymbolPattern : public SymbolPattern<T, void> {
14  public:
22  SimpleSymbolPattern(const T& acceptedLetter) :
23  acceptedLetter(acceptedLetter)
24  {}
25 
34  virtual bool match(const T& letter) const noexcept override {
35  return acceptedLetter == letter;
36  }
37 
41  const T& getLetter() const {
42  return acceptedLetter;
43  }
44 
49  bool operator<(const SimpleSymbolPattern& other) const {
50  return acceptedLetter < other.acceptedLetter;
51  }
52 
53  private:
54  T acceptedLetter;
55  };
56 }
TuringSim::Symbol::SimpleSymbolPattern::operator<
bool operator<(const SimpleSymbolPattern &other) const
Strict total order.
Definition: simpleSymbolPattern.h:49
TuringSim::Symbol::SimpleSymbolPattern::match
virtual bool match(const T &letter) const noexcept override
Test if a symbol matches the symbol.
Definition: simpleSymbolPattern.h:34
TuringSim::Symbol::SimpleSymbolPattern::SimpleSymbolPattern
SimpleSymbolPattern(const T &acceptedLetter)
Constructor.
Definition: simpleSymbolPattern.h:22
TuringSim::Symbol
The namespace for symbol patterns.
Definition: simpleSymbolPattern.h:5
TuringSim::Symbol::SimpleSymbolPattern::getLetter
const T & getLetter() const
Get the accepted letter, for optimized containers.
Definition: simpleSymbolPattern.h:41
TuringSim::Symbol::SymbolPattern
Base class to store any symbol pattern on one letter.
Definition: symbolPattern.h:13
TuringSim::Symbol::SimpleSymbolPattern
Class to encode symbol pattern made of only one symbol.
Definition: simpleSymbolPattern.h:13