51#ifndef DOXYGEN_SHOULD_SKIP_THIS
64 _generators_(from._nb_generators_, nullptr), _nb_generators_(from._nb_generators_),
65 _setInputRow_performed_(from._nb_generators_, 0) {
67 for (std::size_t i = std::size_t(0); i < _nb_generators_; ++i)
68 _generators_[i] = from._generators_[i]->clone();
70 GUM_CONS_CPY(DBRowGeneratorSet);
74 DBRowGeneratorSet* DBRowGeneratorSet::clone()
const {
return new DBRowGeneratorSet(*
this); }
77 void DBRowGeneratorSet::clear() {
79 for (
auto gen: _generators_) {
85 _nb_generators_ = std::size_t(0);
86 _output_row_ =
nullptr;
87 _setInputRow_performed_.clear();
91 DBRowGeneratorSet::~DBRowGeneratorSet() {
92 GUM_DESTRUCTOR(DBRowGeneratorSet);
97 DBRowGeneratorSet& DBRowGeneratorSet::operator=(
const DBRowGeneratorSet& from) {
100 std::vector< DBRowGenerator* > new_generators(from._nb_generators_,
nullptr);
101 for (std::size_t i = std::size_t(0); i < from._nb_generators_; ++i) {
103 new_generators[i] = from._generators_[i]->clone();
105 for (std::size_t j = std::size_t(0); j < i; ++j) {
106 delete new_generators[j];
113 std::vector< int > setInputDBrow_performed(from._nb_generators_, 0);
117 _generators_ = std::move(new_generators);
118 _nb_generators_ = from._nb_generators_;
119 _output_row_ =
nullptr;
120 _setInputRow_performed_ = std::move(setInputDBrow_performed);
127 DBRowGeneratorSet& DBRowGeneratorSet::operator=(DBRowGeneratorSet&& from) {
131 _generators_ = std::move(from._generators_);
132 _nb_generators_ = from._nb_generators_;
133 _output_row_ = from._output_row_;
134 _setInputRow_performed_ = std::move(from._setInputRow_performed_);
140 bool DBRowGeneratorSet::_produceNextRow_(
const DBRow< DBTranslatedValue >* input_row,
161 const DBRow< DBTranslatedValue >* row = input_row;
162 while (i != _nb_generators_) {
167 if (_setInputRow_performed_[i] == 0) {
169 const bool has_rows =
generator->setInputRow(*row);
173 if (i > std::size_t(0)) {
178 _output_row_ =
nullptr;
185 _setInputRow_performed_[i] = 1;
203 _setInputRow_performed_[i] = 0;
204 if (i > std::size_t(0)) {
209 _output_row_ =
nullptr;
class for packing sets of generators
The class used to pack sets of generators.
DBRowGeneratorSet()
default constructor
std::mt19937 & generator()
include the inlined functions if necessary
gum is the global namespace for all aGrUM entities