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]; }
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 }
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; }
/*! * 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; }