15 #ifndef Om_Language_Pair_
35 inline Type_::~Pair() {}
41 inline void Type_::ClearOperand() {
42 this->thisOperand.Clear();
46 return this->thisOperand;
50 return this->thisOperator;
53 inline void Type_::GiveElements(Consumer & theConsumer) {
58 this->thisOperator.Clear();
59 this->thisOperand.Clear();
62 inline void Type_::GiveElements(Consumer & theConsumer)
const {
69 inline bool Type_::IsEmpty()
const {
71 this->thisOperator.IsEmpty() &&
72 this->thisOperand.IsEmpty()
76 template <
typename TheOperand>
77 inline void Type_::TakeOperand(TheOperand & theOperand) {
78 this->thisOperand.Take(theOperand);
81 template <
typename TheOperator>
82 inline void Type_::TakeOperator(TheOperator & theOperator) {
83 this->thisOperator.Take(theOperator);
86 template <
typename TheProducer>
87 inline void Type_::TakeQuotedProducer(TheProducer & theProducer) {
88 this->thisOperand.SetProgram(
89 theProducer.GiveProgram()
95 template <
typename ThePair>
96 inline void Type_::GiveElements(
98 Consumer & theConsumer
101 !thePair.thisOperator.IsEmpty()
103 theConsumer.TakeElement(thePair.thisOperator);
106 !thePair.thisOperand.IsEmpty()
108 theConsumer.TakeElement(thePair.thisOperand);
The Operand implementation.
The Operator implementation.
An Operator and an Operand.