X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Fex.h;h=3070b7ada020d68c917907b77434315b8992c12e;hb=9f86a69017e43c8054ee28e022183f224c6a077b;hp=60ffa12934047f2054e3549be071d77849c6ea1a;hpb=4cf53676d7823ec3c55a90df7723f7f1492a95b2;p=ginac.git diff --git a/ginac/ex.h b/ginac/ex.h index 60ffa129..3070b7ad 100644 --- a/ginac/ex.h +++ b/ginac/ex.h @@ -65,10 +65,11 @@ class const_preorder_iterator; class const_postorder_iterator; -/** Lightweight wrapper for GiNaC's symbolic objects. Basically all it does is - * to hold a pointer to the other objects, manage the reference counting and - * provide methods for manipulation of these objects. (Some people call such - * a thing a proxy class.) */ +/** Lightweight wrapper for GiNaC's symbolic objects. It holds a pointer to + * the other object in order to do garbage collection by the method of + * reference counting. I.e., it is a smart pointer. Also, the constructor + * ex::ex(const basic & other) calls the methods that do automatic + * evaluation. E.g., x-x turns automatically into 0. */ class ex { friend class archive_node; friend inline bool are_ex_trivially_equal(const ex &, const ex &); @@ -686,6 +687,7 @@ struct ex_swap : public std::binary_function { // 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