Files
rdkit/Code/GraphMol/FileParsers/PDBSupplier.cpp
Brian Kelley 4c1ea25fda Fix a hang when trying to read mols from a directory not a file on linux (#2983)
* Fix a hang when trying to read mols from a directory not a file on linux

* thrown an exception at construction time

* clarify the readme

* update release notes

* Refactor the stream opening and checking code to a common method

Co-authored-by: Brian Kelley <bkelley@relaytx.com>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
2020-03-09 15:27:58 +01:00

56 lines
1.6 KiB
C++

//
// Copyright (C) 2013 Greg Landrum and NextMove Software
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
// The contents are covered by the terms of the BSD license
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
#include <iostream>
#include <fstream>
#include <RDGeneral/BadFileException.h>
#include <GraphMol/FileParsers/MolSupplier.h>
#include <GraphMol/FileParsers/FileParsers.h>
namespace RDKit {
PDBMolSupplier::PDBMolSupplier(std::istream *inStream, bool takeOwnership,
bool sanitize, bool removeHs,
unsigned int flavor, bool proximityBonding) {
dp_inStream = inStream;
df_owner = takeOwnership;
df_sanitize = sanitize;
df_removeHs = removeHs;
d_flavor = flavor;
df_proximityBonding = proximityBonding;
}
PDBMolSupplier::PDBMolSupplier(const std::string &fileName, bool sanitize,
bool removeHs, unsigned int flavor,
bool proximityBonding) {
dp_inStream = openAndCheckStream(fileName);
df_owner = true;
df_sanitize = sanitize;
df_removeHs = removeHs;
d_flavor = flavor;
df_proximityBonding = proximityBonding;
}
void PDBMolSupplier::init() {}
void PDBMolSupplier::reset() {}
ROMol *PDBMolSupplier::next() {
return (ROMol *)PDBDataStreamToMol(dp_inStream, df_sanitize, df_removeHs,
d_flavor, df_proximityBonding);
}
bool PDBMolSupplier::atEnd() {
if (dp_inStream->eof()) {
return true;
}
int ch = dp_inStream->peek();
return ch == -1;
}
} // namespace RDKit