X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileUtilities.hxx;h=bb0568e250dd6608db2b9f21d65ce0c0f8b2904d;hb=b832b15337be013a56e0976170e5e235b89fcb03;hp=426d3f2d11e38237a4d5207a1de3aa83716935d4;hpb=b4b11b30ec3c8c59b9124a2c4efbd4b99039556f;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileUtilities.hxx b/src/MEDLoader/MEDFileUtilities.hxx index 426d3f2d1..bb0568e25 100644 --- a/src/MEDLoader/MEDFileUtilities.hxx +++ b/src/MEDLoader/MEDFileUtilities.hxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D +// Copyright (C) 2007-2024 CEA, EDF // // 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 @@ -24,6 +24,9 @@ #include "InterpKernelException.hxx" #include "MEDLoaderDefines.hxx" +#include "MCAuto.hxx" +#include "MEDCouplingMemArray.hxx" + #include "med.h" namespace MEDFileUtilities @@ -37,28 +40,60 @@ namespace MEDFileUtilities { 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; 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 virtual void write30(const std::string& fileName, int mode) const; + MEDLOADER_EXPORT virtual void write40(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); + private: + void writeXX(const std::string& fileName, int mode, med_int maj, med_int min, med_int rel) const; + }; + + class MEDFileCapability + { + public: + MEDFileCapability(med_idt fid); + bool isFastReader() const { return _maj>=4 && _min >=1; } + private: + med_int _maj; + med_int _min; + med_int _rel; + }; + MEDFileUtilities::AutoFid OpenMEDFileForRead(const std::string& fileName); } #endif