// ---------------------------------------------------------------------------- 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(); }
// --------------------------------------------------------------------------- void CGtfReader::ReadSeqAnnots( TAnnots& annots, ILineReader& lr, ILineErrorListener* pEC) // ---------------------------------------------------------------------------- { xProgressInit(lr); string line; while (xGetLine(lr, line)) { if (IsCanceled()) { AutoPtr<CObjReaderLineException> pErr( CObjReaderLineException::Create( eDiag_Info, 0, "Reader stopped by user.", ILineError::eProblem_ProgressInfo)); ProcessError(*pErr, pEC); annots.clear(); return; } xReportProgress(pEC); try { if (xIsTrackTerminator(line)) { continue; } if (x_ParseBrowserLineGff(line, m_CurrentBrowserInfo)) { continue; } if (xParseTrackLine(line, pEC)) { continue; } if (x_ParseFeatureGff(line, annots, pEC)) { continue; } } catch(CObjReaderLineException& err) { err.SetLineNumber(m_uLineNumber); } } }