26 namespace SourceXtractor {
30 unsigned int hard_limit)
31 : m_grouping_criteria(grouping_criteria), m_group_factory(group_factory), m_hard_limit(hard_limit) {
38 auto source_ptr = source.
get();
44 unsigned int current_group_size = (matched_group !=
nullptr) ? matched_group->
size() : 1;
49 if (current_group_size + (*group_it)->size() >
m_hard_limit) {
55 bool in_group =
false;
56 for (
auto&
s : **group_it) {
64 if (matched_group ==
nullptr) {
65 matched_group = group_it->get();
69 groups_to_remove.emplace_back(group_it);
75 if (matched_group ==
nullptr) {
81 for (
auto& group_it : groups_to_remove) {
92 for (
auto& source : **group_it) {
101 for (
auto& group : groups_to_process) {