26 #ifndef Om_Language_Null_
28 #define Om_Language_Null_ \
34 #ifndef Om_Macro_Precompilation_
36 #include "boost/swap.hpp"
40 #define Om_Language_Null_GetName_() \
90 virtual std::auto_ptr<
94 virtual std::auto_ptr<
122 template <
typename TheOperand>
125 template <
typename TheOperator>
128 template <
typename TheProducer>
131 template <
typename TheSeparator>
An Element taker; takes at the back.
A partial implementation of Element.
A Program that contains a single elemental item (or none, when IsEmpty() returns true).
The Null Element implementation.
virtual bool Merge(Operator const &)
virtual void Swap(Null &)
virtual std::auto_ptr< Om::Source::Source< Element > > GetElementRange()
virtual void GiveElements(Consumer &)
virtual bool Equals(Program const &) const
virtual bool IsEmpty() const
virtual bool Equals(Element const &) const
virtual void TakeElements(Producer &)
Takes each Element of the argument.
void TakeOperand(TheOperand &)
virtual bool Merge(Separator const &)
virtual Program & operator*()
virtual bool Merge(Separator &)
void TakeSeparator(TheSeparator &)
virtual void ParseQuotedElements(Reader &)
virtual void TakeElements(Producer const &)
This is an overloaded member function, provided for convenience. It differs from the above function o...
virtual bool Merge(Operator &)
virtual void ParseElements(Reader &)
static char const * GetName()
Null(Om::Source::Source< CodePoint const > &)
Swallows the next CodePoint in the Source.
void TakeOperator(TheOperator &)
virtual std::auto_ptr< Om::Source::Source< Element const > > GetElementRange() const
virtual void GiveElements(Consumer &) const
Null & operator=(Null const &)
void TakeQuotedProducer(TheProducer &)
The Operator implementation.
An Element giver; gives from the front.
The Program implementation.
Produces each CodePoint until the end of the Source.
The Separator implementation.
Any object that items can be pulled from.
void swap(Om::Language::Expression &, Om::Language::Expression &)