diff --git a/corsika/detail/media/VolumeTreeNode.inl b/corsika/detail/media/VolumeTreeNode.inl index 14eaef6b5738412951e271cbc5761955b690e2e4..79e8b41005ac7947e2e94fcbf4076a40cacbf234 100644 --- a/corsika/detail/media/VolumeTreeNode.inl +++ b/corsika/detail/media/VolumeTreeNode.inl @@ -10,7 +10,7 @@ #pragma once -#include <corsika/framework/geometry/Volume.hpp> +#include <corsika/framework/geometry/IVolume.hpp> #include <corsika/media/IMediumModel.hpp> namespace corsika { @@ -89,4 +89,4 @@ namespace corsika { return std::make_shared<MediumType>(std::forward<Args>(args)...); } -} // namespace corsika \ No newline at end of file +} // namespace corsika diff --git a/corsika/framework/stack/Stack.hpp b/corsika/framework/stack/Stack.hpp index e30e4e7c54504b8ad3a5dfb063b17347322906e5..a7ed1cdb0f0cd2802b388c39769c21c02e2c0e4a 100644 --- a/corsika/framework/stack/Stack.hpp +++ b/corsika/framework/stack/Stack.hpp @@ -335,6 +335,65 @@ namespace corsika { } protected: + + /** + * increase stack size, create new particle at end of stack, related to parent + * particle/projectile + * + * This should only get internally called from a + * StackIterator::AddSecondary via ParticleBase + */ + /* + template <typename... TArgs> + stack_iterator_type addSecondary(stack_iterator_type& parent, const TArgs... v) { + CORSIKA_LOG_TRACE("Stack::AddSecondary"); + data_.incrementSize(); + deleted_.push_back(false); + return stack_iterator_type(*this, getSize() - 1, parent, v...); + } + + void swap(unsigned int a, unsigned int b) { + CORSIKA_LOG_TRACE("Stack::Swap(unsigned int)"); + data_.swap(a, b); + std::swap(deleted_[a], deleted_[b]); + } + void copy(unsigned int a, unsigned int b) { + CORSIKA_LOG_TRACE("Stack::Copy"); + data_.copy(a, b); + if (deleted_[b] && !deleted_[a]) nDeleted_--; + if (!deleted_[b] && deleted_[a]) nDeleted_++; + deleted_[b] = deleted_[a]; + } + + bool isDeleted(unsigned int i) const { + if (i >= deleted_.size()) return false; + return deleted_.at(i); + } + + void erase(unsigned int i) { + deleted_[i] = true; + nDeleted_++; + } + */ + + /* + * will remove from storage the element i. This is a helper + * function for SecondaryView. + */ + + /* + void purge(unsigned int i) { + unsigned int iStackBack = getSize() - 1; + // search for last non-deleted particle on stack + while (deleted_[iStackBack]) { iStackBack--; } + // copy entry from iStackBack to iStackFront + data_.copy(iStackBack, i); + if (deleted_[i]) nDeleted_--; + deleted_[i] = deleted_[iStackBack]; + data_.decrementSize(); + deleted_.pop_back(); + } + */ /** * increase stack size, create new particle at end of stack, related to parent * particle/projectile diff --git a/corsika/media/VolumeTreeNode.hpp b/corsika/media/VolumeTreeNode.hpp index 6d1aff6158b53e4a3dcb1e0fbc02ded8a3f20830..051f8c96cf412e48a72b732a45d951ac71152a57 100644 --- a/corsika/media/VolumeTreeNode.hpp +++ b/corsika/media/VolumeTreeNode.hpp @@ -8,7 +8,7 @@ #pragma once -#include <corsika/framework/geometry/Volume.hpp> +#include <corsika/framework/geometry/IVolume.hpp> #include <corsika/media/IMediumModel.hpp> #include <memory> #include <vector>