//==============================================================================
//
// Copyright (c) 2017-2019 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
//
//==============================================================================
# ifndef _IBUFFER_ATTRIBUTES_HPP
# define _IBUFFER_ATTRIBUTES_HPP
# include "IUserBuffer.hpp"
# include "TensorShape.hpp"
# include "ZdlExportDefine.hpp"
namespace zdl {
namespace DlSystem {
class UserBufferEncoding ;
}
}
namespace zdl {
namespace DlSystem {
/**
* @ brief IBufferAttributes returns a buffer ' s dimension and alignment
* requirements , along with info on its encoding type
*/
class ZDL_EXPORT IBufferAttributes {
public :
/**
* @ brief Gets the buffer ' s element size , in bytes
*
* This can be used to compute the memory size required
* to back this buffer .
*
* @ return Element size , in bytes
*/
virtual size_t getElementSize ( ) const noexcept = 0 ;
/**
* @ brief Gets the element ' s encoding type
*
* @ return encoding type
*/
virtual zdl : : DlSystem : : UserBufferEncoding : : ElementType_t getEncodingType ( ) const noexcept = 0 ;
/**
* @ brief Gets the number of elements in each dimension
*
* @ return Dimension size , in terms of number of elements
*/
virtual const TensorShape getDims ( ) const noexcept = 0 ;
/**
* @ brief Gets the alignment requirement of each dimension
*
* Alignment per each dimension is expressed as an multiple , for
* example , if one particular dimension can accept multiples of 8 ,
* the alignment will be 8.
*
* @ return Alignment in each dimension , in terms of multiple of
* number of elements
*/
virtual const TensorShape getAlignments ( ) const noexcept = 0 ;
/**
* @ brief Gets the buffer encoding returned from the network responsible
* for generating this buffer . Depending on the encoding type , this will
* be an instance of an encoding type specific derived class .
*
* @ return Derived user buffer encoding object .
*/
virtual zdl : : DlSystem : : UserBufferEncoding * getEncoding ( ) const noexcept = 0 ;
virtual ~ IBufferAttributes ( ) { }
} ;
/** @} */ /* end_addtogroup c_plus_plus_apis C++ */
}
}
# endif