try {  read(inputtop, "Param", input.param);   read(inputtop, "Cfg", input.cfg);   if( inputtop.count("StateInfo") == 1 ) { XMLReader xml_state_info(inputtop, "StateInfo"); std::ostringstream os; xml_state_info.print(os); input.stateInfo = os.str(); } else { XMLBufferWriter s_i_xml; push(s_i_xml, "StateInfo"); pop(s_i_xml); input.stateInfo = s_i_xml.printCurrentContext(); }   read(inputtop, "Prop", input.prop); } catch (const string& e) { QDPIO::cerr << "Error reading data: " << e << endl; throw; }
read(inputtop, "source_file", input.source_file); read(inputtop, "prop_file", input.prop_file); read(inputtop, "prop_volfmt", input.prop_volfmt);
void read(XMLReader& xml, const string& path, Propagator_input_t& input){  XMLReader inputtop(xml, path);  // Read the input  try  {    // The parameters holds the version number    read(inputtop, "Param", input.param);    // Read in the gauge configuration info    read(inputtop, "Cfg", input.cfg);    // Read any auxiliary state information    if( inputtop.count("StateInfo") == 1 ) {      XMLReader xml_state_info(inputtop, "StateInfo");      std::ostringstream os;      xml_state_info.print(os);      input.stateInfo = os.str();    }    else {       XMLBufferWriter s_i_xml;      push(s_i_xml, "StateInfo");      pop(s_i_xml);      input.stateInfo = s_i_xml.printCurrentContext();    }    // Read in the source/propagator info    read(inputtop, "Prop", input.prop);  }  catch (const string& e)   {    QDPIO::cerr << "Error reading data: " << e << endl;    throw;  }}