MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/TriangleMeshDistance / Generators

Class Generators

tests/catch.hpp:3576–3617  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3574
3575 template<typename T>
3576 class Generators : public IGenerator<T> {
3577 std::vector<GeneratorWrapper<T>> m_generators;
3578 size_t m_current = 0;
3579
3580 void populate(GeneratorWrapper<T>&& generator) {
3581 m_generators.emplace_back(std::move(generator));
3582 }
3583 void populate(T&& val) {
3584 m_generators.emplace_back(value(std::move(val)));
3585 }
3586 template<typename U>
3587 void populate(U&& val) {
3588 populate(T(std::move(val)));
3589 }
3590 template<typename U, typename... Gs>
3591 void populate(U&& valueOrGenerator, Gs... moreGenerators) {
3592 populate(std::forward<U>(valueOrGenerator));
3593 populate(std::forward<Gs>(moreGenerators)...);
3594 }
3595
3596 public:
3597 template <typename... Gs>
3598 Generators(Gs... moreGenerators) {
3599 m_generators.reserve(sizeof...(Gs));
3600 populate(std::forward<Gs>(moreGenerators)...);
3601 }
3602
3603 T const& get() const override {
3604 return m_generators[m_current].get();
3605 }
3606
3607 bool next() override {
3608 if (m_current >= m_generators.size()) {
3609 return false;
3610 }
3611 const bool current_status = m_generators[m_current].next();
3612 if (!current_status) {
3613 ++m_current;
3614 }
3615 return m_current < m_generators.size();
3616 }
3617 };
3618
3619 template<typename... Ts>
3620 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