#include "utils.h"
#include "hash_seed.h"
#include "indexed.h"
+#include "compiler.h"
#include <algorithm>
#include <iostream>
#include <iterator>
+#include <memory>
#include <stdexcept>
#include <string>
epvector evaled = evalchildren(level);
if (!evaled.empty())
- return (new expairseq(std::move(evaled), overall_coeff))->setflag(status_flags::dynallocated | status_flags::evaluated);
+ return dynallocate<expairseq>(std::move(evaled), overall_coeff).setflag(status_flags::evaluated);
else
return this->hold();
}
* @see expairseq::split_ex_to_pair() */
ex expairseq::recombine_pair_to_ex(const expair &p) const
{
- return lst(p.rest,p.coeff);
+ return lst{p.rest, p.coeff};
}
bool expairseq::expair_needs_further_processing(epp it)
}
if (needs_further_processing) {
- epvector v = seq;
- seq.clear();
+ // Clear seq and start over.
+ epvector v = std::move(seq);
construct_from_epvector(std::move(v));
}
}
}
if (needs_further_processing) {
- epvector v = seq;
- seq.clear();
+ // Clear seq and start over.
+ epvector v = std::move(seq);
construct_from_epvector(std::move(v));
}
}
seq.erase(itout,last);
if (needs_further_processing) {
- epvector v = seq;
- seq.clear();
+ // Clear seq and start over.
+ epvector v = std::move(seq);
construct_from_epvector(std::move(v));
}
}
* had to be changed. */
epvector expairseq::evalchildren(int level) const
{
- if (level==1)
+ if (likely(level==1))
return epvector(); // nothing had to be evaluated
if (level == -max_recursion_level)