python-cnorxz/cnorxz/core/include/array_wrapper.h
Christian Zimmermann 4d2e9fc6e7 WIP cpp array wrapper
2023-05-23 00:48:01 +02:00

40 lines
803 B
C++

#include <Python.h>
#include "cnorxz.h"
namespace CNORXZ
{
class CArrayWrapperBase
{
public:
DEFAULT_MEMBERS(ArrayWrapperBase);
virtual ~CArrayWrapperBase() = default;
virtual RangePtr range() const = 0;
virtual SizeT size() const = 0;
// virtual PyObject* get() const = 0; // operator[]!!
};
template <typename T>
class CArrayWrapper : public CArrayWrapperBase
{
private:
Sptr<CArrayBase<T>> mArr;
public:
DEFAULT_MEMBERS(ArrayWrapper);
CArrayWrapper(const RangePtr& r) : mArr( std::make_shared<MArray<T>>(r) ) {}
virtual RangePtr range() const override final { return mArr->range(); }
virtual SizeT size() const override final { return mArr->size(); }
};
}
struct PyCArrayB
{
PyObject_HEAD
CNORXZ::CArrayWrapperBase* ptrObj;
};