MCPcopy Create free account
hub / github.com/RenderKit/embree / TakeGenerator

Class TakeGenerator

tutorials/external/catch.hpp:3698–3726  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3696
3697 template <typename T>
3698 class TakeGenerator : public IGenerator<T> {
3699 GeneratorWrapper<T> m_generator;
3700 size_t m_returned = 0;
3701 size_t m_target;
3702 public:
3703 TakeGenerator(size_t target, GeneratorWrapper<T>&& generator):
3704 m_generator(std::move(generator)),
3705 m_target(target)
3706 {
3707 assert(target != 0 && "Empty generators are not allowed");
3708 }
3709 T const& get() const override {
3710 return m_generator.get();
3711 }
3712 bool next() override {
3713 ++m_returned;
3714 if (m_returned >= m_target) {
3715 return false;
3716 }
3717
3718 const auto success = m_generator.next();
3719 // If the underlying generator does not contain enough values
3720 // then we cut short as well
3721 if (!success) {
3722 m_returned = m_target;
3723 }
3724 return success;
3725 }
3726 };
3727
3728 template <typename T>
3729 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