X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileParameter.cxx;h=9f281464ac4d438097718549ad94dd28c0cb96d4;hb=0b187729ac99d3e9e9bb9d2be8cb8600a783be6c;hp=0a04d8b04097da8f7f3b85e096d3a36fcb76d481;hpb=ba46d95e15064cd3768d78ec9ffff33bb72fcec5;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileParameter.cxx b/src/MEDLoader/MEDFileParameter.cxx index 0a04d8b04..9f281464a 100644 --- a/src/MEDLoader/MEDFileParameter.cxx +++ b/src/MEDLoader/MEDFileParameter.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D +// Copyright (C) 2007-2015 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 @@ -20,13 +20,14 @@ #include "MEDFileParameter.hxx" #include "MEDFileUtilities.hxx" +#include "MEDFileSafeCaller.txx" #include "MEDLoaderBase.hxx" #include "InterpKernelAutoPtr.hxx" #include -using namespace ParaMEDMEM; +using namespace MEDCoupling; MEDFileParameter1TS::MEDFileParameter1TS(int iteration, int order, double time):_iteration(iteration),_order(order),_time(time) { @@ -72,7 +73,7 @@ std::size_t MEDFileParameterDouble1TSWTI::getHeapMemorySizeWithoutChildren() con return sizeof(MEDFileParameterDouble1TSWTI); } -std::vector MEDFileParameterDouble1TSWTI::getDirectChildren() const +std::vector MEDFileParameterDouble1TSWTI::getDirectChildrenWithNull() const { return std::vector(); } @@ -112,11 +113,11 @@ void MEDFileParameterDouble1TSWTI::finishLoading(med_idt fid, const std::string& { int locDt,locIt; double tim; - MEDparameterComputationStepInfo(fid,name.c_str(),i+1,&locDt,&locIt,&tim); + MEDFILESAFECALLERRD0(MEDparameterComputationStepInfo,(fid,name.c_str(),i+1,&locDt,&locIt,&tim)); if(dt==locDt && it==locIt) { _iteration=locDt; _order=locIt; _time=tim; - MEDparameterValueRd(fid,name.c_str(),_iteration,_order,reinterpret_cast(&_arr)); + MEDFILESAFECALLERRD0(MEDparameterValueRd,(fid,name.c_str(),_iteration,_order,reinterpret_cast(&_arr))); return ; } else @@ -131,23 +132,23 @@ void MEDFileParameterDouble1TSWTI::finishLoading(med_idt fid, const std::string& void MEDFileParameterDouble1TSWTI::readValue(med_idt fid, const std::string& name) { - MEDparameterValueRd(fid,name.c_str(),_iteration,_order,reinterpret_cast(&_arr)); + MEDFILESAFECALLERRD0(MEDparameterValueRd,(fid,name.c_str(),_iteration,_order,reinterpret_cast(&_arr))); } void MEDFileParameterDouble1TSWTI::finishLoading(med_idt fid, const std::string& name, int timeStepId) { int locDt,locIt; double dt; - MEDparameterComputationStepInfo(fid,name.c_str(),timeStepId+1,&locDt,&locIt,&dt); + MEDFILESAFECALLERRD0(MEDparameterComputationStepInfo,(fid,name.c_str(),timeStepId+1,&locDt,&locIt,&dt)); _iteration=locDt; _order=locIt; _time=dt; - MEDparameterValueRd(fid,name.c_str(),_iteration,_order,reinterpret_cast(&_arr)); + MEDFILESAFECALLERRD0(MEDparameterValueRd,(fid,name.c_str(),_iteration,_order,reinterpret_cast(&_arr))); } void MEDFileParameterDouble1TSWTI::writeLL(med_idt fid, const std::string& name, const MEDFileWritable& mw) const { char nameW[MED_NAME_SIZE+1]; MEDLoaderBase::safeStrCpy(name.c_str(),MED_NAME_SIZE,nameW,mw.getTooLongStrPolicy()); - MEDparameterValueWr(fid,nameW,_iteration,_order,_time,reinterpret_cast(&_arr)); + MEDFILESAFECALLERWR0(MEDparameterValueWr,(fid,nameW,_iteration,_order,_time,reinterpret_cast(&_arr))); } std::size_t MEDFileParameterTinyInfo::getHeapMemSizeOfStrings() const @@ -173,7 +174,7 @@ void MEDFileParameterTinyInfo::writeLLHeader(med_idt fid, med_parameter_type typ MEDLoaderBase::safeStrCpy(_name.c_str(),MED_NAME_SIZE,nameW,getTooLongStrPolicy()); MEDLoaderBase::safeStrCpy(_desc_name.c_str(),MED_COMMENT_SIZE,descW,getTooLongStrPolicy()); MEDLoaderBase::safeStrCpy(_dt_unit.c_str(),MED_SNAME_SIZE,dtunitW,getTooLongStrPolicy()); - MEDparameterCr(fid,nameW,typ,descW,dtunitW); + MEDFILESAFECALLERWR0(MEDparameterCr,(fid,nameW,typ,descW,dtunitW)); } void MEDFileParameterTinyInfo::mainRepr(int bkOffset, std::ostream& oss) const @@ -189,17 +190,17 @@ MEDFileParameterDouble1TS *MEDFileParameterDouble1TS::New() return new MEDFileParameterDouble1TS; } -MEDFileParameterDouble1TS *MEDFileParameterDouble1TS::New(const char *fileName) +MEDFileParameterDouble1TS *MEDFileParameterDouble1TS::New(const std::string& fileName) { return new MEDFileParameterDouble1TS(fileName); } -MEDFileParameterDouble1TS *MEDFileParameterDouble1TS::New(const char *fileName, const char *paramName) +MEDFileParameterDouble1TS *MEDFileParameterDouble1TS::New(const std::string& fileName, const std::string& paramName) { return new MEDFileParameterDouble1TS(fileName,paramName); } -MEDFileParameterDouble1TS *MEDFileParameterDouble1TS::New(const char *fileName, const char *paramName, int dt, int it) +MEDFileParameterDouble1TS *MEDFileParameterDouble1TS::New(const std::string& fileName, const std::string& paramName, int dt, int it) { return new MEDFileParameterDouble1TS(fileName,paramName,dt,it); } @@ -208,10 +209,10 @@ MEDFileParameterDouble1TS::MEDFileParameterDouble1TS() { } -MEDFileParameterDouble1TS::MEDFileParameterDouble1TS(const char *fileName, const char *paramName, int dt, int it) +MEDFileParameterDouble1TS::MEDFileParameterDouble1TS(const std::string& fileName, const std::string& paramName, int dt, int it) { MEDFileUtilities::CheckFileForRead(fileName); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName,MED_ACC_RDONLY); + MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),MED_ACC_RDONLY); int nbPar=MEDnParameter(fid); std::ostringstream oss; oss << "MEDFileParameterDouble1TS : no double param name \"" << paramName << "\" ! Double Parameters available are : "; INTERP_KERNEL::AutoPtr pName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE); @@ -221,7 +222,7 @@ MEDFileParameterDouble1TS::MEDFileParameterDouble1TS(const char *fileName, const for(int i=0;i pName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE); @@ -253,7 +254,7 @@ MEDFileParameterDouble1TS::MEDFileParameterDouble1TS(const char *fileName, const for(int i=0;i unitName=MEDLoaderBase::buildEmptyString(MED_SNAME_SIZE); med_parameter_type paramType; int nbOfSteps; - MEDparameterInfo(fid,1,pName,¶mType,descName,unitName,&nbOfSteps); + MEDFILESAFECALLERRD0(MEDparameterInfo,(fid,1,pName,¶mType,descName,unitName,&nbOfSteps)); std::string paramNameCpp=MEDLoaderBase::buildStringFromFortran(pName,MED_NAME_SIZE); if(paramType==MED_FLOAT64) { @@ -350,15 +351,15 @@ std::size_t MEDFileParameterDouble1TS::getHeapMemorySizeWithoutChildren() const return getHeapMemSizeOfStrings()+sizeof(MEDFileParameterDouble1TS); } -std::vector MEDFileParameterDouble1TS::getDirectChildren() const +std::vector MEDFileParameterDouble1TS::getDirectChildrenWithNull() const { return std::vector(); } -void MEDFileParameterDouble1TS::write(const char *fileName, int mode) const +void MEDFileParameterDouble1TS::write(const std::string& fileName, int mode) const { med_access_mode medmod=MEDFileUtilities::TraduceWriteMode(mode); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName,medmod); + MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),medmod); MEDFileParameterTinyInfo::writeLLHeader(fid,MED_FLOAT64); MEDFileParameterDouble1TSWTI::writeLL(fid,_name,*this); } @@ -368,12 +369,12 @@ MEDFileParameterMultiTS *MEDFileParameterMultiTS::New() return new MEDFileParameterMultiTS; } -MEDFileParameterMultiTS *MEDFileParameterMultiTS::New(const char *fileName) +MEDFileParameterMultiTS *MEDFileParameterMultiTS::New(const std::string& fileName) { return new MEDFileParameterMultiTS(fileName); } -MEDFileParameterMultiTS *MEDFileParameterMultiTS::New(const char *fileName, const char *paramName) +MEDFileParameterMultiTS *MEDFileParameterMultiTS::New(const std::string& fileName, const std::string& paramName) { return new MEDFileParameterMultiTS(fileName,paramName); } @@ -393,10 +394,10 @@ MEDFileParameterMultiTS::MEDFileParameterMultiTS(const MEDFileParameterMultiTS& } } -MEDFileParameterMultiTS::MEDFileParameterMultiTS(const char *fileName) +MEDFileParameterMultiTS::MEDFileParameterMultiTS(const std::string& fileName) { MEDFileUtilities::CheckFileForRead(fileName); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName,MED_ACC_RDONLY); + MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),MED_ACC_RDONLY); int nbPar=MEDnParameter(fid); if(nbPar<1) { @@ -408,7 +409,7 @@ MEDFileParameterMultiTS::MEDFileParameterMultiTS(const char *fileName) INTERP_KERNEL::AutoPtr unitName=MEDLoaderBase::buildEmptyString(MED_SNAME_SIZE); med_parameter_type paramType; int nbOfSteps; - MEDparameterInfo(fid,1,pName,¶mType,descName,unitName,&nbOfSteps); + MEDFILESAFECALLERRD0(MEDparameterInfo,(fid,1,pName,¶mType,descName,unitName,&nbOfSteps)); std::string paramNameCpp=MEDLoaderBase::buildStringFromFortran(pName,MED_NAME_SIZE); _dt_unit=MEDLoaderBase::buildStringFromFortran(unitName,MED_SNAME_SIZE); _name=paramNameCpp; @@ -416,10 +417,10 @@ MEDFileParameterMultiTS::MEDFileParameterMultiTS(const char *fileName) finishLoading(fid,paramType,nbOfSteps); } -MEDFileParameterMultiTS::MEDFileParameterMultiTS(const char *fileName, const char *paramName) +MEDFileParameterMultiTS::MEDFileParameterMultiTS(const std::string& fileName, const std::string& paramName) { MEDFileUtilities::CheckFileForRead(fileName); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName,MED_ACC_RDONLY); + MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),MED_ACC_RDONLY); int nbPar=MEDnParameter(fid); std::ostringstream oss; oss << "MEDFileParameterDouble1TS : no double param name \"" << paramName << "\" ! Double Parameters available are : "; INTERP_KERNEL::AutoPtr pName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE); @@ -429,7 +430,7 @@ MEDFileParameterMultiTS::MEDFileParameterMultiTS(const char *fileName, const cha for(int i=0;ireadValue(fid,_name.c_str()); @@ -475,7 +476,7 @@ void MEDFileParameterMultiTS::finishLoading(med_idt fid, med_parameter_type typ, break;*/ default: throw INTERP_KERNEL::Exception("MEDFileParameterMultiTS::finishLoading : supporting only FLOAT64 !"); - } + } } } @@ -486,15 +487,11 @@ std::size_t MEDFileParameterMultiTS::getHeapMemorySizeWithoutChildren() const return ret; } -std::vector MEDFileParameterMultiTS::getDirectChildren() const +std::vector MEDFileParameterMultiTS::getDirectChildrenWithNull() const { std::vector ret; for(std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_param_per_ts.begin();it!=_param_per_ts.end();it++) - { - const MEDFileParameter1TS *elt(*it); - if(elt) - ret.push_back(elt); - } + ret.push_back((const MEDFileParameter1TS *)*it); return ret; } @@ -522,10 +519,10 @@ bool MEDFileParameterMultiTS::isEqual(const MEDFileParameterMultiTS *other, doub return true; } -void MEDFileParameterMultiTS::write(const char *fileName, int mode) const +void MEDFileParameterMultiTS::write(const std::string& fileName, int mode) const { med_access_mode medmod=MEDFileUtilities::TraduceWriteMode(mode); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName,medmod); + MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),medmod); writeLL(fid,*this); } @@ -606,7 +603,7 @@ int MEDFileParameterMultiTS::getPosOfTimeStep(int iteration, int order) const const MEDFileParameter1TS *elt(*it); if(elt) { - if(elt->getIteration()==iteration && elt->getOrder()) + if(elt->getIteration()==iteration && elt->getOrder()==order) return ret; else oss << "(" << elt->getIteration() << "," << elt->getOrder() << "), "; @@ -666,6 +663,11 @@ void MEDFileParameterMultiTS::eraseTimeStepIds(const int *startIds, const int *e _param_per_ts=paramPerTs; } +int MEDFileParameterMultiTS::getNumberOfTS() const +{ + return (int) getIterations().size(); +} + std::vector< std::pair > MEDFileParameterMultiTS::getIterations() const { std::vector< std::pair > ret; @@ -702,15 +704,15 @@ MEDFileParameters *MEDFileParameters::New() return new MEDFileParameters; } -MEDFileParameters *MEDFileParameters::New(const char *fileName) +MEDFileParameters *MEDFileParameters::New(const std::string& fileName) { return new MEDFileParameters(fileName); } -MEDFileParameters::MEDFileParameters(const char *fileName) +MEDFileParameters::MEDFileParameters(const std::string& fileName) { MEDFileUtilities::CheckFileForRead(fileName); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName,MED_ACC_RDONLY); + MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),MED_ACC_RDONLY); int nbPar=MEDnParameter(fid); _params.resize(nbPar); INTERP_KERNEL::AutoPtr pName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE); @@ -720,9 +722,9 @@ MEDFileParameters::MEDFileParameters(const char *fileName) for(int i=0;i MEDFileParameters::getDirectChildren() const +std::vector MEDFileParameters::getDirectChildrenWithNull() const { std::vector ret; for(std::vector< MEDCouplingAutoRefCountObjectPtr >::const_iterator it=_params.begin();it!=_params.end();it++) - { - const MEDFileParameterMultiTS *elt(*it); - if(elt) - ret.push_back(elt); - } + ret.push_back((const MEDFileParameterMultiTS *)*it); return ret; } @@ -784,10 +782,10 @@ MEDFileParameters::MEDFileParameters(const MEDFileParameters& other, bool deepCo } } -void MEDFileParameters::write(const char *fileName, int mode) const +void MEDFileParameters::write(const std::string& fileName, int mode) const { med_access_mode medmod=MEDFileUtilities::TraduceWriteMode(mode); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName,medmod); + MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),medmod); writeLL(fid); } @@ -882,7 +880,7 @@ MEDFileParameterMultiTS *MEDFileParameters::getParamAtPos(int i) const /*! * \return an internal pointer that can be null. Warning the caller is \b not responsible of the returned pointer. */ -MEDFileParameterMultiTS *MEDFileParameters::getParamWithName(const char *paramName) const +MEDFileParameterMultiTS *MEDFileParameters::getParamWithName(const std::string& paramName) const { int pos=getPosFromParamName(paramName); return getParamAtPos(pos); @@ -898,7 +896,7 @@ void MEDFileParameters::destroyParamAtPos(int i) _params[i]=MEDCouplingAutoRefCountObjectPtr(0); } -int MEDFileParameters::getPosFromParamName(const char *paramName) const +int MEDFileParameters::getPosFromParamName(const std::string& paramName) const { std::ostringstream oss; oss << "MEDFileParameters::getPosFromParamName : no such name=" << paramName << " ! Possibilities are :"; int ret=0;