TuringSim
C++ framework to simulate abstract computing models
symbolPattern.h
1 #pragma once
2 
6 namespace TuringSim::Symbol {
12  template <typename SymbolType_, typename Context_>
13  class SymbolPattern {
14  public:
18  typedef SymbolType_ SymbolType;
22  typedef Context_ Context;
23 
25  SymbolPattern() = default;
27  SymbolPattern(const SymbolPattern&) = default;
39  virtual ~SymbolPattern() = default;
40 
46  virtual bool match(const SymbolType& symbol, const Context& context) const noexcept = 0;
47  };
48 
52  template <typename SymbolType_>
53  class SymbolPattern<SymbolType_, void> {
54  public:
58  typedef SymbolType_ SymbolType;
62  typedef void Context;
63 
65  SymbolPattern() = default;
67  SymbolPattern(const SymbolPattern&) = default;
79  virtual ~SymbolPattern() = default;
80 
85  virtual bool match(const SymbolType& symbol) const noexcept = 0;
86  };
87 }
TuringSim::Symbol::SymbolPattern::operator=
SymbolPattern & operator=(SymbolPattern &&)=default
The default move assignment operator.
TuringSim::Symbol::SymbolPattern< SymbolType_, void >::SymbolPattern
SymbolPattern()=default
The default constructor.
TuringSim::Symbol::SymbolPattern< SymbolType_, void >::SymbolPattern
SymbolPattern(const SymbolPattern &)=default
The default copy constructor.
TuringSim::Symbol::SymbolPattern::SymbolType
SymbolType_ SymbolType
The type of symbols.
Definition: symbolPattern.h:18
TuringSim::Symbol
The namespace for symbol patterns.
Definition: simpleSymbolPattern.h:5
TuringSim::Symbol::SymbolPattern< SymbolType_, void >::Context
void Context
void, for compatibility with the regular case.
Definition: symbolPattern.h:62
TuringSim::Symbol::SymbolPattern::SymbolPattern
SymbolPattern()=default
The default constructor.
TuringSim::Symbol::SymbolPattern::Context
Context_ Context
The type of context.
Definition: symbolPattern.h:22
TuringSim::Symbol::SymbolPattern< SymbolType_, void >::~SymbolPattern
virtual ~SymbolPattern()=default
The default virtual destructor.
TuringSim::Symbol::SymbolPattern::SymbolPattern
SymbolPattern(const SymbolPattern &)=default
The default copy constructor.
TuringSim::Symbol::SymbolPattern< SymbolType_, void >::operator=
SymbolPattern & operator=(const SymbolPattern &)=default
The default copy assignment operator.
TuringSim::Symbol::SymbolPattern< SymbolType_, void >::match
virtual bool match(const SymbolType &symbol) const noexcept=0
Test whether a symbol match the pattern.
TuringSim::Symbol::SymbolPattern::match
virtual bool match(const SymbolType &symbol, const Context &context) const noexcept=0
Test whether a symbol match the pattern, given a context.
TuringSim::Symbol::SymbolPattern
Base class to store any symbol pattern on one letter.
Definition: symbolPattern.h:13
TuringSim::Symbol::SymbolPattern::SymbolPattern
SymbolPattern(SymbolPattern &&)=default
The default move constructor.
TuringSim::Symbol::SymbolPattern< SymbolType_, void >::SymbolType
SymbolType_ SymbolType
The type of symbols.
Definition: symbolPattern.h:58
TuringSim::Symbol::SymbolPattern< SymbolType_, void >::SymbolPattern
SymbolPattern(SymbolPattern &&)=default
The default move constructor.
TuringSim::Symbol::SymbolPattern< SymbolType_, void >::operator=
SymbolPattern & operator=(SymbolPattern &&)=default
The default move assignment operator.
TuringSim::Symbol::SymbolPattern::~SymbolPattern
virtual ~SymbolPattern()=default
The default virtual destructor.
TuringSim::Symbol::SymbolPattern::operator=
SymbolPattern & operator=(const SymbolPattern &)=default
The default copy assignment operator.