diff --git a/DDCore/include/DD4hep/detail/Handle.inl b/DDCore/include/DD4hep/detail/Handle.inl index 44b1eb03f477f18a46a9d6fc1931c1cd35186eec..f33e7370fcdac4a05892e113fd164d2dea06cc12 100644 --- a/DDCore/include/DD4hep/detail/Handle.inl +++ b/DDCore/include/DD4hep/detail/Handle.inl @@ -106,19 +106,19 @@ namespace dd4hep { #define DD4HEP_HANDLE_PP_NARGS_COUNT() 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, ERROR // Macros to delegate to concrete, defined-arity implementations: -#define DD4HEP_HANDLE_XF(count, ...) DD4HEP_HANDLE_XF_IMPL (count, __VA_ARGS__) -#define DD4HEP_HANDLE_XF_IMPL(count, ...) DD4HEP_HANDLE_XF_ ## count (__VA_ARGS__) +#define DD4HEP_HANDLE_VAR_ARG(count, ...) DD4HEP_HANDLE_VAR_ARG_IMPL (count, __VA_ARGS__) +#define DD4HEP_HANDLE_VAR_ARG_IMPL(count, ...) DD4HEP_HANDLE_VAR_ARG_ ## count (__VA_ARGS__) -#define DD4HEP_HANDLE_XF_1(CODE,x1) DD4HEP_TEMPLATE_HANDLE(CODE,x1) -#define DD4HEP_HANDLE_XF_2(CODE,x1,x2) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x2) DD4HEP_HANDLE_XF_1(CODE,x1) -#define DD4HEP_HANDLE_XF_3(CODE,x1,x2,x3) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x3) DD4HEP_HANDLE_XF_2(CODE,x1,x2) -#define DD4HEP_HANDLE_XF_4(CODE,x1,x2,x3,x4) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x4) DD4HEP_HANDLE_XF_3(CODE,x1,x2,x3) -#define DD4HEP_HANDLE_XF_5(CODE,x1,x2,x3,x4,x5) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x5) DD4HEP_HANDLE_XF_4(CODE,x1,x2,x3,x4) -#define DD4HEP_HANDLE_XF_6(CODE,x1,x2,x3,x4,x5,x6) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x6) DD4HEP_HANDLE_XF_5(CODE,x1,x2,x3,x4,x5) -#define DD4HEP_HANDLE_XF_7(CODE,x1,x2,x3,x4,x5,x6,x7) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x7) DD4HEP_HANDLE_XF_6(CODE,x1,x2,x3,x4,x5,x6) -#define DD4HEP_HANDLE_XF_8(CODE,x1,x2,x3,x4,x5,x6,x7,x8) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x8) DD4HEP_HANDLE_XF_7(CODE,x1,x2,x3,x4,x5,x6,x7) -#define DD4HEP_HANDLE_XF_9(CODE,x1,x2,x3,x4,x5,x6,x7,x8,x9) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x9) DD4HEP_HANDLE_XF_8(CODE,x1,x2,x3,x4,x5,x6,x7,x8) -#define DD4HEP_HANDLE_XF_10(CODE,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x10) DD4HEP_HANDLE_XF_9(CODE,x1,x2,x3,x4,x5,x6,x7,x8,x9) +#define DD4HEP_HANDLE_VAR_ARG_1(CODE,x1) DD4HEP_TEMPLATE_HANDLE(CODE,x1) +#define DD4HEP_HANDLE_VAR_ARG_2(CODE,x1,x2) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x2) DD4HEP_HANDLE_VAR_ARG_1(CODE,x1) +#define DD4HEP_HANDLE_VAR_ARG_3(CODE,x1,x2,x3) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x3) DD4HEP_HANDLE_VAR_ARG_2(CODE,x1,x2) +#define DD4HEP_HANDLE_VAR_ARG_4(CODE,x1,x2,x3,x4) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x4) DD4HEP_HANDLE_VAR_ARG_3(CODE,x1,x2,x3) +#define DD4HEP_HANDLE_VAR_ARG_5(CODE,x1,x2,x3,x4,x5) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x5) DD4HEP_HANDLE_VAR_ARG_4(CODE,x1,x2,x3,x4) +#define DD4HEP_HANDLE_VAR_ARG_6(CODE,x1,x2,x3,x4,x5,x6) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x6) DD4HEP_HANDLE_VAR_ARG_5(CODE,x1,x2,x3,x4,x5) +#define DD4HEP_HANDLE_VAR_ARG_7(CODE,x1,x2,x3,x4,x5,x6,x7) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x7) DD4HEP_HANDLE_VAR_ARG_6(CODE,x1,x2,x3,x4,x5,x6) +#define DD4HEP_HANDLE_VAR_ARG_8(CODE,x1,x2,x3,x4,x5,x6,x7,x8) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x8) DD4HEP_HANDLE_VAR_ARG_7(CODE,x1,x2,x3,x4,x5,x6,x7) +#define DD4HEP_HANDLE_VAR_ARG_9(CODE,x1,x2,x3,x4,x5,x6,x7,x8,x9) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x9) DD4HEP_HANDLE_VAR_ARG_8(CODE,x1,x2,x3,x4,x5,x6,x7,x8) +#define DD4HEP_HANDLE_VAR_ARG_10(CODE,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10) DD4HEP_IMPLEMENT_SAFE_CAST(x1,x10) DD4HEP_HANDLE_VAR_ARG_9(CODE,x1,x2,x3,x4,x5,x6,x7,x8,x9) #define DD4HEP_TEMPLATE_HANDLE(CODE,X) DD4HEP_TEMPLATE_HANDLE_CODE_##CODE(X) template class dd4hep::Handle<X> @@ -155,7 +155,7 @@ namespace dd4hep { DD4HEP_SAFE_CAST_IMPLEMENTATION(X,X) // Delegation macro; this is the only macro you need to call from elsewhere: -#define DD4HEP_INSTANTIATE_HANDLE_CODE(CODE,...) DD4HEP_HANDLE_XF(DD4HEP_HANDLE_PP_NARGS(__VA_ARGS__),CODE,__VA_ARGS__) +#define DD4HEP_INSTANTIATE_HANDLE_CODE(CODE,...) DD4HEP_HANDLE_VAR_ARG(DD4HEP_HANDLE_PP_NARGS(__VA_ARGS__),CODE,__VA_ARGS__) #define DD4HEP_INSTANTIATE_HANDLE(...) DD4HEP_INSTANTIATE_HANDLE_CODE(CAST_ONLY,__VA_ARGS__) #define DD4HEP_INSTANTIATE_SHAPE_HANDLE(...) DD4HEP_INSTANTIATE_HANDLE_CODE(CAST_ONLY,__VA_ARGS__,TGeoShape,TGeoBBox) #define DD4HEP_INSTANTIATE_HANDLE_RAW(...) DD4HEP_INSTANTIATE_HANDLE_CODE(RAW,__VA_ARGS__)