示例#1
0
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;}
	} 
示例#2
0
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;
	}
}
示例#3
0
u8 *stripLeadingChars( u8 *ucString, u8 *ucChars )
{    
    for( ; *ucString; ucString++){
       if(!isCharInString( *ucString, ucChars ) ){
            break;
        } // if
    } // for
    
    return( ucString );
}
示例#4
0
void StringParser::skipUntil(const char *delim)
{
	while(*m_ptr && !isCharInString(*m_ptr,delim)) m_ptr++;
}
示例#5
0
void StringParser::skipChars(const char *chars)
{
//	if(!isCharInString(*m_ptr,chars)) m_error=1;

	for(;*m_ptr && isCharInString(*m_ptr,chars); m_ptr++) ;
}