// Set implementation // Matt Perry (mjperry2@uiuc.edu) #include "element.h" #include "set.h" Element::Element() : type(NONE) {} Element::Element(float n) : type(NUMBER), number(n) {} Element::Element(string s) : type(STRING), str(s) {} Element::Element(const Set& s) : type(SET), set(new Set(s)) {} Element::Element(const Element& e) { *this = e; } Element::~Element() { if (type == SET && set != 0) { delete set; set = 0; } } Element& Element::operator=(const Element& e) { type = e.type; switch (e.type) { case NUMBER: number = e.number; break; case STRING: str = e.str; break; case SET: set = new Set(*e.set); break; } return *this; } bool Element::operator==(const Element& e) const { if (type != e.type) return false; switch (type) { case NUMBER: return (number == e.number); break; case STRING: return (str == e.str); break; case SET: return (test_equal(*set, *e.set)); break; } } ostream& operator<<(ostream& os, const Element& e) { switch (e.type) { case Element::NUMBER: os << e.number; break; case Element::STRING: os << e.str; break; case Element::SET: os << *e.set; break; } return os; }