| #include "benchmarks.pb.h" | 
 | #include "datasets/google_message1/proto2/benchmark_message1_proto2.pb.h" | 
 | #include "datasets/google_message1/proto3/benchmark_message1_proto3.pb.h" | 
 | #include "datasets/google_message2/benchmark_message2.pb.h" | 
 | #include "datasets/google_message3/benchmark_message3.pb.h" | 
 | #include "datasets/google_message4/benchmark_message4.pb.h" | 
 | #include "data_proto2_to_proto3_util.h" | 
 |  | 
 | #include <fstream> | 
 |  | 
 | using google::protobuf::util::Proto3DataStripper; | 
 |  | 
 | std::string ReadFile(const std::string& name) { | 
 |   std::ifstream file(name.c_str()); | 
 |   GOOGLE_CHECK(file.is_open()) << "Couldn't find file '" | 
 |       << name | 
 |       << "', please make sure you are running this command from the benchmarks" | 
 |       << " directory.\n"; | 
 |   return std::string((std::istreambuf_iterator<char>(file)), | 
 |                      std::istreambuf_iterator<char>()); | 
 | } | 
 |  | 
 | int main(int argc, char *argv[]) { | 
 |   if (argc % 2 == 0 || argc == 1) { | 
 |     std::cerr << "Usage: [input_files] [output_file_names] where " << | 
 |         "input_files are one to one mapping to output_file_names." << | 
 |         std::endl; | 
 |     return 1; | 
 |   } | 
 |  | 
 |   for (int i = argc / 2; i > 0; i--) { | 
 |     const std::string &input_file = argv[i]; | 
 |     const std::string &output_file = argv[i + argc / 2]; | 
 |  | 
 |     std::cerr << "Generating " << input_file | 
 |         << " to " << output_file << std::endl; | 
 |     benchmarks::BenchmarkDataset dataset; | 
 |     Message* message; | 
 |     std::string dataset_payload = ReadFile(input_file); | 
 |     GOOGLE_CHECK(dataset.ParseFromString(dataset_payload)) | 
 |       << "Can' t parse data file " << input_file; | 
 |  | 
 |     if (dataset.message_name() == "benchmarks.proto3.GoogleMessage1") { | 
 |       message = new benchmarks::proto3::GoogleMessage1; | 
 |     } else if (dataset.message_name() == "benchmarks.proto2.GoogleMessage1") { | 
 |       message = new benchmarks::proto2::GoogleMessage1; | 
 |     } else if (dataset.message_name() == "benchmarks.proto2.GoogleMessage2") { | 
 |       message = new benchmarks::proto2::GoogleMessage2; | 
 |     } else if (dataset.message_name() == | 
 |         "benchmarks.google_message3.GoogleMessage3") { | 
 |       message = new benchmarks::google_message3::GoogleMessage3; | 
 |     } else if (dataset.message_name() == | 
 |         "benchmarks.google_message4.GoogleMessage4") { | 
 |       message = new benchmarks::google_message4::GoogleMessage4; | 
 |     } else { | 
 |       std::cerr << "Unknown message type: " << dataset.message_name(); | 
 |       exit(1); | 
 |     } | 
 |  | 
 |     for (int i = 0; i < dataset.payload_size(); i++) { | 
 |       message->ParseFromString(dataset.payload(i)); | 
 |       Proto3DataStripper stripper; | 
 |       stripper.StripMessage(message); | 
 |       dataset.set_payload(i, message->SerializeAsString()); | 
 |     } | 
 |  | 
 |     std::ofstream ofs(output_file); | 
 |     ofs << dataset.SerializeAsString(); | 
 |     ofs.close(); | 
 |   } | 
 |  | 
 |  | 
 |   return 0; | 
 | } |