From 82e70a12dc3bf8309c43620c08a2c4ff05a6d13e Mon Sep 17 00:00:00 2001 From: Moritz Pflanzer Date: Tue, 8 Aug 2017 16:20:45 +0100 Subject: COMPMID-415: Improve SimpleTensor and RawTensor Change-Id: I7a5f970b3c04b925682fd9f0ece3254478dc96f7 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/83343 Reviewed-by: Anthony Barbier Tested-by: Kaizen --- tests/RawTensor.h | 90 +++++-------------------------------------------------- 1 file changed, 7 insertions(+), 83 deletions(-) (limited to 'tests/RawTensor.h') diff --git a/tests/RawTensor.h b/tests/RawTensor.h index 9d65e4f319..f1a9af37c9 100644 --- a/tests/RawTensor.h +++ b/tests/RawTensor.h @@ -24,27 +24,18 @@ #ifndef __ARM_COMPUTE_TEST_RAW_TENSOR_H__ #define __ARM_COMPUTE_TEST_RAW_TENSOR_H__ -#include "arm_compute/core/TensorShape.h" -#include "arm_compute/core/Types.h" - -#include -#include -#include +#include "SimpleTensor.h" namespace arm_compute { namespace test { -/** Simple tensor object that stores elements in a consecutive chunk of memory. - * - * It can be created by either loading an image from a file which also - * initialises the content of the tensor or by explcitly specifying the size. - * The latter leaves the content uninitialised. +/** Subclass of SimpleTensor using uint8_t as value type. * - * Furthermore, the class provides methods to convert the tensor's values into - * different image format. + * Access operations (except for operator[]) will be based on the data type to + * copy the right number of elements. */ -class RawTensor final +class RawTensor : public SimpleTensor { public: /** Create an uninitialised tensor of the given @p shape and @p format. @@ -70,69 +61,17 @@ public: */ RawTensor(const RawTensor &tensor); - /** Create a deep copy of the given @p tensor. - * - * @param[in] tensor To be copied tensor. - */ RawTensor &operator =(RawTensor tensor); RawTensor(RawTensor &&) = default; ~RawTensor() = default; - using BufferType = uint8_t; - using Buffer = std::unique_ptr; - - /** Return value at @p offset in the buffer. - * - * @param[in] offset Offset within the buffer. - */ - BufferType &operator[](size_t offset); - - /** Return constant value at @p offset in the buffer. - * - * @param[in] offset Offset within the buffer. - */ - const BufferType &operator[](size_t offset) const; - - /** Shape of the tensor. */ - TensorShape shape() const; - - /** Size of each element in the tensor in bytes. */ - size_t element_size() const; - - /** Total size of the tensor in bytes. */ - size_t size() const; - - /** Image format of the tensor. */ - Format format() const; - - /** Data type of the tensor. */ - DataType data_type() const; - - /** Number of channels of the tensor. */ - int num_channels() const; - - /** Number of elements of the tensor. */ - int num_elements() const; - - /** Available padding around the tensor. */ - PaddingSize padding() const; - - /** The number of bits for the fractional part of the fixed point numbers. */ - int fixed_point_position() const; - - /** Constant pointer to the underlying buffer. */ - const BufferType *data() const; - - /** Pointer to the underlying buffer. */ - BufferType *data(); - /** Read only access to the specified element. * * @param[in] coord Coordinates of the desired element. * * @return A pointer to the desired element. */ - const BufferType *operator()(const Coordinates &coord) const; + const void *operator()(const Coordinates &coord) const override; /** Access to the specified element. * @@ -140,22 +79,7 @@ public: * * @return A pointer to the desired element. */ - BufferType *operator()(const Coordinates &coord); - - /** Swaps the content of the provided tensors. - * - * @param[in, out] tensor1 Tensor to be swapped. - * @param[in, out] tensor2 Tensor to be swapped. - */ - friend void swap(RawTensor &tensor1, RawTensor &tensor2); - -private: - Buffer _buffer{ nullptr }; - TensorShape _shape{}; - Format _format{ Format::UNKNOWN }; - DataType _data_type{ DataType::UNKNOWN }; - int _num_channels{ 0 }; - int _fixed_point_position{ 0 }; + void *operator()(const Coordinates &coord) override; }; } // namespace test } // namespace arm_compute -- cgit v1.2.1