Exemple #1
0
 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];
 }
Exemple #2
0
    /*!
     * 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;
    }