File: C:/Users/fred/anaconda3/Library/include/zfp/internal/array/header.hpp
// abstract base class for array header
class header {
public:
// default constructor
header() :
type(zfp_type_none),
nx(0), ny(0), nz(0), nw(0)
{}
// constructor
header(const zfp::array& a) :
type(a.type),
nx(a.nx), ny(a.ny), nz(a.nz), nw(a.nw)
{}
// destructor
virtual ~header() {}
// array scalar type
zfp_type scalar_type() const { return type; }
// array dimensionality
uint dimensionality() const { return nw ? 4 : nz ? 3 : ny ? 2 : nx ? 1 : 0; }
// array dimensions
size_t size_x() const { return nx; }
size_t size_y() const { return ny; }
size_t size_z() const { return nz; }
size_t size_w() const { return nw; }
// rate in bits per value
virtual double rate() const = 0;
// header payload: data pointer and byte size
virtual const void* data() const = 0;
virtual size_t size_bytes(uint mask = ZFP_DATA_HEADER) const = 0;
protected:
zfp_type type; // array scalar type
size_t nx, ny, nz, nw; // array dimensions
};