40 lines
803 B
C++
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;
|
|
};
|