#include <cstddef> // for size_t
#include <vector>
+#include <set>
#include <map>
// CINT needs <algorithm> to work properly with <vector>
#include <algorithm>
class print_context;
typedef std::vector<ex> exvector;
+typedef std::set<ex, ex_is_less> exset;
typedef std::map<ex, ex, ex_is_less> exmap;
// Define this to enable some statistical output for comparisons and hashing
// Make it possible to print exvectors and exmaps
std::ostream & operator<<(std::ostream & os, const exvector & e);
+std::ostream & operator<<(std::ostream & os, const exset & e);
std::ostream & operator<<(std::ostream & os, const exmap & e);
// wrapper functions around member functions
return os;
}
+std::ostream & operator<<(std::ostream & os, const exset & e)
+{
+ print_context *p = get_print_context(os);
+ exset::const_iterator i = e.begin();
+ exset::const_iterator send = e.end();
+
+ if (i==send) {
+ os << "<>";
+ return os;
+ }
+
+ os << "<";
+ while (true) {
+ if (p == 0)
+ i->print(print_dflt(os));
+ else
+ i->print(*p);
+ ++i;
+ if (i == send)
+ break;
+ os << ",";
+ }
+ os << ">";
+
+ return os;
+}
+
std::ostream & operator<<(std::ostream & os, const exmap & e)
{
print_context *p = get_print_context(os);