From 0de631431b3d2cf40aa8903d015132ad128eeee5 Mon Sep 17 00:00:00 2001
From: Sam Yates <yates@cscs.ch>
Date: Tue, 5 Sep 2017 14:52:33 +0300
Subject: [PATCH] Move common primitive types across fvm implementations to
 common header (#344)

* Add `backends/fvm_types.hpp` as a single location for shared types across multicore and gpu fvm implementations.
* Use the `fvm_value_type` and `fvm_size_type` defined in `fvm_types.hpp` for the corresponding class-local `value_type` and `size_type` definitions.
---
 src/backends/fvm_types.hpp     | 14 ++++++++++++++
 src/backends/gpu/fvm.hpp       |  5 +++--
 src/backends/multicore/fvm.hpp |  5 +++--
 src/fvm_multicell.hpp          |  5 +++--
 4 files changed, 23 insertions(+), 6 deletions(-)
 create mode 100644 src/backends/fvm_types.hpp

diff --git a/src/backends/fvm_types.hpp b/src/backends/fvm_types.hpp
new file mode 100644
index 00000000..71dfcbfa
--- /dev/null
+++ b/src/backends/fvm_types.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include <common_types.hpp>
+
+// Basic types shared across FVM implementations/backends.
+
+namespace nest {
+namespace mc {
+
+using fvm_value_type = double;
+using fvm_size_type = cell_local_size_type;
+
+} // namespace mc
+} // namespace nest
diff --git a/src/backends/gpu/fvm.hpp b/src/backends/gpu/fvm.hpp
index c7a4dbb6..28a48ec5 100644
--- a/src/backends/gpu/fvm.hpp
+++ b/src/backends/gpu/fvm.hpp
@@ -4,6 +4,7 @@
 #include <string>
 
 #include <backends/event.hpp>
+#include <backends/fvm_types.hpp>
 #include <common_types.hpp>
 #include <mechanism.hpp>
 #include <memory/memory.hpp>
@@ -26,8 +27,8 @@ struct backend {
     }
 
     /// define the real and index types
-    using value_type = double;
-    using size_type  = nest::mc::cell_lid_type;
+    using value_type = fvm_value_type;
+    using size_type  = fvm_size_type;
 
     /// define storage types
     using array  = memory::device_vector<value_type>;
diff --git a/src/backends/multicore/fvm.hpp b/src/backends/multicore/fvm.hpp
index fa3b1b14..4c9e7618 100644
--- a/src/backends/multicore/fvm.hpp
+++ b/src/backends/multicore/fvm.hpp
@@ -4,6 +4,7 @@
 #include <string>
 
 #include <backends/event.hpp>
+#include <backends/fvm_types.hpp>
 #include <common_types.hpp>
 #include <event_queue.hpp>
 #include <mechanism.hpp>
@@ -28,8 +29,8 @@ struct backend {
     }
 
     /// define the real and index types
-    using value_type = double;
-    using size_type  = nest::mc::cell_lid_type;
+    using value_type = fvm_value_type;
+    using size_type  = fvm_size_type;
 
     /// define storage types
     using array  = memory::host_vector<value_type>;
diff --git a/src/fvm_multicell.hpp b/src/fvm_multicell.hpp
index 37aba8de..f74298e2 100644
--- a/src/fvm_multicell.hpp
+++ b/src/fvm_multicell.hpp
@@ -8,6 +8,7 @@
 #include <vector>
 
 #include <algorithms.hpp>
+#include <backends/fvm_types.hpp>
 #include <cell.hpp>
 #include <compartment.hpp>
 #include <event_queue.hpp>
@@ -48,10 +49,10 @@ public:
     using backend = Backend;
 
     /// the real number type
-    using value_type = typename backend::value_type;
+    using value_type = fvm_value_type;
 
     /// the integral index type
-    using size_type = typename backend::size_type;
+    using size_type = fvm_size_type;
 
     /// the container used for values
     using array = typename backend::array;
-- 
GitLab