From 114a650f9e1dc776c53aaa14b4fd5a4bf7439113 Mon Sep 17 00:00:00 2001
From: ralfulrich <ralf.ulrich@kit.edu>
Date: Wed, 13 Oct 2021 16:06:21 +0200
Subject: [PATCH] return new volume

---
 .../detail/media/LayeredSphericalAtmosphereBuilder.inl   | 9 +++++----
 corsika/media/LayeredSphericalAtmosphereBuilder.hpp      | 9 ++++++---
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl b/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl
index 17371ff3b..0f17cf7c8 100644
--- a/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl
+++ b/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl
@@ -37,10 +37,10 @@ namespace corsika {
 
   template <typename TMediumInterface, template <typename> typename TMediumModelExtra,
             typename... TModelArgs>
-  inline void LayeredSphericalAtmosphereBuilder<
-      TMediumInterface, TMediumModelExtra,
-      TModelArgs...>::addExponentialLayer(GrammageType b, LengthType c,
-                                          LengthType upperBoundary) {
+  inline typename LayeredSphericalAtmosphereBuilder<TMediumInterface, TMediumModelExtra,
+                                                    TModelArgs...>::volume_tree_node*
+  LayeredSphericalAtmosphereBuilder<TMediumInterface, TMediumModelExtra, TModelArgs...>::
+      addExponentialLayer(GrammageType b, LengthType c, LengthType upperBoundary) {
 
     auto const radius = planetRadius_ + upperBoundary;
     checkRadius(radius);
@@ -68,6 +68,7 @@ namespace corsika {
     }
 
     layers_.push(std::move(node));
+    return layers_.top().get();
   }
 
   template <typename TMediumInterface, template <typename> typename TMediumModelExtra,
diff --git a/corsika/media/LayeredSphericalAtmosphereBuilder.hpp b/corsika/media/LayeredSphericalAtmosphereBuilder.hpp
index 6c178f458..09bcabc06 100644
--- a/corsika/media/LayeredSphericalAtmosphereBuilder.hpp
+++ b/corsika/media/LayeredSphericalAtmosphereBuilder.hpp
@@ -75,8 +75,12 @@ namespace corsika {
         , additionalModelArgs_{args...} {}
 
   public:
+    typedef typename VolumeTreeNode<TMediumInterface>::VTN_type volume_tree_node;
+    typedef typename VolumeTreeNode<TMediumInterface>::VTNUPtr volume_tree_node_uptr;
+
     void setNuclearComposition(NuclearComposition const& composition);
-    void addExponentialLayer(GrammageType b, LengthType c, LengthType upperBoundary);
+    volume_tree_node* addExponentialLayer(GrammageType b, LengthType c,
+                                          LengthType upperBoundary);
     void addLinearLayer(LengthType c, LengthType upperBoundary);
 
     void addTabularLayer(std::function<MassDensityType(LengthType)> const& funcRho,
@@ -102,8 +106,7 @@ namespace corsika {
     LengthType planetRadius_;
     std::tuple<TModelArgs...> const additionalModelArgs_;
 
-    std::stack<typename VolumeTreeNode<TMediumInterface>::VTNUPtr>
-        layers_; // innermost layer first
+    std::stack<volume_tree_node_uptr> layers_; // innermost layer first
 
   }; // end class LayeredSphericalAtmosphereBuilder
 
-- 
GitLab