diff --git a/src/c_wrapper/clhelper.h b/src/c_wrapper/clhelper.h index 0d8f630444a3a14ea285108117211e85487d7fcd..2fb6cfd2bb50805afd53154f49c82958bc228552 100644 --- a/src/c_wrapper/clhelper.h +++ b/src/c_wrapper/clhelper.h @@ -67,8 +67,8 @@ make_cloutarg(clobj_t *ret, cl_int (CL_API_CALL *release)(typename CLObj::cl_typ { return _CLObjOutArg<CLObj, T...>(ret, release, name, t1...); } -#define pyopencl_outarg(type, ret, func, args...) \ - make_cloutarg<type>(ret, func, #func, ##args) +#define pyopencl_outarg(type, ret, func, ...) \ + make_cloutarg<type>(ret, func, #func, ##__VA_ARGS__) // {{{ GetInfo helpers @@ -83,8 +83,8 @@ get_vec_info(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name, call_guarded(func, name, args..., size_arg(buf), buf_arg(size)); return buf; } -#define pyopencl_get_vec_info(type, what, args...) \ - get_vec_info<type>(clGet##what##Info, "clGet" #what "Info", args) +#define pyopencl_get_vec_info(type, what, ...) \ + get_vec_info<type>(clGet##what##Info, "clGet" #what "Info", __VA_ARGS__) template<typename T> PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info @@ -109,8 +109,8 @@ convert_array_info(const char *tname, pyopencl_buf<T> &&_buf) #define pyopencl_convert_array_info(type, buf) \ convert_array_info<type>(#type, buf) -#define pyopencl_get_array_info(type, what, args...) \ - pyopencl_convert_array_info(type, pyopencl_get_vec_info(type, what, args)) +#define pyopencl_get_array_info(type, what, ...) \ + pyopencl_convert_array_info(type, pyopencl_get_vec_info(type, what, __VA_ARGS__)) template<typename CLObj, typename T> PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info @@ -123,9 +123,9 @@ convert_opaque_array_info(T &&buf) info.value = buf_to_base<CLObj>(std::forward<T>(buf)).release(); return info; } -#define pyopencl_get_opaque_array_info(cls, what, args...) \ +#define pyopencl_get_opaque_array_info(cls, what, ...) \ convert_opaque_array_info<cls>( \ - pyopencl_get_vec_info(cls::cl_type, what, args)) + pyopencl_get_vec_info(cls::cl_type, what, __VA_ARGS__)) template<typename CLObj, typename... ArgTypes, typename... ArgTypes2> PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info @@ -145,9 +145,9 @@ get_opaque_info(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name, } return info; } -#define pyopencl_get_opaque_info(clobj, what, args...) \ +#define pyopencl_get_opaque_info(clobj, what, ...) \ get_opaque_info<clobj>(clGet##what##Info, \ - "clGet" #what "Info", args) + "clGet" #what "Info", __VA_ARGS__) template<typename... ArgTypes, typename... ArgTypes2> PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info @@ -165,8 +165,8 @@ get_str_info(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name, info.value = (void*)param_value.release(); return info; } -#define pyopencl_get_str_info(what, args...) \ - get_str_info(clGet##what##Info, "clGet" #what "Info", args) +#define pyopencl_get_str_info(what, ...) \ + get_str_info(clGet##what##Info, "clGet" #what "Info", __VA_ARGS__) template<typename T, typename... ArgTypes, typename... ArgTypes2> PYOPENCL_USE_RESULT static PYOPENCL_INLINE generic_info @@ -182,9 +182,9 @@ get_int_info(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name, info.value = cl_memdup(&value); return info; } -#define pyopencl_get_int_info(type, what, args...) \ +#define pyopencl_get_int_info(type, what, ...) \ get_int_info<type>(clGet##what##Info, "clGet" #what "Info", \ - #type "*", args) + #type "*", __VA_ARGS__) // }}} @@ -200,8 +200,8 @@ convert_obj(cl_int (CL_API_CALL *clRelease)(CLType), const char *name, CLType cl throw; } } -#define pyopencl_convert_obj(type, func, args...) \ - convert_obj<type>(func, #func, args) +#define pyopencl_convert_obj(type, func, ...) \ + convert_obj<type>(func, #func, __VA_ARGS__) // {{{ extension function pointers diff --git a/src/c_wrapper/error.h b/src/c_wrapper/error.h index bae569bb459d640d56e5cd2eb7d4d9a6e572321c..30090188399c9fdd1fb54b855379a29c27c5d4d2 100644 --- a/src/c_wrapper/error.h +++ b/src/c_wrapper/error.h @@ -251,8 +251,8 @@ call_guarded(T (CL_API_CALL *func)(ArgTypes...), const char *name, ArgTypes2&&.. argpack.finish(); return res; } -#define pyopencl_call_guarded(func, args...) \ - call_guarded(func, #func, args) +#define pyopencl_call_guarded(func, ...) \ + call_guarded(func, #func, __VA_ARGS__) static PYOPENCL_INLINE void cleanup_print_error(cl_int status_code, const char *name) noexcept @@ -275,8 +275,8 @@ call_guarded_cleanup(cl_int (CL_API_CALL *func)(ArgTypes...), const char *name, argpack.finish(); } } -#define pyopencl_call_guarded_cleanup(func, args...) \ - call_guarded_cleanup(func, #func, args) +#define pyopencl_call_guarded_cleanup(func, ...) \ + call_guarded_cleanup(func, #func, __VA_ARGS__) template<typename Func> PYOPENCL_USE_RESULT static PYOPENCL_INLINE error* diff --git a/src/c_wrapper/wrap_constants.cpp b/src/c_wrapper/wrap_constants.cpp index ae2980e97f9e5d4674982696f057b49e97aa48ba..1a0245505acbc9397af494b8dda17dbd71277b1f 100644 --- a/src/c_wrapper/wrap_constants.cpp +++ b/src/c_wrapper/wrap_constants.cpp @@ -10,8 +10,8 @@ void populate_constants(void(*add)(const char*, const char*, int64_t value)) { #define _ADD_ATTR(TYPE, PREFIX, NAME, SUFFIX, ...) \ add(TYPE, #NAME, CL_##PREFIX##NAME##SUFFIX) -#define ADD_ATTR(TYPE, PREFIX, NAME, EXTRA...) \ - _ADD_ATTR(TYPE, PREFIX, NAME, EXTRA) +#define ADD_ATTR(TYPE, PREFIX, NAME, ...) \ + _ADD_ATTR(TYPE, PREFIX, NAME, __VA_ARGS__) // program_kind add("program_kind", "UNKNOWN", KND_UNKNOWN);