MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / TakeGenerator

Class TakeGenerator

extlibs/catch/include/catch/catch.hpp:4017–4045  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4015
4016 template <typename T>
4017 class TakeGenerator : public IGenerator<T> {
4018 GeneratorWrapper<T> m_generator;
4019 size_t m_returned = 0;
4020 size_t m_target;
4021 public:
4022 TakeGenerator(size_t target, GeneratorWrapper<T>&& generator):
4023 m_generator(std::move(generator)),
4024 m_target(target)
4025 {
4026 assert(target != 0 && "Empty generators are not allowed");
4027 }
4028 T const& get() const override {
4029 return m_generator.get();
4030 }
4031 bool next() override {
4032 ++m_returned;
4033 if (m_returned >= m_target) {
4034 return false;
4035 }
4036
4037 const auto success = m_generator.next();
4038 // If the underlying generator does not contain enough values
4039 // then we cut short as well
4040 if (!success) {
4041 m_returned = m_target;
4042 }
4043 return success;
4044 }
4045 };
4046
4047 template <typename T>
4048 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