15 #ifndef Om_Language_Element_
28 inline Type_::~Element() {}
32 throw std::logic_error(
"Pure virtual function called.");
37 throw std::logic_error(
"Pure virtual function called.");
48 inline bool Type_::Equals(Element
const &)
const {
50 throw std::logic_error(
"Pure virtual function called.");
55 > Type_::GetElementRange() {
57 throw std::logic_error(
"Pure virtual function called.");
60 inline bool Type_::Merge(Operator &) {
64 inline bool Type_::Merge(Operator
const &) {
68 inline bool Type_::Merge(Separator &) {
72 inline bool Type_::Merge(Separator
const &) {
79 Type_
const & theFirst,
80 Type_
const & theSecond
82 return theFirst.Equals(theSecond);
86 Type_
const & theFirst,
87 Type_
const & theSecond
89 return !theFirst.Equals(theSecond);
93 return Copy(theCopyable).release();
The Program implementation.
Any object that items can be pulled from.
bool operator!=(DefaultAtom< TheImplementation > const &, DefaultAtom< TheImplementation > const &)
Atom * new_clone(Atom const &)
bool operator==(DefaultAtom< TheImplementation > const &, DefaultAtom< TheImplementation > const &)
std::auto_ptr< TheCopyable > Copy(TheCopyable const &)