MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/TriangleMeshDistance / TakeGenerator

Class TakeGenerator

tests/catch.hpp:3646–3674  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3644
3645 template <typename T>
3646 class TakeGenerator : public IGenerator<T> {
3647 GeneratorWrapper<T> m_generator;
3648 size_t m_returned = 0;
3649 size_t m_target;
3650 public:
3651 TakeGenerator(size_t target, GeneratorWrapper<T>&& generator):
3652 m_generator(std::move(generator)),
3653 m_target(target)
3654 {
3655 assert(target != 0 && "Empty generators are not allowed");
3656 }
3657 T const& get() const override {
3658 return m_generator.get();
3659 }
3660 bool next() override {
3661 ++m_returned;
3662 if (m_returned >= m_target) {
3663 return false;
3664 }
3665
3666 const auto success = m_generator.next();
3667 // If the underlying generator does not contain enough values
3668 // then we cut short as well
3669 if (!success) {
3670 m_returned = m_target;
3671 }
3672 return success;
3673 }
3674 };
3675
3676 template <typename T>
3677 GeneratorWrapper<T> take(size_t target, GeneratorWrapper<T>&& generator) {

Callers

nothing calls this directly

Calls 1

getMethod · 0.45

Tested by

no test coverage detected