Salome HOME
Unwarningization under Win.
[modules/med.git] / src / MEDLoader / MEDFileData.cxx
index b18c3cb4299300f3a6afa904999148acb9728262..ba72ae4648e58412161b9493c022e78af30e8171 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2013  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
@@ -22,7 +22,7 @@
 
 using namespace ParaMEDMEM;
 
-MEDFileData *MEDFileData::New(const char *fileName) throw(INTERP_KERNEL::Exception)
+MEDFileData *MEDFileData::New(const char *fileName)
 {
   return new MEDFileData(fileName);
 }
@@ -32,6 +32,40 @@ MEDFileData *MEDFileData::New()
   return new MEDFileData;
 }
 
+MEDFileData *MEDFileData::deepCpy() const
+{
+  MEDCouplingAutoRefCountObjectPtr<MEDFileFields> fields;
+  if((const MEDFileFields *)_fields)
+    fields=_fields->deepCpy();
+  MEDCouplingAutoRefCountObjectPtr<MEDFileMeshes> meshes;
+  if((const MEDFileMeshes *)_meshes)
+    meshes=_meshes->deepCpy();
+  MEDCouplingAutoRefCountObjectPtr<MEDFileParameters> params;
+  if((const MEDFileParameters *)_params)
+    params=_params->deepCpy();
+  MEDCouplingAutoRefCountObjectPtr<MEDFileData> ret=MEDFileData::New();
+  ret->_fields=fields; ret->_meshes=meshes; ret->_params=params;
+  return ret.retn();
+}
+
+std::size_t MEDFileData::getHeapMemorySizeWithoutChildren() const
+{
+  return 0;
+}
+
+std::vector<const BigMemoryObject *> MEDFileData::getDirectChildren() const
+{
+  std::vector<const BigMemoryObject *> ret;
+  if((const MEDFileFields *)_fields)
+    ret.push_back((const MEDFileFields *)_fields);
+  if((const MEDFileMeshes *)_meshes)
+    ret.push_back((const MEDFileMeshes *)_meshes);
+  if((const MEDFileParameters *)_params)
+    ret.push_back((const MEDFileParameters *)_params);
+  return ret;
+  
+}
+
 MEDFileFields *MEDFileData::getFields() const
 {
   return const_cast<MEDFileFields *>(static_cast<const MEDFileFields *>(_fields));
@@ -42,23 +76,33 @@ MEDFileMeshes *MEDFileData::getMeshes() const
   return const_cast<MEDFileMeshes *>(static_cast<const MEDFileMeshes *>(_meshes));
 }
 
-void MEDFileData::setFields(MEDFileFields *fields) throw(INTERP_KERNEL::Exception)
+MEDFileParameters *MEDFileData::getParams() const
+{
+  return const_cast<MEDFileParameters *>(static_cast<const MEDFileParameters *>(_params));
+}
+
+void MEDFileData::setFields(MEDFileFields *fields)
 {
-  if(!fields)
-    throw INTERP_KERNEL::Exception("MEDFileData::setFields : input pointer is null !");
-  fields->incrRef();
+  if(fields)
+    fields->incrRef();
   _fields=fields;
 }
 
-void MEDFileData::setMeshes(MEDFileMeshes *meshes) throw(INTERP_KERNEL::Exception)
+void MEDFileData::setMeshes(MEDFileMeshes *meshes)
 {
-  if(!meshes)
-    throw INTERP_KERNEL::Exception("MEDFileData::setMeshes : input pointer is null !");
-  meshes->incrRef();
+  if(meshes)
+    meshes->incrRef();
   _meshes=meshes;
 }
 
-int MEDFileData::getNumberOfFields() const throw(INTERP_KERNEL::Exception)
+void MEDFileData::setParams(MEDFileParameters *params)
+{
+  if(params)
+    params->incrRef();
+  _params=params;
+}
+
+int MEDFileData::getNumberOfFields() const
 {
   const MEDFileFields *f=_fields;
   if(!f)
@@ -66,7 +110,7 @@ int MEDFileData::getNumberOfFields() const throw(INTERP_KERNEL::Exception)
   return f->getNumberOfFields();
 }
 
-int MEDFileData::getNumberOfMeshes() const throw(INTERP_KERNEL::Exception)
+int MEDFileData::getNumberOfMeshes() const
 {
   const MEDFileMeshes *m=_meshes;
   if(!m)
@@ -74,6 +118,14 @@ int MEDFileData::getNumberOfMeshes() const throw(INTERP_KERNEL::Exception)
   return m->getNumberOfMeshes();
 }
 
