diff --git a/src/CPPMethod.cxx b/src/CPPMethod.cxx index fbe7148..6b2728b 100644 --- a/src/CPPMethod.cxx +++ b/src/CPPMethod.cxx @@ -346,6 +346,10 @@ CPyCppyy::CPPMethod::CPPMethod( fMethod = Cppyy::ReduceReturnType(fMethod, TypeReductionMap[result]); if (result && Cppyy::IsLambdaClass(result)) fMethod = Cppyy::AdaptFunctionForLambdaReturn(fMethod); + if (fMethod && Cppyy::IsCUDAFunction(fMethod) && !Cppyy::IsConstructor(fMethod)) { + Cppyy::AdaptCUDAFunction(fMethod); + // Cppyy::DumpScope(fMethod); + } } //---------------------------------------------------------------------------- diff --git a/src/Cppyy.h b/src/Cppyy.h index 2212ff3..344ef94 100644 --- a/src/Cppyy.h +++ b/src/Cppyy.h @@ -179,6 +179,8 @@ namespace Cppyy { CPPYY_IMPORT bool IsNamespace(TCppScope_t scope); CPPYY_IMPORT + bool IsCUDAFunction(TCppScope_t scope); + CPPYY_IMPORT bool IsClass(TCppScope_t scope); CPPYY_IMPORT bool IsTemplate(TCppScope_t handle); @@ -329,6 +331,8 @@ namespace Cppyy { CPPYY_IMPORT TCppScope_t WrapLambdaFromVariable(TCppScope_t var); CPPYY_IMPORT + void AdaptCUDAFunction(TCppScope_t fn); + CPPYY_IMPORT TCppScope_t AdaptFunctionForLambdaReturn(TCppScope_t fn); CPPYY_IMPORT TCppType_t GetDatamemberType(TCppScope_t var);