From 7bc8214fec0348d2dfdaa6c8bd80bf0c6ab4e87a Mon Sep 17 00:00:00 2001 From: ralfulrich <ralf.ulrich@kit.edu> Date: Tue, 2 Apr 2019 11:33:18 +0200 Subject: [PATCH] some extra comments --- Setup/SetupStack.h | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/Setup/SetupStack.h b/Setup/SetupStack.h index dfcfa757d..2dde8fb4f 100644 --- a/Setup/SetupStack.h +++ b/Setup/SetupStack.h @@ -29,6 +29,12 @@ // definition of stack-data object to store geometry information template <typename TEnvType> + +/** + * @class GeometryData + * + * definition of stack-data object to store geometry information + */ class GeometryData { public: @@ -57,8 +63,12 @@ private: std::vector<const BaseNodeType*> fNode; }; -// defintion of a stack-readout object, the iteractor dereference -// operator will deliver access to these function +/** + * @class GeometryDataInterface + * + * corresponding defintion of a stack-readout object, the iteractor + * dereference operator will deliver access to these function + */ template <typename T, typename TEnvType> class GeometryDataInterface : public T { @@ -120,6 +130,29 @@ namespace corsika::setup { // this is the REAL stack we use: using Stack = detail::StackWithGeometry; + /* + See Issue 161 + + unfortunately clang does not support this in the same way (yet) as + gcc, so we have to distinguish here. If clang cataches up, we + could remove the clang branch here and also in + corsika::Cascade. The gcc code is much more generic and + universal. If we could do the gcc version, we won't had to define + StackView globally, we could do it with MakeView whereever it is + actually needed. Keep an eye on this! + */ +#if defined(__clang__) + using StackView = + corsika::stack::SecondaryView<typename corsika::setup::Stack::StackImpl, + corsika::setup::detail::StackWithGeometryInterface>; +#elif defined(__GNUC__) || defined(__GNUG__) + template <typename S, template <typename> typename _PIType = S::template PIType> + struct MakeView { + using type = corsika::stack::SecondaryView<typename S::StackImpl, _PIType>; + }; + using StackView = MakeView<corsika::setup::Stack>::type; +#endif + } // namespace corsika::setup #endif -- GitLab