15 #ifndef Om_Language_Operation_DefaultIncompleteOperation_
26 template <typename ThisImplementation>
29 Om::Language::Operation::DefaultIncompleteOperation<ThisImplementation>
35 static Operator
const theOperator(
36 ThisImplementation::GetName()
42 inline void Type_::Give(Evaluation & theEvaluation) {
43 theEvaluation.TakeOperation(
44 std::auto_ptr<ThisImplementation>(
new ThisImplementation)
51 inline Type_::~DefaultIncompleteOperation() {}
54 inline void Type_::GiveElements(Consumer & theConsumer) {
56 dynamic_cast<ThisImplementation *
>(
this)
58 ThisImplementation::GiveElements(
59 static_cast<ThisImplementation &
>(*
this),
65 inline void Type_::GiveElements(Consumer & theConsumer)
const {
67 dynamic_cast<ThisImplementation
const *
>(
this)
69 ThisImplementation::GiveElements(
70 static_cast<ThisImplementation
const &
>(*
this),
76 inline bool Type_::ParseQuotedElements(
77 Evaluation & theEvaluation,
81 theLiteral.ParseElements(theReader);
82 return this->TakeQuotedElements(
89 inline bool Type_::TakeElement(
90 Evaluation & theEvaluation,
97 dynamic_cast<ThisImplementation *
>(
this)
99 return static_cast<ThisImplementation &
>(*this).TakeOperand(
106 inline bool Type_::TakeElement(
107 Evaluation & theEvaluation,
108 Operand
const & theOperand
111 !theOperand.IsEmpty()
114 dynamic_cast<ThisImplementation *
>(
this)
116 return static_cast<ThisImplementation &
>(*this).TakeOperand(
123 inline bool Type_::TakeQuotedElements(
124 Evaluation & theEvaluation,
125 Producer & theProducer
128 dynamic_cast<ThisImplementation *
>(
this)
130 return static_cast<ThisImplementation &
>(*this).TakeQuotedProducer(
137 inline bool Type_::TakeQuotedElements(
138 Evaluation & theEvaluation,
139 Producer
const & theProducer
142 dynamic_cast<ThisImplementation *
>(
this)
144 return static_cast<ThisImplementation &
>(*this).TakeQuotedProducer(
The Operator implementation.
std::auto_ptr< TheGiveable > Give(TheGiveable &)
Calls Move on the object.