1 
2 #pragma once
3 
4 #include "Props.hh"
5 #include "Storage.hh"
6 #include "Kernel.hh"
7 #include "Stopwatch.hh"
8 
9 #include "wstp.h"
10 
11 class MMA {
12 	public:
13 
14 		/// \ingroup scalar
15 		///
16 		/// Functionality to act with Mathematica functions on (parts of)
17 		/// Cadabra Ex expressions and read the result back into the same
18 		/// Ex. This duplicates some of the logic in PythonCdb.hh, in
19 		/// particular make_Ex_from_string, but it is best to keep these
20 		/// two completely separate.
21 
22 		static cadabra::Ex::iterator apply_mma(const cadabra::Kernel&, cadabra::Ex&, cadabra::Ex::iterator&,
23 		                                       const std::vector<std::string>& wrap, std::vector<std::string> args,
24 		                                       const std::string& method);
25 
26 
27 	private:
28 		static WSEnvironment stdenv;
29 		static WSLINK        lp;
30 
31 		static void setup_link();
32 		static void teardown_link();
33 	};
34