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

Class TakeGenerator

external/catch.hpp:4118–4146  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4116
4117 template <typename T>
4118 class TakeGenerator : public IGenerator<T> {
4119 GeneratorWrapper<T> m_generator;
4120 size_t m_returned = 0;
4121 size_t m_target;
4122 public:
4123 TakeGenerator(size_t target, GeneratorWrapper<T>&& generator):
4124 m_generator(std::move(generator)),
4125 m_target(target)
4126 {
4127 assert(target != 0 && "Empty generators are not allowed");
4128 }
4129 T const& get() const override {
4130 return m_generator.get();
4131 }
4132 bool next() override {
4133 ++m_returned;
4134 if (m_returned >= m_target) {
4135 return false;
4136 }
4137
4138 const auto success = m_generator.next();
4139 // If the underlying generator does not contain enough values
4140 // then we cut short as well
4141 if (!success) {
4142 m_returned = m_target;
4143 }
4144 return success;
4145 }
4146 };
4147
4148 template <typename T>
4149 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