X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileData.cxx;h=8c3c171731f00fd79044121a476ac23f361b4747;hb=844b1a4785909ad42206965838a6d0f826dfb5c1;hp=f5a33b39146cce0c7b0b896f2900fc91408326d3;hpb=872b4400d3e50dc07f967016bf9031eb547eaef4;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileData.cxx b/src/MEDLoader/MEDFileData.cxx index f5a33b391..8c3c17173 100644 --- a/src/MEDLoader/MEDFileData.cxx +++ b/src/MEDLoader/MEDFileData.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 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 @@ -21,6 +21,7 @@ #include "MEDFileData.hxx" #include "MEDLoaderBase.hxx" #include "MEDFileSafeCaller.txx" +#include "MEDFileBlowStrEltUp.hxx" #include "InterpKernelAutoPtr.hxx" @@ -70,6 +71,7 @@ std::vector MEDFileData::getDirectChildrenWithNull() co 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; } @@ -230,6 +232,15 @@ bool MEDFileData::unPolyzeMeshes() 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. @@ -306,10 +317,11 @@ MEDFileData::MEDFileData(med_idt fid) 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); - _mesh_supports=MEDFileMeshSupports::New(fid); } catch(INTERP_KERNEL::Exception& e) { @@ -327,6 +339,8 @@ void MEDFileData::writeLL(med_idt fid) const _params->writeLL(fid); if(_mesh_supports.isNotNull()) _mesh_supports->writeLL(fid); + if(_struct_elems.isNotNull()) + _struct_elems->writeLL(fid); } std::string MEDFileData::getHeader() const