- return result;
-}
-
-ReaderAlignment BamMultiReaderPrivate::OpenReader(const string& filename, bool* ok) {
-
- // clear status flag
- *ok = false;
-
- // create new BamReader & BamAlignment
- BamReader* reader = new BamReader;
- BamAlignment* alignment = new BamAlignment;
-
- // if reader opens OK
- if ( reader->Open(filename) ) {
-
- // if first alignment reads OK
- if ( LoadNextAlignment(reader, alignment) ) {
- *ok = true;
- return make_pair(reader, alignment);
- }
-
- // could not read alignment
- else {
- cerr << "BamMultiReader WARNING: Could not read first alignment from "
- << filename << ", ignoring file" << endl;
- }
- }
-
- // reader could not open
- else {
- cerr << "BamMultiReader WARNING: Could not open "
- << filename << ", ignoring file" << endl;
- }
-
- // if we get here, there was a problem with this BAM file (opening or reading)
- // clean up memory allocation & return null pointer
- delete reader;
- delete alignment;
- return ReaderAlignment();
-}
-
-// print associated filenames to stdout
-void BamMultiReaderPrivate::PrintFilenames(void) const {
- const vector<string>& filenames = Filenames();
- vector<string>::const_iterator filenameIter = filenames.begin();
- vector<string>::const_iterator filenameEnd = filenames.end();
- for ( ; filenameIter != filenameEnd; ++filenameIter )
- cout << (*filenameIter) << endl;
+ if ( errorsEncountered ) {
+ const string currentError = m_errorString;
+ const string message = string("could not open all index files: \n\t") + currentError;
+ SetErrorString("BamMultiReader::OpenIndexes", message);
+ return false;
+ } else
+ return true;