aboutsummaryrefslogtreecommitdiffstats
path: root/host/include
diff options
context:
space:
mode:
Diffstat (limited to 'host/include')
-rw-r--r--host/include/uhd/utils/CMakeLists.txt1
-rw-r--r--host/include/uhd/utils/pybind_adaptors.hpp39
2 files changed, 40 insertions, 0 deletions
diff --git a/host/include/uhd/utils/CMakeLists.txt b/host/include/uhd/utils/CMakeLists.txt
index 08d488771..51d67b824 100644
--- a/host/include/uhd/utils/CMakeLists.txt
+++ b/host/include/uhd/utils/CMakeLists.txt
@@ -29,6 +29,7 @@ UHD_INSTALL(FILES
paths.hpp
pimpl.hpp
platform.hpp
+ pybind_adaptors.hpp
safe_call.hpp
safe_main.hpp
scope_exit.hpp
diff --git a/host/include/uhd/utils/pybind_adaptors.hpp b/host/include/uhd/utils/pybind_adaptors.hpp
new file mode 100644
index 000000000..6b095d198
--- /dev/null
+++ b/host/include/uhd/utils/pybind_adaptors.hpp
@@ -0,0 +1,39 @@
+//
+// Copyright 2020 Ettus Research, a National Instruments Brand
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+//
+
+#pragma once
+
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace pybind11 { namespace detail {
+template <typename T>
+struct type_caster<boost::optional<T>> : optional_caster<boost::optional<T>>
+{
+};
+}} // namespace pybind11::detail
+
+std::vector<uint8_t> pybytes_to_vector(const py::bytes& data)
+{
+ const std::string data_str = std::string(data);
+ return std::vector<uint8_t>(data_str.cbegin(), data_str.cend());
+}
+
+py::bytes vector_to_pybytes(const std::vector<uint8_t>& data)
+{
+ return py::bytes(std::string(data.cbegin(), data.cend()));
+}
+
+std::vector<uint64_t> pybytes_to_u64_vector(const py::bytes& data)
+{
+ const std::string data_str = std::string(data);
+ return std::vector<uint64_t>(data_str.cbegin(), data_str.cend());
+}
+
+py::bytes u64_vector_to_pybytes(const std::vector<uint64_t>& data)
+{
+ return py::bytes(std::string(data.cbegin(), data.cend()));
+}