void EmmaParser::parseContainer(EmmaDoc &doc, pugi::xml_node containerNode) { std::string containerName = containerNode.name(); if(containerName == "emma:interpretation") { doc.setContainerType("interpretation"); parseInterpretation(doc, containerNode); } else if(containerName == "emma:sequence") { doc.setContainerType("sequence"); for (pugi::xml_node interpretation = containerNode.first_child(); interpretation; interpretation = interpretation.next_sibling()) { parseInterpretation(doc, interpretation); } } else if(containerName == "emma:one-of") { doc.setContainerType("one-of"); for (pugi::xml_node interpretation = containerNode.first_child(); interpretation; interpretation = interpretation.next_sibling()) { parseInterpretation(doc, interpretation); } } doc.sortInputs(); }
void processTrack(HumdrumFile& infile, int track) { int status; int i, j; for (i=0; i<infile.getNumLines(); i++) { if (start > i && track != infile.getMaxTracks()) { // skip over global comments after the first time: i = start; } if (terminus < i && terminus != -1 && track != 1) { // skip over global comments after the first time: break; } switch (infile[i].getType()) { case E_humrec_data: for (j=0; j<infile[i].getFieldCount(); j++) { if (infile[i].getPrimaryTrack(j) == track) { convertKernNoteToDM(infile, i, j, track); break; // don't process second part of split track } } break; case E_humrec_bibliography: cout << ";;;" << (char*)&infile[i][0][3] << "\n"; break; case E_humrec_global_comment: cout << ";;" << (char*)&infile[i][0][2] << "\n"; break; case E_humrec_data_comment: for (j=0; j<infile[i].getFieldCount(); j++) { if (infile[i].getPrimaryTrack(j) == track) { cout << ";" << (char*)&infile[i][j][1] << "\n"; break; // don't process second part of split track } } break; case E_humrec_data_measure: break; case E_humrec_interpretation: status = parseInterpretation(infile, i, track); if (status == 0) { return; } default: ; } } }