int CMuseDataNoteRecord::parseFromRecord(char *line) { //information retrievalble from col 13-43 //1.Parse the sound-information from colums 1 to 9 //1.1. normal notes or chords if(isCharInString(line[0],"ABCDEFGr ")){ //set note-type rdNoteType=nt_normal; //chord or not?? if(line[0]==' '){rdFlagChord=1;} else {rdFlagChord=0;} //parse pitch if(parsePitchInformation(&line[rdFlagChord],&rdPitchName,&rdPitchChromatic,&rdPitchOctave)){ MUSEERROR(err_ParsePitch,idLineNumber,rdFlagChord); } //parse duration if(parseDurationInformation(&line[5],&rdDuration)){ if( (rdFlagChord) && (parseParameters.lastNoteDuration!=-1) && (isBlanks(line+5,3)) ){ rdDuration=parseParameters.lastNoteDuration; } else { MUSEERROR(err_ParseDuration,idLineNumber,6); } } parseParameters.lastNoteDuration=rdDuration; //parse tie-flag if(!isCharInString(line[8],"- ")){ MUSEERROR(err_ParseTieFlag,idLineNumber,9) } if(line[8]=='-'){rdFlagTied=1;} }
SaErrorT verifyTextBuffers(SaHpiSessionIdT sessionId, SaHpiResourceIdT resourceId, SaHpiCtrlRecT * ctrlRec, int numBytesFirstLine, SaHpiBoolT * success) { SaErrorT status; SaHpiCtrlNumT ctrlNum = ctrlRec->Num; int lineNum; int maxLines = ctrlRec->TypeUnion.Text.MaxLines; SaHpiCtrlStateT ctrlState; int maxBytes = getMaxBytes(ctrlRec); *success = SAHPI_FALSE; // Get the first text buffer line. ctrlState.StateUnion.Text.Line = 1; status = saHpiControlGet(sessionId, resourceId, ctrlNum, NULL, &ctrlState); if (status != SA_OK) { e_print(saHpiControlGet, SA_OK, status); } else { // Verify that the text buffer matches what we expect. *success = matchesTextBuffer(&(ctrlState.StateUnion.Text.Text), maxBytes, BYTE_VALUE_2, numBytesFirstLine); if (!(*success)) { m_print("First line does match expected value!"); } else { // Verify that all of the other lines are empty. for (lineNum = 2; lineNum <= maxLines && *success; lineNum++) { ctrlState.StateUnion.Text.Line = lineNum; status = saHpiControlGet(sessionId, resourceId, ctrlNum, NULL, &ctrlState); if (status != SA_OK) { e_print(saHpiControlGet, SA_OK, status); break; } else if (ctrlState.StateUnion.Text.Text.DataLength == maxBytes && isBlanks(&(ctrlState.StateUnion.Text.Text), 0, maxBytes)) { // okay; do nothing } else if (ctrlState.StateUnion.Text.Text.DataLength == 0) { // okay; do nothing; } else { m_print("Text line %d is not blank!", lineNum); *success = SAHPI_FALSE; } } } } return status; }