21 #ifndef SIRF_ABSTRACT_DATA_CONTAINER_TYPE 22 #define SIRF_ABSTRACT_DATA_CONTAINER_TYPE 39 typedef std::map<std::string, int> Dimensions;
46 virtual unsigned int items()
const = 0;
47 virtual bool is_complex()
const = 0;
50 virtual float norm()
const = 0;
85 virtual void write(
const std::string &filename)
const = 0;
92 std::unique_ptr<DataContainer> clone()
const 94 return std::unique_ptr<DataContainer>(this->clone_impl());
108 return std::unique_ptr<DataContainer>(ptr);
117 THROW(
"complex data containes must override conjugate_impl()");
virtual void minimum(const DataContainer &x, const DataContainer &y)=0
*this = the elementwise min(x, y)
virtual void xapyb(const DataContainer &x, const void *ptr_a, const DataContainer &y, const void *ptr_b)=0
alternative interface to the above
std::unique_ptr< DataContainer > conjugate() const
returns unique pointer to the complex-conjugated copy of this container
Definition: DataContainer.h:104
virtual float norm() const =0
returns the norm of this container viewed as a vector
virtual void multiply(const DataContainer &x, const DataContainer &y)=0
*this = the elementwise product x*y
void conjugate()
overwrites this container's complex data with complex conjugate values
Definition: DataContainer.h:98
Abstract data container.
Definition: GeometricalInfo.cpp:141
virtual void axpby(const void *ptr_a, const DataContainer &x, const void *ptr_b, const DataContainer &y)=0
*this = the linear combination of x and y
Definition: DataHandle.h:159
virtual void dot(const DataContainer &dc, void *ptr) const =0
calculates the dot product of this container with another one
virtual void conjugate_impl()
we assume data to be real, complex data containers must override this
Definition: DataContainer.h:114
virtual void divide(const DataContainer &x, const DataContainer &y)=0
*this = the elementwise ratio x/y
Definition: DataContainer.h:41
Execution status type and wrappers for C++ objects.
virtual void maximum(const DataContainer &x, const DataContainer &y)=0
*this = the elementwise max(x, y)