From 879f437f0a4318544f9f7ea4d40ce61e288efb4b Mon Sep 17 00:00:00 2001
From: Martin Larralde <martin.larralde@embl.de>
Date: Sat, 12 Jun 2021 04:37:49 +0200
Subject: [PATCH] Add `_utils.hpp` with relevant C++ code to compile without
 OpenMP

---
 pyfastani/_utils.cpp | 26 ++++++++++++++++++++++++++
 pyfastani/_utils.hpp | 25 +++++++++++++++++++++++++
 pyfastani/_utils.pxd | 17 +++++++++++++++++
 3 files changed, 68 insertions(+)
 create mode 100644 pyfastani/_utils.cpp
 create mode 100644 pyfastani/_utils.hpp
 create mode 100644 pyfastani/_utils.pxd

diff --git a/pyfastani/_utils.cpp b/pyfastani/_utils.cpp
new file mode 100644
index 0000000..c3c37c4
--- /dev/null
+++ b/pyfastani/_utils.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <ctime>
+#include <chrono>
+#include <functional>
+
+#include "_utils.hpp"
+
+
+skch::Map* new_map_with_result_vector(
+    const skch::Parameters &p,
+    const skch::Sketch &refsketch,
+    uint64_t &totalQueryFragments,
+    int queryno,
+    skch::MappingResultsVector_t &r
+) {
+  auto fn = std::bind(skch::Map::insertL2ResultsToVec, std::ref(r), std::placeholders::_1);
+  return new skch::Map( p, refsketch, totalQueryFragments, queryno, fn );
+}
+
+int omp_get_thread_num(void) {
+    return 0;
+}
+
+int omp_get_num_threads(void) {
+    return 1;
+}
diff --git a/pyfastani/_utils.hpp b/pyfastani/_utils.hpp
new file mode 100644
index 0000000..74c08bf
--- /dev/null
+++ b/pyfastani/_utils.hpp
@@ -0,0 +1,25 @@
+#ifndef __UTILS_HPP
+#define __UTILS_HPP
+
+#include "map/include/computeMap.hpp"
+
+#include <stdint.h>
+#include <functional>
+
+#include "map/include/base_types.hpp"
+#include "map/include/computeMap.hpp"
+
+skch::Map* new_map_with_result_vector(
+    const skch::Parameters &p,
+    const skch::Sketch &refsketch,
+    uint64_t &totalQueryFragments,
+    int queryno,
+    skch::MappingResultsVector_t &r
+);
+
+// not needed anywhere except in `cgi::correctRefGenomeIds`
+// so we can just patch them
+extern int omp_get_thread_num(void);
+extern int omp_get_num_threads(void);
+
+#endif
diff --git a/pyfastani/_utils.pxd b/pyfastani/_utils.pxd
new file mode 100644
index 0000000..fd07fe3
--- /dev/null
+++ b/pyfastani/_utils.pxd
@@ -0,0 +1,17 @@
+from libc.stdint cimport uint64_t
+
+from fastani.map.base_types cimport MappingResultsVector_t
+from fastani.map.compute_map cimport Map
+from fastani.map.map_parameters cimport Parameters
+from fastani.map.win_sketch cimport Sketch
+
+
+cdef extern from "_utils.hpp" nogil:
+
+    Map* new_map_with_result_vector(
+        const Parameters &p,
+        const Sketch &refsketch,
+        uint64_t &totalQueryFragments,
+        int queryno,
+        MappingResultsVector_t &r
+    )
-- 
GitLab