Om
default_program.hpp
Go to the documentation of this file.
1 
15 #ifndef Om_Language_DefaultProgram_
16 
17  #define Om_Language_DefaultProgram_ \
18  Om::Language::DefaultProgram
19 
20  #include "om/default_giveable.hpp"
22  #include "om/language/program.hpp"
23  #include "om/taker.hpp"
24 
25 namespace Om {
26 
27  namespace Language {
28 
29  // MARK: - Om::Language::DefaultProgram
30 
37  template <
38  typename ThisImplementation,
39  typename ThisInterface = Om::Language::Program
40  >
42  public DefaultConsumer<
43  ThisImplementation,
44  DefaultGiveable<
45  ThisImplementation,
46  ThisInterface
47  >
48  >,
49  public Taker<ThisImplementation> {
50 
51  public: // MARK: public (non-static)
52 
53  virtual ~DefaultProgram() = 0;
54 
55  using DefaultConsumer<
56  ThisImplementation,
58  ThisImplementation,
59  ThisInterface
60  >
61  >::Equals;
62 
63  virtual bool Equals(Program const &) const;
64 
65  virtual void TakeElements(Producer &);
66 
67  virtual void TakeElements(Producer const &);
68 
69  private: // MARK: private (non-static)
70 
72 
73  template <
74  typename TheCast,
75  typename TheProducer
76  >
77  void TakeProducer(TheProducer &);
78 
79  };
80 
81  }
82 
83 }
84 
86 
87 #endif
A partial implementation of Giveable.
A partial implementation of Consumer.
A partial implementation of Program.
virtual void TakeElements(Producer &)
Takes each Element of the argument.
DefaultProgram & operator=(DefaultProgram const &)
virtual bool Equals(Program const &) const
void TakeProducer(TheProducer &)
virtual void TakeElements(Producer const &)
This is an overloaded member function, provided for convenience. It differs from the above function o...
An Element giver; gives from the front.
Definition: producer.hpp:40
The Program implementation.
Definition: program.hpp:62
An object that can take (copy or swap) another of the same type.
Definition: taker.hpp:29
Om header file.
Om header file.
Om source file.
The Om library.
Definition: code_point.hpp:26
Om header file.
Om header file.