From a5ff2453cdc94c605a91a3c50be81bc3708d2adf Mon Sep 17 00:00:00 2001
From: ralfulrich <ralf.ulrich@kit.edu>
Date: Sun, 4 Oct 2020 19:01:28 +0200
Subject: [PATCH] added at getter

---
 Framework/StackInterface/SecondaryView.h       | 6 ++++++
 Framework/StackInterface/Stack.h               | 7 +++++++
 Framework/StackInterface/testStackInterface.cc | 8 +++++++-
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/Framework/StackInterface/SecondaryView.h b/Framework/StackInterface/SecondaryView.h
index 5ed96731a..57798e84b 100644
--- a/Framework/StackInterface/SecondaryView.h
+++ b/Framework/StackInterface/SecondaryView.h
@@ -281,6 +281,12 @@ namespace corsika::stack {
       }
       return ConstStackIterator(*this, getSize() - 1 - i + 1);
     }
+    StackIterator at(unsigned int i) {
+      return StackIterator(*this, i);
+    }
+    ConstStackIterator at(unsigned int i) const {
+      return ConstStackIterator(*this, i);
+    }
     /// @}
 
     /**
diff --git a/Framework/StackInterface/Stack.h b/Framework/StackInterface/Stack.h
index 103d7b63c..5f22d8069 100644
--- a/Framework/StackInterface/Stack.h
+++ b/Framework/StackInterface/Stack.h
@@ -210,6 +210,13 @@ namespace corsika::stack {
       }
       return ConstStackIterator(*this, getSize() - 1 - i);
     }
+    StackIterator at(unsigned int i) {
+      return StackIterator(*this, i);
+    }
+
+    ConstStackIterator at(unsigned int i) const {
+      return ConstStackIterator(*this, i);
+    }
     /// @}
 
     StackIterator GetNextParticle() {
diff --git a/Framework/StackInterface/testStackInterface.cc b/Framework/StackInterface/testStackInterface.cc
index 25ba3e1af..cef564e8b 100644
--- a/Framework/StackInterface/testStackInterface.cc
+++ b/Framework/StackInterface/testStackInterface.cc
@@ -40,10 +40,16 @@ TEST_CASE("Stack", "[Stack]") {
     // construct a valid Stack object
     StackTest s;
     s.Clear();
-    s.AddParticle(std::tuple{0.});
+    auto pTest0 = s.AddParticle(std::tuple{0.});
+    CHECK(s.getSize() == 1);
+    auto pTest1 = s.AddParticle(std::tuple{1.});
     s.Copy(s.cbegin(), s.begin());
     s.Swap(s.begin(), s.begin());
     CHECK(s.getSize() == 1);
+    auto pTestAt = s.at(0);
+    CHECK(pTestAt == pTest);
+    auto pTestFirst = s.first();
+    CHECK(pTestFirst == pTest);
   }
 
   SECTION("construct") {
-- 
GitLab