class AbstractComplexTensor

#include <Tensor.h>

class AbstractComplexTensor
{
public:
    // methods

    virtual size_t getRank() const = 0;
    virtual size_t getMaxRank() const = 0;
    virtual qcomplex_data_t getElem(size_t num) = 0;
    virtual void dimIncrement(size_t) = 0;

    virtual void getSubTensor(
        size_t num,
        int value
        ) = 0;

    virtual void dimDecrement(size_t num) = 0;
    virtual qcomplex_data_t* getTensor() = 0;

    virtual void mul(
        ComplexTensor& other,
        size_t* mask_array
        ) = 0;

    virtual ComputeBackend getBackend() = 0;
};

// direct descendants

class ComplexTensor;
class CPUComplexTensor;