31 unsigned int hard_limit)
32 : m_grouping_criteria(grouping_criteria), m_group_factory(group_factory), m_hard_limit(hard_limit) {
39 auto source_ptr = source.
get();
45 unsigned int current_group_size = (matched_group !=
nullptr) ? matched_group->
size() : 1;
50 if (current_group_size + (*group_it)->size() >
m_hard_limit) {
56 bool in_group =
false;
57 for (
auto&
s : **group_it) {
65 if (matched_group ==
nullptr) {
66 matched_group = group_it->get();
70 groups_to_remove.emplace_back(group_it);
76 if (matched_group ==
nullptr) {
82 for (
auto& group_it : groups_to_remove) {
93 for (
auto& source : **group_it) {
102 for (
auto& group : groups_to_process) {