int main(){ std::ifstream is(in_file, std::ifstream::binary); std::ofstream os(out_file, std::ofstream::binary); boost::uint32_t current_time = 0; if (is){ while (!is.eof()){ binary_reader::market_message *message = new binary_reader::market_message(is); if (!is.eof() && isAllowedType(*message)){ if (current_time < message->time()){ current_time = message->time(); } (buffers_container[message->type()]).write(*message); } } std::map<boost::uint32_t, buffer>::iterator it; it = buffers_container.begin(); while (it != buffers_container.end()){ boost::uint32_t type = (*it).first; double average = static_cast<double>((*it).second.count()) / static_cast<double>(current_time); os.write(reinterpret_cast<char*>(&type), sizeof(type)); os.write(reinterpret_cast<char*>(&average), sizeof(average)); std::cout << "type:" << type << ", average:" << average << std::endl; it++; } is.close(); os.close(); } else { std::cout << "No input file found " << in_file << std::endl; } }
bool Nuria::Serializer::readField (void *object, Nuria::MetaField &field, QVariantMap &data) { QVariant value = field.read (object); QString name = QString::fromLatin1 (field.name ()); if (isAllowedType (value.userType ()) || this->d->additionalTypes.contains (field.typeName ())) { data.insert (name, value); return true; } bool ignore = false; if (fieldToVariant (value, ignore)) { if (!ignore) { data.insert (name, value); } return true; } return false; }