void readBufferGZ2() { if (_r_buf1 == _r_buf2) readBuffer1(); else { (*_r_buf2_size) = gzread(_r_gzfp2, _r_buf2, 10000000); (*_r_buf2_pos) = 0; } }
void readBufferTxT2() { if (_r_buf1 == _r_buf2) readBuffer1(); else { (*_r_buf2_size) = fread(_r_buf2, 1, 10000000, _r_fp2); (*_r_buf2_pos) = 0; } }
int readFirstSeq(char *seq , int line) { int i=0, l=0; char cur; while (1) { if (*_r_buf1_pos ==*_r_buf1_size) { readBuffer1(); if (*_r_buf1_size == 0) return 0; } cur = _r_buf1[*_r_buf1_pos]; (*_r_buf1_pos)++; if ( cur == '\n') { if (l>0) i=l; seq[i]='\0'; return i; } if (l==0 && cur == ' ') { l = i; } if (cropSize>0 && line%2==0 && i==cropSize) continue; seq[i++]=cur; } }
Task::ReportResult GTest_hmmCompare::report() { QFileInfo fi1(env->getVar("COMMON_DATA_DIR")+"/"+file1Name); QString url1 = fi1.absoluteFilePath(); IOAdapterFactory* iof1 = AppContext::getIOAdapterRegistry()->getIOAdapterFactoryById(IOAdapterUtils::url2io(url1)); QScopedPointer<IOAdapter> io1(iof1->createIOAdapter()); //QFile file1(fi1.absoluteFilePath()); QFileInfo fi2(env->getVar("TEMP_DATA_DIR")+"/"+file2Name); QString url2 = fi2.absoluteFilePath(); IOAdapterFactory* iof2 = AppContext::getIOAdapterRegistry()->getIOAdapterFactoryById(IOAdapterUtils::url2io(url2)); QScopedPointer<IOAdapter> io2(iof2->createIOAdapter()); fi2.absoluteDir().mkdir(fi2.absoluteDir().absolutePath()); // ??? //QFile file2(fi2.absoluteFilePath()); if(!io1->open(url1, IOAdapterMode_Read)){ stateInfo.setError( QString("File opening error \"%1\", description: ").arg(url1) );//+file1.errorString() ); return ReportResult_Finished; } //file2.open(QIODevice::ReadOnly|QIODevice::Text); if(!io2->open(url2, IOAdapterMode_Read)){ stateInfo.setError( QString("File opening error \"%1\", description: ").arg(url2) );//+file2.errorString() ); return ReportResult_Finished; } static int READ_BUFF_SIZE = 4096; qint64 len1, len2, line1 = 0, line2 = 0; QByteArray readBuffer1(READ_BUFF_SIZE, '\0'), readBuffer2(READ_BUFF_SIZE, '\0'); char* cbuff1 = readBuffer1.data(); char* cbuff2 = readBuffer2.data(); QRegExp rx("CKSUM "); bool ok = false; while ( (len1 = io1->readUntil(cbuff1, READ_BUFF_SIZE, TextUtils::LINE_BREAKS, IOAdapter::Term_Include)) > 0 ) { line1++; if ((ok = rx.indexIn(QString(QByteArray(cbuff1, len1))) !=-1)) { break; } } if(!ok){ stateInfo.setError( QString("can't find CKSUM in file \"%1\"").arg(url1) ); return ReportResult_Finished; } ok = false; while ( (len2 = io2->readUntil(cbuff2, READ_BUFF_SIZE, TextUtils::LINE_BREAKS, IOAdapter::Term_Include)) > 0 ) { line2++; if ((ok = rx.indexIn(QString(QByteArray(cbuff2, len2))) !=-1)) { break; } } if(!ok){ stateInfo.setError( QString("can't find CKSUM in file \"%1\"").arg(url2) ); return ReportResult_Finished; } do{ len1 = io1->readUntil(cbuff1, READ_BUFF_SIZE, TextUtils::LINE_BREAKS, IOAdapter::Term_Include); len2 = io2->readUntil(cbuff2, READ_BUFF_SIZE, TextUtils::LINE_BREAKS, IOAdapter::Term_Include); if(len1 == 0 && 0 != len2){ stateInfo.setError( QString("hmm-compare: files not equal, desc: files length mismatch") ); return ReportResult_Finished; } line1++;line2++; QString s1 = QString::fromLatin1(cbuff1, len1).trimmed(); QString s2 = QString::fromLatin1(cbuff2, len2).trimmed(); if(s1 != s2) { stateInfo.setError( QString("hmm-compare: files not equal, desc: file1, line %1 \"%2\", expected file2, line %3 \"%4\"") .arg(line1).arg(s1).arg(line2).arg(s2) ); return ReportResult_Finished; } } while(len1 > 0); return ReportResult_Finished; }