35#ifndef NEKTAR_LIBUTILITIES_PYTHON_BASICUTILS_SHAREDARRAY_HPP
36#define NEKTAR_LIBUTILITIES_PYTHON_BASICUTILS_SHAREDARRAY_HPP
75 bool load(handle src,
bool enable)
81 return_value_policy policy, handle parent)
86 template <
typename U = T,
87 std::enable_if_t<std::is_arithmetic_v<U>,
bool> =
true>
90 if (!array_t<U>::check_(src))
95 auto arr = array_t<U, array::c_style | array::forcecast>::ensure(src);
106 using nonconst_t =
typename std::remove_const<U>::type;
108 (nonconst_t *)arr.data(),
121 if (!Py_IsInitialized())
130 handle obj((PyObject *)objPtr);
134 template <
typename U = T,
135 std::enable_if_t<std::is_arithmetic_v<U>,
bool> =
true>
137 return_value_policy, handle)
151 array_t<U> array({arr.size()}, {}, arr.data(), c);
156 return array.release();
159 template <
typename U = T,
161 is_shared_ptr<typename std::remove_const<U>::type>::value ||
166 if (!py::isinstance<py::list>(src))
171 py::list l = py::cast<py::list>(src);
172 const std::size_t nItems = l.size();
174 using nonconst_t =
typename std::remove_const<U>::type;
181 for (std::size_t i = 0; i < nItems; ++i)
183 tmparr[i] = py::cast<nonconst_t>(l[i]);
196 template <
typename U = T,
198 is_shared_ptr<typename std::remove_const<U>::type>::value ||
202 return_value_policy, handle)
206 for (std::size_t i = 0; i < arr.size(); ++i)
211 return tmp.release();
215template <
typename Type>
216struct type_caster<
Nektar::Array<Nektar::OneD, Type>>
Template utility to determine whether.
Convert for Array<OneD, T> to Python list of objects for numeric types, self-array types and shared_p...
static handle cast_impl(Nektar::Array< Nektar::OneD, U > const &arr, return_value_policy, handle)
bool load_impl(handle src, bool)
bool load(handle src, bool enable)
static handle cast(Nektar::Array< Nektar::OneD, T > const &arr, return_value_policy policy, handle parent)
static void decrement(void *objPtr)
PYBIND11_TYPE_CASTER(Type, const_name("Array<OneD, ")+handle_type_name< T >::name+const_name(">"))
static handle cast_impl(Nektar::Array< Nektar::OneD, T > const &arr, return_value_policy, handle)