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

Class Generators

tutorials/external/catch.hpp:3594–3635  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3592
3593 template<typename T>
3594 class Generators : public IGenerator<T> {
3595 std::vector<GeneratorWrapper<T>> m_generators;
3596 size_t m_current = 0;
3597
3598 void populate(GeneratorWrapper<T>&& generator) {
3599 m_generators.emplace_back(std::move(generator));
3600 }
3601 void populate(T&& val) {
3602 m_generators.emplace_back(value(std::move(val)));
3603 }
3604 template<typename U>
3605 void populate(U&& val) {
3606 populate(T(std::move(val)));
3607 }
3608 template<typename U, typename... Gs>
3609 void populate(U&& valueOrGenerator, Gs... moreGenerators) {
3610 populate(std::forward<U>(valueOrGenerator));
3611 populate(std::forward<Gs>(moreGenerators)...);
3612 }
3613
3614 public:
3615 template <typename... Gs>
3616 Generators(Gs... moreGenerators) {
3617 m_generators.reserve(sizeof...(Gs));
3618 populate(std::forward<Gs>(moreGenerators)...);
3619 }
3620
3621 T const& get() const override {
3622 return m_generators[m_current].get();
3623 }
3624
3625 bool next() override {
3626 if (m_current >= m_generators.size()) {
3627 return false;
3628 }
3629 const bool current_status = m_generators[m_current].next();
3630 if (!current_status) {
3631 ++m_current;
3632 }
3633 return m_current < m_generators.size();
3634 }
3635 };
3636
3637 template<typename... Ts>
3638 GeneratorWrapper<std::tuple<Ts...>> table( std::initializer_list<std::tuple<typename std::decay<Ts>::type...>> tuples ) {

Callers

nothing calls this directly

Calls 1

getMethod · 0.45

Tested by

no test coverage detected