From 1e79fecd9011e74cff04bb278b12a2dcf20112c2 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <github@naumov.de>
Date: Thu, 16 Apr 2020 22:34:50 +0200
Subject: [PATCH] [MaL] Use fwd. decl. of ConfigTree.

Saves ca. 35 unneeded includes (out of 260)
and 25s of compilation time (out of 149s).
---
 ChemistryLib/CreateChemicalSolverInterface.cpp     |  1 +
 MathLib/LinAlg/Eigen/EigenLinearSolver.h           |  7 ++++++-
 ...ldIrreversibleDamageOracleBoundaryCondition.cpp |  2 ++
 .../Python/PythonBoundaryCondition.cpp             |  2 ++
 ProcessLib/CentralDifferencesJacobianAssembler.cpp |  4 +++-
 Tests/MathLib/TestLinearSolver.cpp                 |  5 +++--
 Tests/NumLib/TestSerialLinearSolver.cpp            | 14 ++++++--------
 7 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/ChemistryLib/CreateChemicalSolverInterface.cpp b/ChemistryLib/CreateChemicalSolverInterface.cpp
index 415b69dbd10..bd080a09972 100644
--- a/ChemistryLib/CreateChemicalSolverInterface.cpp
+++ b/ChemistryLib/CreateChemicalSolverInterface.cpp
@@ -12,6 +12,7 @@
 
 #include <iphreeqc/src/src/phreeqcpp/cxxKinetics.h>
 
+#include "BaseLib/ConfigTree.h"
 #include "BaseLib/FileTools.h"
 #include "Common/CreateReactionRate.h"
 #include "MeshLib/Mesh.h"
diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.h b/MathLib/LinAlg/Eigen/EigenLinearSolver.h
index 6aef020f5ec..ae7305853c3 100644
--- a/MathLib/LinAlg/Eigen/EigenLinearSolver.h
+++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.h
@@ -10,11 +10,16 @@
 
 #pragma once
 
+#include <memory>
 #include <vector>
 
-#include "BaseLib/ConfigTree.h"
 #include "EigenOption.h"
 
+namespace BaseLib
+{
+class ConfigTree;
+}
+
 namespace MathLib
 {
 
diff --git a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp
index 55ee54835ac..decf3acc3ef 100644
--- a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp
@@ -12,6 +12,8 @@
 
 #include <algorithm>
 #include <vector>
+
+#include "BaseLib/ConfigTree.h"
 #include "BaseLib/Logging.h"
 
 namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp
index f3fb6e2fd36..861a79583e3 100644
--- a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp
@@ -11,8 +11,10 @@
 #include "PythonBoundaryCondition.h"
 
 #include <pybind11/pybind11.h>
+
 #include <iostream>
 
+#include "BaseLib/ConfigTree.h"
 #include "MeshLib/MeshSearch/NodeSearch.h"
 #include "ProcessLib/Utils/CreateLocalAssemblers.h"
 #include "PythonBoundaryConditionLocalAssembler.h"
diff --git a/ProcessLib/CentralDifferencesJacobianAssembler.cpp b/ProcessLib/CentralDifferencesJacobianAssembler.cpp
index 2515e051713..70d72322cb4 100644
--- a/ProcessLib/CentralDifferencesJacobianAssembler.cpp
+++ b/ProcessLib/CentralDifferencesJacobianAssembler.cpp
@@ -9,9 +9,11 @@
  */
 
 #include "CentralDifferencesJacobianAssembler.h"
+
+#include "BaseLib/ConfigTree.h"
 #include "BaseLib/Error.h"
-#include "MathLib/LinAlg/Eigen/EigenMapTools.h"
 #include "LocalAssemblerInterface.h"
+#include "MathLib/LinAlg/Eigen/EigenMapTools.h"
 
 namespace ProcessLib
 {
diff --git a/Tests/MathLib/TestLinearSolver.cpp b/Tests/MathLib/TestLinearSolver.cpp
index afa8cb7e66f..417b49f512d 100644
--- a/Tests/MathLib/TestLinearSolver.cpp
+++ b/Tests/MathLib/TestLinearSolver.cpp
@@ -15,10 +15,11 @@
 
 #include <gtest/gtest.h>
 
-#include "MathLib/LinAlg/LinAlg.h"
+#include "BaseLib/ConfigTree.h"
+#include "MathLib/LinAlg/ApplyKnownSolution.h"
 #include "MathLib/LinAlg/Dense/DenseMatrix.h"
 #include "MathLib/LinAlg/FinalizeMatrixAssembly.h"
-#include "MathLib/LinAlg/ApplyKnownSolution.h"
+#include "MathLib/LinAlg/LinAlg.h"
 
 #ifdef OGS_USE_EIGEN
 #include "MathLib/LinAlg/Eigen/EigenMatrix.h"
diff --git a/Tests/NumLib/TestSerialLinearSolver.cpp b/Tests/NumLib/TestSerialLinearSolver.cpp
index bbddc00d37b..ee45fcaea80 100644
--- a/Tests/NumLib/TestSerialLinearSolver.cpp
+++ b/Tests/NumLib/TestSerialLinearSolver.cpp
@@ -10,31 +10,29 @@
  *
  */
 
+#include <gtest/gtest.h>
+
 #include <cmath>
 #include <memory>
 #include <vector>
 
-#include <gtest/gtest.h>
-
+#include "BaseLib/ConfigTree.h"
 #include "MathLib/LinAlg/ApplyKnownSolution.h"
+#include "MathLib/LinAlg/FinalizeMatrixAssembly.h"
 #include "MathLib/LinAlg/GlobalMatrixVectorTypes.h"
 #include "MathLib/LinAlg/MatrixSpecifications.h"
 #include "MathLib/LinAlg/MatrixVectorTraits.h"
-#include "MathLib/LinAlg/FinalizeMatrixAssembly.h"
 #include "MathLib/MathTools.h"
-
 #include "MeshLib/Elements/Element.h"
 #include "MeshLib/Elements/Quad.h"
 #include "MeshLib/Location.h"
 #include "MeshLib/Mesh.h"
 #include "MeshLib/MeshSubset.h"
 #include "MeshLib/Node.h"
-
-#include "NumLib/NumericsConfig.h"
 #include "NumLib/DOF/DOFTableUtil.h"
-
-#include "Tests/TestTools.h"
+#include "NumLib/NumericsConfig.h"
 #include "SteadyDiffusion2DExample1.h"
+#include "Tests/TestTools.h"
 
 TEST(NumLibSerialLinearSolver, Steady2DdiffusionQuadElem)
 {
-- 
GitLab