+int MEDFileData::getNumberOfParams() const
+{
+  const MEDFileParameters *p=_params;
+  if(!p)
+    throw INTERP_KERNEL::Exception("MEDFileData::getNumberOfParams : no params set !");
+  return p->getNumberOfParams();
+}
+
 std::string MEDFileData::simpleRepr() const
 {
   std::ostringstream oss;
@@ -93,11 +145,19 @@ std::string MEDFileData::simpleRepr() const
       tmp2->simpleReprWithoutHeader(oss);
     }
   else
-    oss << "No meshes set !!!\n";
+    oss << "No meshes set !!!\n\n";
+  oss << "Params part :\n*************\n\n";
+  const MEDFileParameters *tmp3=_params;
+  if(tmp3)
+    {
+      tmp3->simpleReprWithoutHeader(oss);
+    }
+  else
+    oss << "No params set !!!\n";
   return oss.str();
 }
 
-bool MEDFileData::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab) throw(INTERP_KERNEL::Exception)
+bool MEDFileData::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
 {
   bool ret=false;
   MEDFileFields *fields=_fields;
@@ -109,7 +169,7 @@ bool MEDFileData::changeMeshNames(const std::vector< std::pair<std::string,std::
   return ret;
 }
 
-bool MEDFileData::changeMeshName(const char *oldMeshName, const char *newMeshName) throw(INTERP_KERNEL::Exception)
+bool MEDFileData::changeMeshName(const char *oldMeshName, const char *newMeshName)
 {
   std::string oldName(oldMeshName);
   std::vector< std::pair<std::string,std::string> > v(1);
@@ -124,12 +184,11 @@ bool MEDFileData::changeMeshName(const char *oldMeshName, const char *newMeshNam
  * \return If true is returned it means that some meshes in \a this has been modified and eventually fields have been renumbered.
  *         \n If false \a this remains unchanged.
  */
-bool MEDFileData::unPolyzeMeshes() throw(INTERP_KERNEL::Exception)
+bool MEDFileData::unPolyzeMeshes()
 {
   MEDFileMeshes *ms=_meshes;
   if(!ms)
     return false;
-  bool ret=false;
   std::vector< MEDFileMesh * > meshesImpacted;
   std::vector< DataArrayInt * > renumParamsOfMeshImpacted;//same size as meshesImpacted
   std::vector< std::vector<int> > oldCodeOfMeshImpacted,newCodeOfMeshImpacted;//same size as meshesImpacted
@@ -155,7 +214,7 @@ bool MEDFileData::unPolyzeMeshes() throw(INTERP_KERNEL::Exception)
       MEDFileFields *fs=_fields;
       if(fs)
         for(std::size_t i=0;i<meshesImpacted.size();i++)
-          fs->renumberEntitiesLyingOnMesh(meshesImpacted[i]->getName(),oldCodeOfMeshImpacted[i],newCodeOfMeshImpacted[i],renumParamsOfMeshImpacted[i]);
+          fs->renumberEntitiesLyingOnMesh(meshesImpacted[i]->getName().c_str(),oldCodeOfMeshImpacted[i],newCodeOfMeshImpacted[i],renumParamsOfMeshImpacted[i]);
     }
   return !meshesImpacted.empty();
 }
@@ -164,18 +223,19 @@ MEDFileData::MEDFileData()
 {
 }
 
-MEDFileData::MEDFileData(const char *fileName) throw(INTERP_KERNEL::Exception)
+MEDFileData::MEDFileData(const char *fileName)
 try
   {
     _fields=MEDFileFields::New(fileName);
     _meshes=MEDFileMeshes::New(fileName);
+    _params=MEDFileParameters::New(fileName);
   }
 catch(INTERP_KERNEL::Exception& e)
   {
     throw e;
   }
 
-void MEDFileData::write(const char *fileName, int mode) const throw(INTERP_KERNEL::Exception)
+void MEDFileData::write(const char *fileName, int mode) const
 {
   med_access_mode medmod=MEDFileUtilities::TraduceWriteMode(mode);
   MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName,medmod);
@@ -185,4 +245,7 @@ void MEDFileData::write(const char *fileName, int mode) const throw(INTERP_KERNE
   const MEDFileFields *fs=_fields;
   if(fs)
     fs->writeLL(fid);
+  const MEDFileParameters *ps=_params;
+  if(ps)
+    ps->writeLL(fid);
 }