00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: HINFile.h,v 1.30 2005/12/23 17:01:44 amoll Exp $ 00005 // 00006 00007 #ifndef BALL_FORMAT_HINFILE_H 00008 #define BALL_FORMAT_HINFILE_H 00009 00010 #ifndef BALL_FORMAT_GENERICMOLFILE_H 00011 # include <BALL/FORMAT/genericMolFile.h> 00012 #endif 00013 00014 #ifndef BALL_MATHS_SIMPLEBOX3_H 00015 # include <BALL/MATHS/simpleBox3.h> 00016 #endif 00017 00018 namespace BALL 00019 { 00025 class BALL_EXPORT HINFile 00026 : public GenericMolFile 00027 { 00028 public: 00029 00030 BALL_CREATE(HINFile) 00031 00032 00035 00036 00038 HINFile() 00039 ; 00040 00043 HINFile(const HINFile& file) 00044 throw(Exception::FileNotFound); 00045 00048 HINFile(const String& filename, File::OpenMode open_mode = std::ios::in) 00049 throw(Exception::FileNotFound); 00050 00053 virtual ~HINFile() 00054 ; 00055 00057 00060 00063 const HINFile& operator = (const HINFile& rhs) 00064 throw(Exception::FileNotFound); 00065 00067 00070 00074 virtual bool write(const Molecule& molecule) 00075 throw(File::CannotWrite); 00076 00080 virtual bool write(const System& system) 00081 throw(File::CannotWrite); 00082 00085 virtual Molecule* read() 00086 throw(Exception::ParseError); 00087 00090 virtual bool read(System& system) 00091 throw(Exception::ParseError); 00092 00094 00097 00100 bool hasPeriodicBoundary() const; 00101 00106 SimpleBox3 getPeriodicBoundary() const; 00107 00114 float getTemperature() const; 00115 00117 00118 protected: 00119 00120 SimpleBox3 box_; 00121 00123 virtual void initRead_(); 00124 00125 float temperature_; 00126 00127 void writeAtom_(const Atom& atom, Size number, Size atom_offset); 00128 }; 00129 } // namespace BALL 00130 00131 #endif // BALL_FORMAT_HINFILE_H