Introduce __HIP_DISABLE_CPP_FUNCTIONS__ macro to disable C++ wrappers

hipMalloc and hipHostMalloc are C++ function templates by default. In some
applications they need to discover the decltype of underlying C functions. In
this commit, a new macro __HIP_DISABLE_CPP_FUNCTIONS__ is introduced to
suppress the C++ function templates.

Existing HIP applications don't need to be changed. hipMalloc and hipHostMalloc
will behave just the same.

For new applications which depends on identifying decltypes of underlying C
functions, __HIP_DISABLE_CPP_FUNCTIONS__ shall be defined prior to including
HIP headers.
Este commit está contenido en:
Wen-Heng (Jack) Chung
2019-02-11 09:31:30 -06:00
padre 1d510dffa2
commit f4e1f74e9e
+5 -1
Ver fichero
@@ -318,9 +318,13 @@ enum hipComputeMode {
*
* Perform automatic type conversion to eliminate need for excessive typecasting (ie void**)
*
* __HIP_DISABLE_CPP_FUNCTIONS__ macro can be defined to suppress these
* wrappers. It is useful for applications which need to obtain decltypes of
* HIP runtime APIs.
*
* @see hipMalloc
*/
#ifdef __cplusplus
#if defined(__cplusplus) && !defined(__HIP_DISABLE_CPP_FUNCTIONS__)
template <class T>
static inline hipError_t hipMalloc(T** devPtr, size_t size) {
return hipMalloc((void**)devPtr, size);