void consume(record_type const& record) { ++m_RecordCounter; typename values_view_type::const_iterator it = record.attribute_values().begin(), end = record.attribute_values().end(); for (; it != end; ++it) ++m_Consumed[it->first]; }
/*! * Ordering operator */ result_type operator() (record_type const& left, record_type const& right) const { optional< attribute_value_type > left_value, right_value; typedef typename record_type::values_view_type values_view_type; typename values_view_type::const_iterator it_left = left.attribute_values().find(m_Name), it_right = right.attribute_values().find(m_Name); if (it_left != left.attribute_values().end()) left_value = it_left->second->get< attribute_value_type >(); if (it_right != right.attribute_values().end()) right_value = it_right->second->get< attribute_value_type >(); if (left_value) { if (right_value) return FunT::operator() (left_value.get(), right_value.get()); else return false; } else return !right_value; }