// ---------------------------------------------------------------------------- CRef<CSeq_annot> CWiggleReader::ReadSeqAnnot( ILineReader& lr, IErrorContainer* pErrorContainer ) // ---------------------------------------------------------------------------- { m_ChromId.clear(); m_Values.clear(); if (lr.AtEOF()) { return CRef<CSeq_annot>(); } while ( xGetLine(lr) ) { CTempString s = xGetWord(pErrorContainer); if ( s == "browser" ) { xReadBrowser(); } else if ( s == "track" ) { xReadTrack(pErrorContainer); } else if ( s == "fixedStep" ) { SFixedStepInfo fixedStepInfo; xGetFixedStepInfo(fixedStepInfo, pErrorContainer); if (!m_ChromId.empty() && fixedStepInfo.mChrom != m_ChromId) { cerr << fixedStepInfo.mChrom << endl; lr.UngetLine(); return xGetAnnot(); } xReadFixedStepData(fixedStepInfo, lr, pErrorContainer); } else if ( s == "variableStep" ) { SVarStepInfo varStepInfo; xGetVarStepInfo(varStepInfo, pErrorContainer); if (!m_ChromId.empty() && varStepInfo.mChrom != m_ChromId) { lr.UngetLine(); return xGetAnnot(); } xReadVariableStepData(varStepInfo, lr, pErrorContainer); } else { xReadBedLine(s, pErrorContainer); } } return xGetAnnot(); }