X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fbasic.cpp;h=59cd08f3b230fd045056c8cdefa003b797999cca;hp=f9f18f5ca13b8f6e0a82ba54b2a5a1ae4cba7991;hb=faf8c206bdcd01eee758103d56b83a634f787e7a;hpb=ee1ec9db30b446d2d6348df2ce758ed2ff62a310 diff --git a/ginac/basic.cpp b/ginac/basic.cpp index f9f18f5c..59cd08f3 100644 --- a/ginac/basic.cpp +++ b/ginac/basic.cpp @@ -3,7 +3,7 @@ * Implementation of GiNaC's ABC. */ /* - * GiNaC Copyright (C) 1999-2009 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2015 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -240,7 +240,7 @@ ex basic::op(size_t i) const throw(std::range_error(std::string("basic::op(): ") + class_name() + std::string(" has no operands"))); } -/** Return modifyable operand/member at position i. */ +/** Return modifiable operand/member at position i. */ ex & basic::let_op(size_t i) { ensure_if_modifiable(); @@ -297,12 +297,12 @@ ex basic::map(map_function & f) const if (num == 0) return *this; - basic *copy = NULL; + basic *copy = nullptr; for (size_t i=0; ilet_op(i) = n; } @@ -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 { @@ -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(it->second)); + for (auto & it : repl_lst) { + if (it.first.is_equal(pattern)) + return is_equal(ex_to(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(it->first), repl_lst)) - return it->second.subs(repl_lst, options | subs_options::no_pattern); + if (match(ex_to(it.first), repl_lst)) + return it.second.subs(repl_lst, options | subs_options::no_pattern); // avoid infinite recursion when re-substituting the wildcards } }