15 #ifndef Om_Language_Operation_FrontPushOperation_
27 typename ThisProgram, \
28 typename ThisImplementation \
32 Om::Language::Operation::FrontPushOperation< \
40 template <
typename TheFrontPushOperation>
41 inline void Type_::GiveElements(
42 TheFrontPushOperation & theFrontPushOperation,
43 Consumer & theConsumer
45 theConsumer.TakeElement(
49 !theFrontPushOperation.thisProgram.IsEmpty()
51 theConsumer.TakeQuotedElements(theFrontPushOperation.thisProgram);
58 inline Type_::FrontPushOperation():
62 template <
typename TheProducer>
63 inline bool Type_::TakeQuotedProducer(
64 Evaluation & theEvaluation,
65 TheProducer & theProducer
68 this->thisProgram.IsEmpty()
70 this->thisProgram.TakeElements(theProducer);
72 this->thisProgram.IsEmpty()
79 this->thisProgram.TakeElements(theProducer);
80 theEvaluation.TakeQuotedProducer(this->thisProgram);
85 template <
typename TheOperand>
86 inline bool Type_::TakeOperand(
87 Evaluation & theEvaluation,
88 TheOperand & theOperand
93 return this->TakeQuotedProducer(
95 *theOperand.GetProgram()
103 static Operator
const theOperator(
104 ThisImplementation::GetName()
The Operator implementation.
std::auto_ptr< TheGiveable > Give(TheGiveable &)
Calls Move on the object.