From 4f7f99166c5ccf230b51c7ba0992f68272e88e96 Mon Sep 17 00:00:00 2001
From: Simon Oehrl <oehrl@vr.rwth-aachen.de>
Date: Wed, 10 Jul 2019 16:47:44 +0200
Subject: [PATCH] Fix pynesci bindings
---
pynesci/src/consumer/CMakeLists.txt | 2 +-
pynesci/src/consumer/device_data_view.hpp | 3 +-
.../consumer/nest_multimeter_data_view.hpp | 2 +-
.../src/consumer/spike_detector_data_view.hpp | 32 +++++++++----------
4 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/pynesci/src/consumer/CMakeLists.txt b/pynesci/src/consumer/CMakeLists.txt
index 895260d..de0783f 100644
--- a/pynesci/src/consumer/CMakeLists.txt
+++ b/pynesci/src/consumer/CMakeLists.txt
@@ -34,6 +34,6 @@ add_python_module(
HEADERS ${HEADERS}
PYTHON_SOURCES ${PYTHON_SOURCES}
INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}
- LINK_LIBRARIES nesci::consumer Boost::python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR} Boost::disable_autolinking
+ LINK_LIBRARIES Boost::python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR} Boost::disable_autolinking conduit nesci::nesci nesci::consumer
OUTPUT_DIRECTORY ${PYCONSUMER_OUTPUT_DIR}
)
diff --git a/pynesci/src/consumer/device_data_view.hpp b/pynesci/src/consumer/device_data_view.hpp
index 979bec0..95872b1 100644
--- a/pynesci/src/consumer/device_data_view.hpp
+++ b/pynesci/src/consumer/device_data_view.hpp
@@ -21,6 +21,7 @@
#include <string>
+#include "boost/python.hpp"
#include "nesci/consumer/device_data_view.hpp"
#include "pyconsumer.hpp"
#include "pynesci/suppress_warnings.hpp"
@@ -32,7 +33,7 @@ SUPPRESS_WARNINGS_BEGIN
void ExposeDeviceDataView() {
class_<nesci::consumer::DeviceDataView>("DeviceDataView",
- init<const conduit::Node&>())
+ init<const conduit::Node*>())
.def("HasName", &nesci::consumer::DeviceDataView::HasName)
.def("GetDeviceName", &nesci::consumer::DeviceDataView::GetName)
.def("GetDeviceType", &nesci::consumer::DeviceDataView::GetType);
diff --git a/pynesci/src/consumer/nest_multimeter_data_view.hpp b/pynesci/src/consumer/nest_multimeter_data_view.hpp
index 886c830..cfd3b7b 100644
--- a/pynesci/src/consumer/nest_multimeter_data_view.hpp
+++ b/pynesci/src/consumer/nest_multimeter_data_view.hpp
@@ -87,7 +87,7 @@ boost::python::list GetNestMultimeterFloatingPointAttributeValues(
void ExposeNestMultimeterDataView() {
class_<nesci::consumer::NestMultimeterDataView,
bases<nesci::consumer::DeviceDataView>>("NestMultimeterDataView",
- init<const conduit::Node&>())
+ init<const conduit::Node*>())
.def("IsValid", &nesci::consumer::NestMultimeterDataView::IsValid)
.def("GetTimestep", &nesci::consumer::NestMultimeterDataView::GetTimestep)
.def("GetNeuronIds",
diff --git a/pynesci/src/consumer/spike_detector_data_view.hpp b/pynesci/src/consumer/spike_detector_data_view.hpp
index e192e3e..f44c863 100644
--- a/pynesci/src/consumer/spike_detector_data_view.hpp
+++ b/pynesci/src/consumer/spike_detector_data_view.hpp
@@ -30,35 +30,35 @@ namespace consumer {
SUPPRESS_WARNINGS_BEGIN
-boost::python::object IsSpikeDetectorValid(
- nesci::consumer::DeviceDataView* spike_detector) {
- return static_cast<boost::python::object>(spike_detector->IsValid());
-}
-
boost::python::list GetSpikeDetectorTimesteps(
- nesci::consumer::DeviceDataView* spike_detector) {
+ nesci::consumer::SpikeDetectorDataView* spike_detector) {
boost::python::list ret_val;
- for (const auto& data : spike_detector->GetTimesteps()) {
- ret_val.append(data);
+ const auto timesteps = spike_detector->GetTimesteps();
+ for (conduit::index_t i = 0, count = timesteps.number_of_elements();
+ i < count; ++i) {
+ ret_val.append(timesteps[i]);
}
return ret_val;
}
boost::python::list GetSpikeDetectorNeuronIds(
- nesci::consumer::DeviceDataView* spike_detector) {
+ nesci::consumer::SpikeDetectorDataView* spike_detector) {
boost::python::list ret_val;
- for (const auto& data : spike_detector->GetNeuronIds()) {
- ret_val.append(data);
+ const auto neuron_ids = spike_detector->GetNeuronIds();
+ for (conduit::index_t i = 0, count = neuron_ids.number_of_elements();
+ i < count; ++i) {
+ ret_val.append(neuron_ids[i]);
}
return ret_val;
}
void ExposeSpikeDetectorDataView() {
- class_<nesci::consumer::SpikeDetectorDataView>(
- "SpikeDetectorDataView", init<const conduit::Node & node>())
- .def("IsSpikeDetectorValid", &IsValid)
- .def("GetSpikeDetectorTimesteps", &GetTimesteps)
- .def("GetSpikeDetectorNeuronIds", &GetNeuronIds);
+ class_<nesci::consumer::SpikeDetectorDataView,
+ bases<nesci::consumer::DeviceDataView>>("SpikeDetectorDataView",
+ init<const conduit::Node*>())
+ .def("IsValid", &nesci::consumer::SpikeDetectorDataView::IsValid)
+ .def("GetTimesteps", &GetSpikeDetectorTimesteps)
+ .def("GetNeuronIds", &GetSpikeDetectorNeuronIds);
}
SUPPRESS_WARNINGS_END
--
GitLab