26inline std::shared_ptr<Reader>
deduce_reader(
const std::string &filename)
28 InputInfo input(filename);
29 if (input.m_init && !input.m_error && input.m_reader)
return input.m_reader;
30 if (input.m_root || input.m_remote) {
31 HEPMC3_DEBUG(10,
"deduce_reader: Attempt ReaderRootTree for " << filename);
32 return std::make_shared<ReaderPlugin>(filename, libHepMC3rootIO, std::string(
"newReaderRootTreefile"));
34 if (input.m_protobuf) {
35 HEPMC3_DEBUG(10,
"deduce_reader: Attempt ProtobufIO for " << filename);
36 return std::make_shared<ReaderPlugin>(filename, libHepMC3protobufIO, std::string(
"newReaderprotobuffile"));
38#if HEPMC3_USE_COMPRESSION
41 snprintf(buf, 6,
"%s", input.m_head.at(0).c_str());
43 if ( det != Compression::plaintext ) {
44 HEPMC3_DEBUG(10,
"Detected supported compression: " << det);
48 std::string f = filename;
49 return input.native_reader(f);