Пример #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];
 }
Пример #2
0
    inline void read_record(record_type& rec)
    {
#if defined(MAPNIK_MEMORY_MAPPED_FILE)
        rec.set_data(file_.buffer().first + file_.tellg());
        file_.seekg(rec.size, std::ios::cur);
#else
        file_.read(rec.get_data(), rec.size);
#endif
    }
Пример #3
0
        bool insert_record(record_type const& rec) const
        {
#ifdef MAPNIK_DEBUG
            assert( unsigned(sqlite3_bind_parameter_count(stmt_)) == rec.size());
#endif
            record_type::const_iterator itr = rec.begin();
            record_type::const_iterator end = rec.end();
            int count = 1;
            for (; itr!=end;++itr)
            {
                binder op(stmt_,count++);
                if (!boost::apply_visitor(op,*itr))
                {
                    return false;
                }
            }

            sqlite3_step(stmt_);
            sqlite3_reset(stmt_);

            return true;
        }
Пример #4
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;
    }