コード例 #1
0
	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();
	}
コード例 #2
0
ファイル: kern2cmn.cpp プロジェクト: mdsmus/humdrum
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:
            ;
        }
    }
}