]> www.ginac.de Git - ginac.git/blobdiff - ginac/basic.cpp
Use initializer lists to construct container<>, lst.
[ginac.git] / ginac / basic.cpp
index 563dd7d5b6455fe9453885111bb0aac7a4259ed9..01d369716f30870d2bf8e0eeab2441278647e97c 100644 (file)
@@ -366,13 +366,13 @@ ex basic::collect(const ex & s, bool distributed) const
 
                        exmap cmap;
                        cmap[_ex1] = _ex0;
-                       for (const_iterator xi=x.begin(); xi!=x.end(); ++xi) {
+                       for (const auto & xi : x) {
                                ex key = _ex1;
-                               ex pre_coeff = *xi;
-                               for (lst::const_iterator li=l.begin(); li!=l.end(); ++li) {
-                                       int cexp = pre_coeff.degree(*li);
-                                       pre_coeff = pre_coeff.coeff(*li, cexp);
-                                       key *= pow(*li, cexp);
+                               ex pre_coeff = xi;
+                               for (auto & li : l) {
+                                       int cexp = pre_coeff.degree(li);
+                                       pre_coeff = pre_coeff.coeff(li, cexp);
+                                       key *= pow(li, cexp);
                                }
                                exmap::iterator ci = cmap.find(key);
                                if (ci != cmap.end())
@@ -382,8 +382,8 @@ ex basic::collect(const ex & s, bool distributed) const
                        }
 
                        exvector resv;
-                       for (exmap::const_iterator mi=cmap.begin(); mi != cmap.end(); ++mi)
-                               resv.push_back((mi->first)*(mi->second));
+                       for (auto & mi : cmap)
+                               resv.push_back((mi.first)*(mi.second));
                        return (new add(resv))->setflag(status_flags::dynallocated);
 
                } else {
@@ -421,7 +421,7 @@ ex basic::eval(int level) const
 struct evalf_map_function : public map_function {
        int level;
        evalf_map_function(int l) : level(l) {}
-       ex operator()(const ex & e) { return evalf(e, level); }
+       ex operator()(const ex & e) override { return evalf(e, level); }
 };
 
 /** Evaluate object numerically. */
@@ -443,7 +443,7 @@ ex basic::evalf(int level) const
 
 /** Function object to be applied by basic::evalm(). */
 struct evalm_map_function : public map_function {
-       ex operator()(const ex & e) { return evalm(e); }
+       ex operator()(const ex & e) override { return evalm(e); }
 } map_evalm;
 
 /** Evaluate sums, products and integer powers of matrices. */
@@ -457,7 +457,7 @@ ex basic::evalm() const
 
 /** Function object to be applied by basic::eval_integ(). */
 struct eval_integ_map_function : public map_function {
-       ex operator()(const ex & e) { return eval_integ(e); }
+       ex operator()(const ex & e) override { return eval_integ(e); }
 } map_eval_integ;
 
 /** Evaluate integrals, if result is known. */
@@ -548,9 +548,9 @@ bool basic::match(const ex & pattern, exmap& repl_lst) const
                // Wildcard matches anything, but check whether we already have found
                // a match for that wildcard first (if so, the earlier match must be
                // the same expression)
-               for (exmap::const_iterator it = repl_lst.begin(); it != repl_lst.end(); ++it) {
-                       if (it->first.is_equal(pattern))
-                               return is_equal(ex_to<basic>(it->second));
+               for (auto & it : repl_lst) {
+                       if (it.first.is_equal(pattern))
+                               return is_equal(ex_to<basic>(it.second));
                }
                repl_lst[pattern] = *this;
                return true;
@@ -593,19 +593,16 @@ bool basic::match(const ex & pattern, exmap& repl_lst) const
 /** Helper function for subs(). Does not recurse into subexpressions. */
 ex basic::subs_one_level(const exmap & m, unsigned options) const
 {
-       exmap::const_iterator it;
-
        if (options & subs_options::no_pattern) {
-               ex thisex = *this;
-               it = m.find(thisex);
+               auto it = m.find(*this);
                if (it != m.end())
                        return it->second;
-               return thisex;
+               return *this;
        } else {
-               for (it = m.begin(); it != m.end(); ++it) {
+               for (auto & it : m) {
                        exmap repl_lst;
-                       if (match(ex_to<basic>(it->first), repl_lst))
-                               return it->second.subs(repl_lst, options | subs_options::no_pattern);
+                       if (match(ex_to<basic>(it.first), repl_lst))
+                               return it.second.subs(repl_lst, options | subs_options::no_pattern);
                        // avoid infinite recursion when re-substituting the wildcards
                }
        }
@@ -706,7 +703,7 @@ ex basic::eval_ncmul(const exvector & v) const
 struct derivative_map_function : public map_function {
        const symbol &s;
        derivative_map_function(const symbol &sym) : s(sym) {}
-       ex operator()(const ex & e) { return diff(e, s); }
+       ex operator()(const ex & e) override { return diff(e, s); }
 };
 
 /** Default implementation of ex::diff(). It maps the operation on the
@@ -800,7 +797,7 @@ unsigned basic::calchash() const
 struct expand_map_function : public map_function {
        unsigned options;
        expand_map_function(unsigned o) : options(o) {}
-       ex operator()(const ex & e) { return e.expand(options); }
+       ex operator()(const ex & e) override { return e.expand(options); }
 };
 
 /** Expand expression, i.e. multiply it out and return the result as a new