From 033faa1c93f6acbf3e117d9cd223ae2f72c37aff Mon Sep 17 00:00:00 2001
From: "Dmitry Yu. Naumov" <github@naumov.de>
Date: Wed, 2 Sep 2015 09:07:29 +0000
Subject: [PATCH] [PL] Add explicit template instantiation for GWF.

Add a fwd include file, and a explicit template
instantiation definition in own compilation unit.

This decouples ogs.cpp from GWF process.
---
 Applications/ApplicationsLib/ProjectData.h |  1 +
 ProcessLib/GroundwaterFlowProcess-fwd.h    | 18 ++++++++++++++++++
 ProcessLib/GroundwaterFlowProcess.cpp      | 18 ++++++++++++++++++
 ProcessLib/Process.h                       |  5 -----
 4 files changed, 37 insertions(+), 5 deletions(-)
 create mode 100644 ProcessLib/GroundwaterFlowProcess-fwd.h
 create mode 100644 ProcessLib/GroundwaterFlowProcess.cpp

diff --git a/Applications/ApplicationsLib/ProjectData.h b/Applications/ApplicationsLib/ProjectData.h
index 1ed2e408234..0d5800d3177 100644
--- a/Applications/ApplicationsLib/ProjectData.h
+++ b/Applications/ApplicationsLib/ProjectData.h
@@ -25,6 +25,7 @@
 #include "ProcessLib/ProcessVariable.h"
 #include "ProcessLib/Process.h"
 #include "ProcessLib/Parameter.h"
+#include "ProcessLib/GroundwaterFlowProcess-fwd.h"
 
 namespace MeshLib {
 	class Mesh;
diff --git a/ProcessLib/GroundwaterFlowProcess-fwd.h b/ProcessLib/GroundwaterFlowProcess-fwd.h
new file mode 100644
index 00000000000..9c7ece8684c
--- /dev/null
+++ b/ProcessLib/GroundwaterFlowProcess-fwd.h
@@ -0,0 +1,18 @@
+/**
+ * \copyright
+ * Copyright (c) 2012-2015, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#ifndef PROCESS_LIB_GROUNDWATERFLOWPROCESS_FWD_H_
+#define PROCESS_LIB_GROUNDWATERFLOWPROCESS_FWD_H_
+
+#include "GroundwaterFlowProcess.h"
+#include "NumericsConfig.h"
+
+extern template class ProcessLib::GroundwaterFlowProcess<GlobalSetupType>;
+
+#endif  // PROCESS_LIB_GROUNDWATERFLOWPROCESS_FWD_H_
diff --git a/ProcessLib/GroundwaterFlowProcess.cpp b/ProcessLib/GroundwaterFlowProcess.cpp
new file mode 100644
index 00000000000..99a6c6a7604
--- /dev/null
+++ b/ProcessLib/GroundwaterFlowProcess.cpp
@@ -0,0 +1,18 @@
+/**
+ * \copyright
+ * Copyright (c) 2012-2015, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#include "GroundwaterFlowProcess-fwd.h"
+#include "GroundwaterFlowProcess.h"
+
+namespace ProcessLib
+{
+
+template class GroundwaterFlowProcess<GlobalSetupType>;
+
+}   // namespace ProcessLib
diff --git a/ProcessLib/Process.h b/ProcessLib/Process.h
index 4299fc4ec21..5d91b607ebe 100644
--- a/ProcessLib/Process.h
+++ b/ProcessLib/Process.h
@@ -42,9 +42,4 @@ protected:
 
 }   // namespace ProcessLib
 
-//
-// Include all known processes here.
-//
-#include "GroundwaterFlowProcess.h"
-
 #endif  // PROCESS_LIB_PROCESS_H_
-- 
GitLab