X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDLoaderBase.cxx;h=b2f8fd78a5e53b3cf84b2559bff8811449dbf451;hb=97ace34a0d092b676228a0ab6cb5abefa9637e32;hp=dd69727dab25b17cc9474bbc304147e68cdbfb28;hpb=10f37bf6f33a762626d7f1093b2f5450c1688667;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDLoaderBase.cxx b/src/MEDLoader/MEDLoaderBase.cxx index dd69727da..b2f8fd78a 100644 --- a/src/MEDLoader/MEDLoaderBase.cxx +++ b/src/MEDLoader/MEDLoaderBase.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// Author : Anthony Geay (CEA/DEN) #include "MEDLoaderBase.hxx" #include "InterpKernelException.hxx" @@ -27,16 +28,16 @@ const char MEDLoaderBase::WHITE_SPACES[]=" \n"; -int MEDLoaderBase::getStatusOfFile(const char *fileName) +int MEDLoaderBase::getStatusOfFile(const std::string& fileName) { std::ifstream ifs; - ifs.open(fileName); + ifs.open(fileName.c_str()); if((ifs.rdstate() & std::ifstream::failbit)!=0) { ifs.close(); return NOT_EXIST; } - std::ofstream ofs(fileName,std::ios_base::app); + std::ofstream ofs(fileName.c_str(),std::ios_base::app); if((ofs.rdstate() & std::ofstream::failbit)!=0) { return EXIST_RDONLY; @@ -52,7 +53,7 @@ char *MEDLoaderBase::buildEmptyString(int lgth) return ret; } -void MEDLoaderBase::getDirAndBaseName(const std::string& fullName, std::string& dirName, std::string& baseName) throw(INTERP_KERNEL::Exception) +void MEDLoaderBase::getDirAndBaseName(const std::string& fullName, std::string& dirName, std::string& baseName) { std::size_t pos=fullName.find_last_of(getPathSep()); if(pos!=std::string::npos) @@ -67,7 +68,7 @@ void MEDLoaderBase::getDirAndBaseName(const std::string& fullName, std::string& } } -std::string MEDLoaderBase::joinPath(const std::string& dirName, const std::string& baseName) throw(INTERP_KERNEL::Exception) +std::string MEDLoaderBase::joinPath(const std::string& dirName, const std::string& baseName) { if(!dirName.empty()) return dirName+getPathSep()+baseName; @@ -75,7 +76,7 @@ std::string MEDLoaderBase::joinPath(const std::string& dirName, const std::strin return baseName; } -std::string MEDLoaderBase::getPathSep() throw(INTERP_KERNEL::Exception) +std::string MEDLoaderBase::getPathSep() { #ifndef WIN32 return std::string("/"); @@ -88,7 +89,7 @@ std::string MEDLoaderBase::buildUnionUnit(const char *name, int nameLgth, const { std::string ret(buildStringFromFortran(name,nameLgth)); std::string unitCpp(buildStringFromFortran(unit,unitLgth)); - if(unitCpp[0]=='\0') + if(unitCpp.empty() || unitCpp[0]=='\0') return ret; ret+=" ["; ret+=unitCpp; @@ -129,11 +130,11 @@ void MEDLoaderBase::strip(std::string& s) /*! * This method operates a safe copy from 'src' to 'dest' by checking the size of 'src' before trying to copy. - * If size of 'src' string is higher than 'maxLgth' the behaviour is dependant from 'behaviour' parameter. + * If size of 'src' string is higher than 'maxLgth' the behaviour is dependent from 'behaviour' parameter. * If 'behaviour' equals 0 an exception is thrown. If 'behaviour' equals 1 an attempt of zipping of string will be done * ( see zipString to have more details). */ -void MEDLoaderBase::safeStrCpy(const char *src, int maxLgth, char *dest, int behaviour) throw(INTERP_KERNEL::Exception) +void MEDLoaderBase::safeStrCpy(const char *src, int maxLgth, char *dest, int behaviour) { if((int)strlen(src)>maxLgth) { @@ -158,7 +159,7 @@ void MEDLoaderBase::safeStrCpy(const char *src, int maxLgth, char *dest, int beh * This method is equivalent to MEDLoaderBase::safeStrCpy except that here no '\0' car is put. * This method should be used for multi string in one string. */ -void MEDLoaderBase::safeStrCpy2(const char *src, int maxLgth, char *dest, int behaviour) throw(INTERP_KERNEL::Exception) +void MEDLoaderBase::safeStrCpy2(const char *src, int maxLgth, char *dest, int behaviour) { if((int)strlen(src)>maxLgth) { @@ -176,7 +177,8 @@ void MEDLoaderBase::safeStrCpy2(const char *src, int maxLgth, char *dest, int be return ; } } - int n=strlen(src); + int n(strlen(src)); + std::fill(dest,dest+maxLgth,' '); strncpy(dest,src,n); } @@ -198,7 +200,7 @@ std::string MEDLoaderBase::buildStringFromFortran(const char *expr, int lgth) * This method given the target size to respect 'sizeToRespect' tries to reduce size of 'src' string. * This method uses several soft methods to do its job. But if it fails a simple cut of string will be performed. */ -std::string MEDLoaderBase::zipString(const char *src, int sizeToRespect) +std::string MEDLoaderBase::zipString(const std::string& src, int sizeToRespect) { std::string s(src); strip(s);