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;} }
void StringParser::getUntil(const char *delim,char *str,Integer N) { for(;*m_ptr && !isCharInString(*m_ptr,delim) && N>0; m_ptr++, str++, N--) { *str = *m_ptr; } }
u8 *stripLeadingChars( u8 *ucString, u8 *ucChars ) { for( ; *ucString; ucString++){ if(!isCharInString( *ucString, ucChars ) ){ break; } // if } // for return( ucString ); }
void StringParser::skipUntil(const char *delim) { while(*m_ptr && !isCharInString(*m_ptr,delim)) m_ptr++; }
void StringParser::skipChars(const char *chars) { // if(!isCharInString(*m_ptr,chars)) m_error=1; for(;*m_ptr && isCharInString(*m_ptr,chars); m_ptr++) ; }