5#include <pybind11/pybind11.h>
13#include <pybind11/numpy.h>
26 template<
template<
typename>
class AccessorType>
28 std::string unit,
size_t nElements,
const std::string& description,
29 const std::unordered_set<std::string>& tags);
36 template<
template<
typename>
class AccessorType>
38 std::string unit,
size_t nElements,
const std::string& description,
39 const std::unordered_set<std::string>& tags = {})
40 :
_accessor(createAccessor<AccessorType>(type, owner, name, unit, nElements, description, tags)) {}
48 void setAndWrite(
const UserTypeTemplateVariantNoVoid<Vector>& vec);
52 void set(
const UserTypeTemplateVariantNoVoid<Vector>& vec);
54 py::object
get()
const;
56 py::object
getitem(
size_t index)
const;
58 void setitem(
size_t index,
const UserTypeVariantNoVoid& val);
60 void setslice(
const py::slice& slice,
const UserTypeVariantNoVoid& val);
62 static std::string
repr(py::object& acc);
66 py::object
getattr(
const std::string& name)
const {
return get().attr(name.c_str()); }
Convenience class for output array accessors (always UpdateMode::push)
Base class for ApplicationModule and DeviceModule, to have a common interface for these module types.
Helper class acting as a ArrayAccessor with a variant UserType.
py::object getitem(size_t index) const
void set(const UserTypeTemplateVariantNoVoid< Vector > &vec)
static void bind(py::module &mod)
void setAndWrite(const UserTypeTemplateVariantNoVoid< Vector > &vec)
void setslice(const py::slice &slice, const UserTypeVariantNoVoid &val)
static std::string repr(py::object &acc)
PyArrayAccessor(PyArrayAccessor &&)=default
void setitem(size_t index, const UserTypeVariantNoVoid &val)
py::buffer_info getBufferInfo()
ArrayAccessorVariant _accessor
py::object getattr(const std::string &name) const
PyArrayAccessor(AccessorTypeTag< AccessorType >, ChimeraTK::DataType type, Module *owner, const std::string &name, std::string unit, size_t nElements, const std::string &description, const std::unordered_set< std::string > &tags={})
Base class used for all objects in the Python world which can be owned by another object.
InvalidityTracer application module.
typename detail::NestedVariant< UserTypeTemplateVariantNoVoid< ArrayAccessor >, UserTypeTemplateVariantNoVoid< ArrayPollInput >, UserTypeTemplateVariantNoVoid< ArrayPushInput >, UserTypeTemplateVariantNoVoid< ArrayOutput >, UserTypeTemplateVariantNoVoid< ArrayPushInputWB >, UserTypeTemplateVariantNoVoid< ArrayOutputPushRB >, UserTypeTemplateVariantNoVoid< ArrayOutputReverseRecovery >, UserTypeTemplateVariantNoVoid< ArrayPushInputNoInitialValue >, UserTypeTemplateVariantNoVoid< ArrayPollInputNoInitialValue > >::type ArrayAccessorVariant
All concrete array accessor types used by the Python bindings.