#include "MEDFileData.hxx"
#include "MEDLoaderBase.hxx"
#include "MEDFileSafeCaller.txx"
+#include "MEDFileBlowStrEltUp.hxx"
#include "InterpKernelAutoPtr.hxx"
ret.push_back((const MEDFileFields *)_fields);
ret.push_back((const MEDFileMeshes *)_meshes);
ret.push_back((const MEDFileParameters *)_params);
+ ret.push_back((const MEDFileMeshSupports *)_mesh_supports);
+ ret.push_back((const MEDFileStructureElements *)_struct_elems);
return ret;
}
return !meshesImpacted.empty();
}
+void MEDFileData::dealWithStructureElements()
+{
+ if(_struct_elems.isNull())
+ throw INTERP_KERNEL::Exception("MEDFileData::dealWithStructureElements : no structure elements in this !");
+ if(_meshes.isNull() || _fields.isNull())
+ throw INTERP_KERNEL::Exception("MEDFileData::dealWithStructureElements : meshes and fields must be not null !");
+ MEDFileBlowStrEltUp::DealWithSE(_fields,_meshes,_struct_elems);
+}
+
/*!
* Precondition : all instances in \a mfds should have a single mesh with fields on it. If there is an instance with not exactly one mesh an exception will be thrown.
* You can invoke MEDFileFields::partOfThisLyingOnSpecifiedMeshName method to make it work.
try
{
readHeader(fid);
- _fields=MEDFileFields::New(fid);
+ _mesh_supports=MEDFileMeshSupports::New(fid);
+ _struct_elems=MEDFileStructureElements::New(fid,_mesh_supports);
+ _fields=MEDFileFields::NewWithDynGT(fid,_struct_elems,true);
_meshes=MEDFileMeshes::New(fid);
_params=MEDFileParameters::New(fid);
}
void MEDFileData::writeLL(med_idt fid) const
{
writeHeader(fid);
- const MEDFileMeshes *ms(_meshes);
- if(ms)
- ms->writeLL(fid);
- const MEDFileFields *fs(_fields);
- if(fs)
- fs->writeLL(fid);
- const MEDFileParameters *ps(_params);
- if(ps)
- ps->writeLL(fid);
+ if(_meshes.isNotNull())
+ _meshes->writeLL(fid);
+ if(_fields.isNotNull())
+ _fields->writeLL(fid);
+ if(_params.isNotNull())
+ _params->writeLL(fid);
+ if(_mesh_supports.isNotNull())
+ _mesh_supports->writeLL(fid);
+ if(_struct_elems.isNotNull())
+ _struct_elems->writeLL(fid);
}
std::string MEDFileData::getHeader() const
void MEDFileData::readHeader(med_idt fid)
{
INTERP_KERNEL::AutoPtr<char> header(MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE));
- MEDFILESAFECALLERRD0(MEDfileCommentRd,(fid,header));
- _header=MEDLoaderBase::buildStringFromFortran(header,MED_COMMENT_SIZE);
+ int ret(MEDfileCommentRd(fid,header));
+ if(ret==0)
+ _header=MEDLoaderBase::buildStringFromFortran(header,MED_COMMENT_SIZE);
}
void MEDFileData::writeHeader(med_idt fid) const