26 #ifndef Om_Language_Literal_
28 #define Om_Language_Literal_ \
34 #ifndef Om_Macro_Precompilation_
36 #include "boost/ptr_container/ptr_deque.hpp"
37 #include "boost/swap.hpp"
41 #define Om_Language_Literal_GetName_() \
63 template <
typename ThisLiteral>
76 template <
typename TheElement>
83 template <
typename TheElement>
92 virtual std::auto_ptr<
108 template <
typename TheOperand>
111 template <
typename TheOperator>
114 template <
typename TheProducer>
117 template <
typename TheSeparator>
132 template <
typename TheElementIterator>
135 TheElementIterator theCurrent,
136 TheElementIterator
const theEnd
141 template <
typename TheAtom>
158 ElementDeque::iterator
177 ElementDeque::const_iterator
An Element taker; takes at the back.
A partial implementation of Program.
ElementRange(Literal const &)
The Literal Program implementation.
virtual void ParseQuotedElements(Reader &)
static char const * GetName()
virtual bool IsEmpty() const
Literal & operator=(Literal)
void TakeSeparator(TheSeparator &)
void TakeQuotedProducer(TheProducer &)
virtual void GiveElements(Consumer &) const
void TakeOperator(TheOperator &)
std::auto_ptr< Om::Source::Source< Element > > GetElementRange()
virtual void GiveElements(Consumer &)
void TakeOperand(TheOperand &)
ElementDeque thisElementDeque
void FrontGive(Consumer &)
virtual void ParseElements(Reader &)
void BackGive(Consumer &)
static void GiveElements(Consumer &theConsumer, TheElementIterator theCurrent, TheElementIterator const theEnd)
boost::ptr_deque< Element > ElementDeque
void BackGiveElement(Consumer &)
virtual std::auto_ptr< Om::Source::Source< Element const > > GetElementRange() const
void FrontGiveElement(Consumer &)
Produces each CodePoint until the end of the Source.
A range over a collection, starting from the front.
Any object that items can be pulled from.
void swap(Om::Language::Expression &, Om::Language::Expression &)