#ifndef chimera_Mol2io_h #define chimera_Mol2io_h #if defined(_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif #include #include #include #include "Mol2ioHelper.h" #include #include #include #include #include #include "_molecule_config.h" namespace molecule { class MOLECULE_IMEX Mol2io: public otf::WrapPyObj { public: virtual ~Mol2io(); public: std::vector readMol2stream(std::istream &, const char *, int); std::vector readMol2file(const char *filename); void writeMol2stream(const std::vector &, std::ostream &, const char *filename); void writeMol2file(const std::vector &, const char *filename); inline bool ok(); inline std::string error(); void addAtomWithId(int id, Atom *a); inline Atom *atomWithId(int id) const; inline void clearAtomIdMap(); inline void addAtomToSubst(int substId, const std::string &name, Atom *a); inline std::vector extractAtomsInSubst(int substId); inline std::string & substIdToName(int); inline std::vector substIds(); inline void clearSAMap(); static bool isBlankLine(const std::string &s); static std::vector splitLine(const std::string &s); private: typedef std::map, std::less > SAMap; typedef std::map SNMap; Mol2ioHelper *helper; std::string ioErr; std::map > asn; // Atom ID -> Atom* SAMap sam; // residue id -> atom list SNMap snm; // residue id -> res name (fallback // for missing SUBSTRUCTURE) public: virtual PyObject* wpyNew() const; private: Mol2io(const Mol2io&); // disable Mol2io& operator=(const Mol2io&); // disable public: Mol2io(Mol2ioHelper *h); }; } // namespace molecule #endif