diff --git a/src/Atoms.cpp b/src/Atoms.cpp index 3095c7dae1dcca82ea3374e8392ddfb02cb08e8a..e7fcef1a3d29758450654ad3a9c4d9489a3785f9 100644 --- a/src/Atoms.cpp +++ b/src/Atoms.cpp @@ -322,19 +322,19 @@ void Atoms::removeGroup(const std::string&name){ } void Atoms::writeBinary(std::ostream&o)const{ - o.write((const char*)&positions[0][0],natoms*3*sizeof(double)); - o.write((const char*)&masses[0],natoms*sizeof(double)); - o.write((const char*)&charges[0],natoms*sizeof(double)); - o.write((const char*)&box(0,0),9*sizeof(double)); - o.write((const char*)&energy,sizeof(double)); + o.write(reinterpret_cast<const char*>(&positions[0][0]),natoms*3*sizeof(double)); + o.write(reinterpret_cast<const char*>(&masses[0]),natoms*sizeof(double)); + o.write(reinterpret_cast<const char*>(&charges[0]),natoms*sizeof(double)); + o.write(reinterpret_cast<const char*>(&box(0,0)),9*sizeof(double)); + o.write(reinterpret_cast<const char*>(&energy),sizeof(double)); } void Atoms::readBinary(std::istream&i){ - i.read((char*)&positions[0][0],natoms*3*sizeof(double)); - i.read((char*)&masses[0],natoms*sizeof(double)); - i.read((char*)&charges[0],natoms*sizeof(double)); - i.read((char*)&box(0,0),9*sizeof(double)); - i.read((char*)&energy,sizeof(double)); + i.read(reinterpret_cast<char*>(&positions[0][0]),natoms*3*sizeof(double)); + i.read(reinterpret_cast<char*>(&masses[0]),natoms*sizeof(double)); + i.read(reinterpret_cast<char*>(&charges[0]),natoms*sizeof(double)); + i.read(reinterpret_cast<char*>(&box(0,0)),9*sizeof(double)); + i.read(reinterpret_cast<char*>(&energy),sizeof(double)); } double Atoms::getKBoltzmann()const{ diff --git a/src/GREX.cpp b/src/GREX.cpp index 00a4ad23e80d5c474f53424e783e4910888c4a5e..6271e5fb3fa11bb8c2e29f208e149c923ad4a61a 100644 --- a/src/GREX.cpp +++ b/src/GREX.cpp @@ -73,8 +73,8 @@ void GREX::cmd(const string&key,void*val){ int nw=words.size(); if(false){ } else if(nw==2 && words[0]=="getDeltaBias"){ - assert(allDeltaBias.size()==intercomm.Get_size()); - int rep; + assert(allDeltaBias.size()==static_cast<unsigned>(intercomm.Get_size())); + unsigned rep; Tools::convert(words[1],rep); assert(rep>=0 && rep<allDeltaBias.size()); double d=allDeltaBias[rep]/(atoms.getMDUnits().energy/atoms.getUnits().energy); diff --git a/src/PlumedMain.cpp b/src/PlumedMain.cpp index 134071a70a38145d212956f157c1317fc166607e..feb1326536c8dd86d75ed3123d1afccd1e7c7f94 100644 --- a/src/PlumedMain.cpp +++ b/src/PlumedMain.cpp @@ -17,8 +17,8 @@ using namespace PLMD; using namespace std; PlumedMain::PlumedMain(): - initialized(false), grex(NULL), + initialized(false), log(comm), step(0), active(false), @@ -217,7 +217,7 @@ void PlumedMain::cmd(const std::string & word,void*val){ if(!grex) grex=new GREX(*this); assert(grex); std::string kk=words[1]; - for(int i=2;i<words.size();i++) kk+=" "+words[i]; + for(unsigned i=2;i<words.size();i++) kk+=" "+words[i]; grex->cmd(kk.c_str(),val); } else{ // error diff --git a/src/Tools.cpp b/src/Tools.cpp index 6b08d2b42473d19db32b07ca73303a48ce6b8b6e..9e79c5c4e2ea11dc04b4380a48361647cd4314dd 100644 --- a/src/Tools.cpp +++ b/src/Tools.cpp @@ -15,6 +15,15 @@ bool Tools::convert(const string & str,int & t){ return remaining.length()==0; } +bool Tools::convert(const string & str,unsigned & t){ + istringstream istr(str.c_str()); + bool ok=istr>>t; + if(!ok) return false; + string remaining; + istr>>remaining; + return remaining.length()==0; +} + bool Tools::convert(const string & str,AtomNumber &a){ int i; bool r=convert(str,i); diff --git a/src/Tools.h b/src/Tools.h index 7ab3937aabddebf9283ea5add8cfb2d5c4b468f0..b398ca0533849f2873f5b1b77bb2df0f5662c55b 100644 --- a/src/Tools.h +++ b/src/Tools.h @@ -33,6 +33,8 @@ public: static bool convert(const std::string & str,double & t); /// Convert a string to a int, reading it static bool convert(const std::string & str,int & t); +/// Convert a string to an unsigned int, reading it + static bool convert(const std::string & str,unsigned & t); /// Convert a string to a atom number, reading it static bool convert(const std::string & str,AtomNumber & t); /// Convert a string to a string (i.e. copy)