Om
translate_operation.hpp
Go to the documentation of this file.
1 
15 #ifndef Om_Language_Operation_TranslateOperation_
16 
17  #define Om_Language_Operation_TranslateOperation_ \
18  Om::Language::Operation::TranslateOperation
19 
20  #include "om/language/lexicon.hpp"
22 
23 namespace Om {
24 
25  namespace Language {
26 
27  namespace Operation {
28 
29  // MARK: - Om::Language::Operation::TranslateOperation
30 
35  template <typename ThisImplementation>
37  public DefaultIncompleteOperation<ThisImplementation> {
38 
39  public: // MARK: public (static)
40 
41  template <typename TheTranslateOperation>
42  static void GiveElements(
43  TheTranslateOperation &,
44  Consumer &
45  );
46 
47  public: // MARK: public (non-static)
48 
49  virtual ~TranslateOperation() = 0;
50 
51  template <typename TheOperand>
53  Evaluation &,
54  TheOperand &
55  );
56 
57  template <typename TheProducer>
59  Evaluation &,
60  TheProducer &
61  );
62 
63  protected: // MARK: protected (non-static)
64 
66 
67  boost::optional<Lexicon> thisLexicon;
68 
69  };
70 
71  }
72 
73  }
74 
75 }
76 
78 
79 #endif
An Element taker; takes at the back.
Definition: consumer.hpp:42
The current evaluation.
Definition: evaluation.hpp:42
A partial implementation of IncompleteOperation.
An Operation that applies each Translator to a Program.
bool TakeQuotedProducer(Evaluation &, TheProducer &)
static void GiveElements(TheTranslateOperation &, Consumer &)
bool TakeOperand(Evaluation &, TheOperand &)
Om header file.
The Om library.
Definition: code_point.hpp:26