1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
#pragma once
#include "Algorithm.hh"
namespace cadabra {
/// \ingroup algorithms
///
/// Functionality to act with Mathematica on all scalar parts of an
/// expression, and keep the result in-place. This is a higher-level
/// thing than 'mma::apply' in the MMACdb.cc module.
class map_mma : public Algorithm {
public:
map_mma(const Kernel&, Ex&, const std::string& head);
virtual bool can_apply(iterator);
virtual result_t apply(iterator&);
private:
std::string head_;
std::vector<Ex::iterator> left;
std::set<Ex::iterator> index_factors;
};
}
|