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

Class Generators

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

Source from the content-addressed store, hash-verified

3963
3964 template<typename T>
3965 class Generators : public IGenerator<T> {
3966 std::vector<GeneratorWrapper<T>> m_generators;
3967 size_t m_current = 0;
3968
3969 void populate(GeneratorWrapper<T>&& generator) {
3970 m_generators.emplace_back(std::move(generator));
3971 }
3972 void populate(T&& val) {
3973 m_generators.emplace_back(value(std::move(val)));
3974 }
3975 template<typename U>
3976 void populate(U&& val) {
3977 populate(T(std::move(val)));
3978 }
3979 template<typename U, typename... Gs>
3980 void populate(U&& valueOrGenerator, Gs... moreGenerators) {
3981 populate(std::forward<U>(valueOrGenerator));
3982 populate(std::forward<Gs>(moreGenerators)...);
3983 }
3984
3985 public:
3986 template <typename... Gs>
3987 Generators(Gs... moreGenerators) {
3988 m_generators.reserve(sizeof...(Gs));
3989 populate(std::forward<Gs>(moreGenerators)...);
3990 }
3991
3992 T const& get() const override {
3993 return m_generators[m_current].get();
3994 }
3995
3996 bool next() override {
3997 if (m_current >= m_generators.size()) {
3998 return false;
3999 }
4000 const bool current_status = m_generators[m_current].next();
4001 if (!current_status) {
4002 ++m_current;
4003 }
4004 return m_current < m_generators.size();
4005 }
4006 };
4007
4008 template<typename... Ts>
4009 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