X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileUtilities.hxx;h=501a6d5e57295d9430cf5ff0b571782a8f8bbf1d;hb=97ace34a0d092b676228a0ab6cb5abefa9637e32;hp=b814c12828b1ad737ec5da7b085edce09bfcfd43;hpb=10f37bf6f33a762626d7f1093b2f5450c1688667;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileUtilities.hxx b/src/MEDLoader/MEDFileUtilities.hxx index b814c1282..501a6d5e5 100644 --- a/src/MEDLoader/MEDFileUtilities.hxx +++ b/src/MEDLoader/MEDFileUtilities.hxx @@ -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) #ifndef __MEDFILEUTILITIES_HXX__ #define __MEDFILEUTILITIES_HXX__ @@ -23,41 +24,62 @@ #include "InterpKernelException.hxx" #include "MEDLoaderDefines.hxx" +#include "MCAuto.hxx" +#include "MEDCouplingMemArray.hxx" + #include "med.h" namespace MEDFileUtilities { - med_access_mode TraduceWriteMode(int medloaderwritemode) throw(INTERP_KERNEL::Exception); - int TraduceFieldType(med_field_type ft) throw(INTERP_KERNEL::Exception); - void CheckMEDCode(int code, med_idt fid, const char *msg) throw(INTERP_KERNEL::Exception); - void CheckFileForRead(const char *fileName) throw(INTERP_KERNEL::Exception); + med_access_mode TraduceWriteMode(int medloaderwritemode); + const char *GetReadableMEDFieldType(med_field_type ft); + void CheckMEDCode(int code, med_idt fid, const std::string& msg); + void CheckFileForRead(const std::string& fileName); class AutoFid { public: AutoFid(med_idt fid); - operator med_idt() const; + operator med_idt() const { return _fid; } ~AutoFid(); private: med_idt _fid; }; } - -namespace ParaMEDMEM + +namespace MEDCoupling { class MEDLOADER_EXPORT MEDFileWritable { public: MEDFileWritable(); + virtual ~MEDFileWritable() {} void copyOptionsFrom(const MEDFileWritable& other) const; - int getTooLongStrPolicy() const throw(INTERP_KERNEL::Exception); - void setTooLongStrPolicy(int newVal) throw(INTERP_KERNEL::Exception); - int getZipConnPolicy() throw(INTERP_KERNEL::Exception); - void setZipConnPolicy(int newVal) throw(INTERP_KERNEL::Exception); + int getTooLongStrPolicy() const; + void setTooLongStrPolicy(int newVal); + int getZipConnPolicy(); + void setZipConnPolicy(int newVal); + static std::string FileNameFromFID(med_idt fid); protected://policies on write mutable int _too_long_str; mutable int _zipconn_pol; }; + + class MEDFileWritableStandAlone : public MEDFileWritable + { + public: + MEDLOADER_EXPORT virtual void writeLL(med_idt fid) const = 0; + MEDLOADER_EXPORT virtual void write(const std::string& fileName, int mode) const; + MEDLOADER_EXPORT virtual void write33(const std::string& fileName, int mode) const; + MEDLOADER_EXPORT MCAuto serialize() const; + MEDLOADER_EXPORT static std::string GenerateUniqueDftFileNameInMem(); + public: + MEDLOADER_EXPORT static const char DFT_FILENAME_IN_MEM[]; + template + static T *BuildFromMemoryChunk(DataArrayByte *db); + }; + + MEDFileUtilities::AutoFid OpenMEDFileForRead(const std::string& fileName); } #endif