X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileUtilities.hxx;h=501a6d5e57295d9430cf5ff0b571782a8f8bbf1d;hb=844b1a4785909ad42206965838a6d0f826dfb5c1;hp=a17a407ee975f94f1f404ebd3137a09182607dac;hpb=ba46d95e15064cd3768d78ec9ffff33bb72fcec5;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileUtilities.hxx b/src/MEDLoader/MEDFileUtilities.hxx index a17a407ee..501a6d5e5 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-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 @@ -24,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); const char *GetReadableMEDFieldType(med_field_type ft); - void CheckMEDCode(int code, med_idt fid, const char *msg); - void CheckFileForRead(const char *fileName); + 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; 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