Interpreter fixes & header cleanups
This branch primarily introduces fixes #126 (closed) in the analytic expression evaluator, but also contains a number of additional fixes for headers (mostly):
- Interpreted quantities with a leading negative factor that also include an exponent, such as
-x^2
, now evaluate correctly. - Additionally, the grammar has been adjusted so that the power operator is correctly evaluated with right-to-left associativity.
- The AEE has been renamed to
Interpreter
and its implementation has been hidden from the header file using the pimpl pattern, so that theboost::spirit
headers are not included in virtually every compilation unit. - The pimpl pattern has also been used to remove
boost::geometry
from theMeshGraph
andGeometry
headers. Caching of bounding boxes inside geometry entities has also been removed to reduce memory overhead, and is cached inside the MeshGraph rtree in any case. - A number of redundant (either non-compiled or unused) source files have been removed.
- The use of
boost
headers has been reduced significantly inLibUtilities
in order to further reduce compilation times. There is still room for improvement, mostly in the linear algebra headers. -
using namespace std
had once again crept into some of the headers after the fixes in !601 (merged). This has been removed, and a large number of incorrect namespace references in MMF have been removed.
This seems to have reduced compilation times of the 'full' build run on kingscross w/36 cores by around 20-25% as shown in timings below:
master
real 5m13.749s
user 101m8.848s
sys 11m44.260s
fix/interpreter
real 3m54.318s
user 71m30.488s
sys 8m0.540s
Edited by Dave Moxey