MCPcopy Create free account
hub / github.com/Profactor/cv-plot / TakeGenerator

Class TakeGenerator

CvPlot/ext/catch2/inc/catch.hpp:4069–4097  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4067
4068 template <typename T>
4069 class TakeGenerator : public IGenerator<T> {
4070 GeneratorWrapper<T> m_generator;
4071 size_t m_returned = 0;
4072 size_t m_target;
4073 public:
4074 TakeGenerator(size_t target, GeneratorWrapper<T>&& generator):
4075 m_generator(std::move(generator)),
4076 m_target(target)
4077 {
4078 assert(target != 0 && "Empty generators are not allowed");
4079 }
4080 T const& get() const override {
4081 return m_generator.get();
4082 }
4083 bool next() override {
4084 ++m_returned;
4085 if (m_returned >= m_target) {
4086 return false;
4087 }
4088
4089 const auto success = m_generator.next();
4090 // If the underlying generator does not contain enough values
4091 // then we cut short as well
4092 if (!success) {
4093 m_returned = m_target;
4094 }
4095 return success;
4096 }
4097 };
4098
4099 template <typename T>
4100 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