// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // // 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, 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 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef MED_Wrapper_HeaderFile #define MED_Wrapper_HeaderFile #include "MED_WrapperBase.hxx" #include "MED_Structures.hxx" #include "MED_Algorithm.hxx" #include namespace MED { //---------------------------------------------------------------------------- //! Define a base class that wraps the MED API struct MEDWRAPPER_EXPORT TWrapper { typedef boost::mutex TMutex; //! This is a syncronization primitive which allow to support thread safety for the MED access TMutex myMutex; virtual ~TWrapper(); //---------------------------------------------------------------------------- //! Gets version of the MED library used for the MED file virtual EVersion GetVersion() = 0; //---------------------------------------------------------------------------- //! Creates a MEDWrapper MED Mesh representation virtual PMeshInfo CrMeshInfo(TInt theDim = 0, TInt theSpaceDim = 0, const std::string& theValue = "", EMaillage theType = eNON_STRUCTURE, const std::string& theDesc = "") = 0; //! A copy-constructor for the MEDWrapper MED Mesh representation virtual PMeshInfo CrMeshInfo(const PMeshInfo& theInfo) = 0; //! Read number of MED Mesh entities in the defined MED file virtual TInt GetNbMeshes(TErr* theErr = NULL) = 0; //! Read a MEDWrapper MED Mesh representation by its number virtual void GetMeshInfo(TInt theMeshId, TMeshInfo& theInfo, TErr* theErr = NULL) = 0; //! Write the MEDWrapper MED Mesh representation in the defined MED file virtual void SetMeshInfo(const TMeshInfo& theInfo, TErr* theErr = NULL) = 0; //! Read a MEDWrapper MED Mesh representation by its number virtual PMeshInfo GetPMeshInfo(TInt theId, TErr* theErr = NULL); //---------------------------------------------------------------------------- //! Read number of MED Family entities in the defined MED file virtual TInt GetNbFamilies(const TMeshInfo& theMeshInfo, TErr* theErr = NULL) = 0; //! Read number of attributes for defined MED Family virtual TInt GetNbFamAttr(TInt theFamId, const TMeshInfo& theInfo, TErr* theErr = NULL) = 0; //! Read number of MED Groups where MED Family with the number belong to virtual TInt GetNbFamGroup(TInt theFamId, const TMeshInfo& theInfo, TErr* theErr = NULL) = 0; //! Read a MEDWrapper MED Family representation by its number virtual void GetFamilyInfo(TInt theFamId, TFamilyInfo& theInfo, TErr* theErr = NULL) = 0; //! Write a MEDWrapper MED Family representation by its number virtual void SetFamilyInfo(const TFamilyInfo& theInfo, TErr* theErr = NULL) = 0; //! Creates a MEDWrapper MED Family representation virtual PFamilyInfo CrFamilyInfo(const PMeshInfo& theMeshInfo, TInt theNbGroup = 0, TInt theNbAttr = 0, TInt theId = 0, const std::string& theValue = "") = 0; //! Creates a MEDWrapper MED Family representation virtual PFamilyInfo CrFamilyInfo(const PMeshInfo& theMeshInfo, const std::string& theValue, TInt theId, const TStringSet& theGroupNames, const TStringVector& theAttrDescs = TStringVector(), const TIntVector& theAttrIds = TIntVector(), const TIntVector& theAttrVals = TIntVector()) = 0; //! A copy-constructor for the MEDWrapper MED Family representation virtual PFamilyInfo CrFamilyInfo(const PMeshInfo& theMeshInfo, const PFamilyInfo& theInfo) = 0; //! Write a MEDWrapper MED Family representation by its number PFamilyInfo GetPFamilyInfo(const PMeshInfo& theMeshInfo, TInt theId, TErr* theErr = NULL); //---------------------------------------------------------------------------- //! Read sequence of names for any descendant of TElemInfo virtual void GetNames(TElemInfo& theInfo, TInt theNb, EEntiteMaillage theEntity, EGeometrieElement theGeom, TErr* theErr = NULL) {} //! Read sequence of numerous for any descendant of TElemInfo virtual void GetNumeration(TElemInfo& theInfo, TInt theNb, EEntiteMaillage theEntity, EGeometrieElement theGeom, TErr* theErr = NULL) {} //! Read sequence MED Family indexes for any descendant of TElemInfo virtual void GetFamilies(TElemInfo& theInfo, TInt theNb, EEntiteMaillage theEntity, EGeometrieElement theGeom, TErr* theErr = NULL) {} //! Write sequence of names for any descendant of TElemInfo virtual void SetNames(const TElemInfo& theInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, TErr* theErr = NULL) {} //! Write sequence of numerous for any descendant of TElemInfo virtual void SetNumeration(const TElemInfo& theInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, TErr* theErr = NULL) {} //! Write sequence MED Family indexes for any descendant of TElemInfo virtual void SetFamilies(const TElemInfo& theInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, TErr* theErr = NULL) {} //! Read a MEDWrapper MED Element representation from defined MED file PElemInfo GetPElemInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity = eNOEUD, EGeometrieElement theGeom = ePOINT1, EConnectivite theConnMode = eNOD, TErr* theErr = NULL); //---------------------------------------------------------------------------- //! Read number of nodes in defined MED Mesh virtual TInt GetNbNodes(const TMeshInfo& theMeshInfo, TErr* theErr = NULL) = 0; virtual TInt GetNbNodes(const TMeshInfo& theMeshInfo, ETable theTable, TErr* theErr = NULL) { return 0; } //! Read a MEDWrapper MED Nodes representation from defined MED file virtual void GetNodeInfo(TNodeInfo& theInfo, TErr* theErr = NULL) = 0; //! Write the MEDWrapper MED Nodes representation into defined MED file virtual void SetNodeInfo(const TNodeInfo& theInfo, TErr* theErr = NULL) = 0; //! Creates a MEDWrapper MED Nodes representation virtual PElemInfo CrElemInfo(const PMeshInfo& theMeshInfo, TInt theNbElem, EBooleen theIsElemNum = eVRAI, EBooleen theIsElemNames = eVRAI) { return PElemInfo(); } //! Creates a MEDWrapper MED Nodes representation virtual PElemInfo CrElemInfo(const PMeshInfo& theMeshInfo, TInt theNbElem, const TIntVector& theFamNum, const TIntVector& aElemNum, const TStringVector& aElemNames) { return PElemInfo(); } //! Creates a MEDWrapper MED Nodes representation virtual PNodeInfo CrNodeInfo(const PMeshInfo& theMeshInfo, TInt theNbElem, EModeSwitch theMode = eFULL_INTERLACE, ERepere theSystem = eCART, EBooleen theIsElemNum = eVRAI, EBooleen theIsElemNames = eVRAI) = 0; //! Creates a MEDWrapper MED Nodes representation virtual PNodeInfo CrNodeInfo(const PMeshInfo& theMeshInfo, const TFloatVector& theNodeCoords, EModeSwitch theMode = eFULL_INTERLACE, ERepere theSystem = eCART, const TStringVector& theCoordNames = TStringVector(), const TStringVector& theCoordUnits = TStringVector(), const TIntVector& theFamilyNums = TIntVector(), const TIntVector& theElemNums = TIntVector(), const TStringVector& theElemNames = TStringVector()) = 0; //! A copy-constructor for the MEDWrapper MED Nodes representation virtual PNodeInfo CrNodeInfo(const PMeshInfo& theMeshInfo, const PNodeInfo& theInfo) = 0; //! Read a MEDWrapper MED Nodes representation from defined MED file PNodeInfo GetPNodeInfo(const PMeshInfo& theMeshInfo, TErr* theErr = NULL); //---------------------------------------------------------------------------- //! Read a MEDWrapper MED Polygones representation from defined MED file /*! This feature is supported only for version of 2.2 and higher */ virtual void GetPolygoneInfo(TPolygoneInfo& theInfo, TErr* theErr = NULL) {} //! Write a MEDWrapper MED Polygones representation from defined MED file /*! This feature is supported only for version of 2.2 and higher */ virtual void SetPolygoneInfo(const TPolygoneInfo& theInfo, TErr* theErr = NULL) {} //! Read number of MED Polygones in defined MED Mesh /*! This feature is supported only for version of 2.2 and higher */ virtual TInt GetNbPolygones(const TMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, EConnectivite theConnMode = eNOD, TErr* theErr = NULL) { return 0; } //! Read connectivity infroamtion for the MED Polygones in defined MED Mesh /*! This feature is supported only for version of 2.2 and higher */ virtual TInt GetPolygoneConnSize(const TMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, EConnectivite theConnMode = eNOD, TErr* theErr = NULL) { return 0; } //! Creates a MEDWrapper MED Polygones representation /*! This feature is supported only for version of 2.2 and higher */ virtual PPolygoneInfo CrPolygoneInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, TInt theNbElem, TInt theConnSize, EConnectivite theConnMode = eNOD, EBooleen theIsElemNum = eVRAI, EBooleen theIsElemNames = eVRAI) { return PPolygoneInfo(); } //! Creates a MEDWrapper MED Polygones representation /*! This feature is supported only for version of 2.2 and higher */ virtual PPolygoneInfo CrPolygoneInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, const TIntVector& theIndexes, const TIntVector& theConnectivities, EConnectivite theConnMode = eNOD, const TIntVector& theFamilyNums = TIntVector(), const TIntVector& theElemNums = TIntVector(), const TStringVector& theElemNames = TStringVector()) { return PPolygoneInfo(); } //! A copy-constructor for the MEDWrapper MED Polygones representation virtual PPolygoneInfo CrPolygoneInfo(const PMeshInfo& theMeshInfo, const PPolygoneInfo& theInfo) { return PPolygoneInfo(); } //! Read a MEDWrapper MED Polygones representation from defined MED file /*! This feature is support only for version of 2.2 and higher */ PPolygoneInfo GetPPolygoneInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, EConnectivite theConnMode = eNOD); //---------------------------------------------------------------------------- //! Read a MEDWrapper MED Polyedres representation from defined MED file /*! This feature is support only for version of 2.2 and higher */ virtual void GetPolyedreInfo(TPolyedreInfo& theInfo, TErr* theErr = NULL) {} //! Write a MEDWrapper MED Polyedres representation from defined MED file /*! This feature is support only for version of 2.2 and higher */ virtual void SetPolyedreInfo(const TPolyedreInfo& theInfo, TErr* theErr = NULL) {} //! Read number of MED Polyedres in defined MED Mesh /*! This feature is support only for version of 2.2 and higher */ virtual TInt GetNbPolyedres(const TMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, EConnectivite theConnMode = eNOD, TErr* theErr = NULL) { return 0; } //! Read connectivity infroamtion for the MED Polyedres in defined MED Mesh /*! This feature is support only for version of 2.2 and higher */ virtual void GetPolyedreConnSize(const TMeshInfo& theMeshInfo, TInt& theNbFaces, TInt& theConnSize, EConnectivite theConnMode = eNOD, TErr* theErr = NULL) { theNbFaces = theConnSize = 0; } virtual PPolyedreInfo CrPolyedreInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, TInt theNbElem, TInt theNbFaces, TInt theConnSize, EConnectivite theConnMode = eNOD, EBooleen theIsElemNum = eVRAI, EBooleen theIsElemNames = eVRAI) { return PPolyedreInfo(); } //! Creates a MEDWrapper MED Polyedres representation /*! This feature is support only for version of 2.2 and higher */ virtual PPolyedreInfo CrPolyedreInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, const TIntVector& theIndexes, const TIntVector& theFaces, const TIntVector& theConnectivities, EConnectivite theConnMode = eNOD, const TIntVector& theFamilyNums = TIntVector(), const TIntVector& theElemNums = TIntVector(), const TStringVector& theElemNames = TStringVector()) { return PPolyedreInfo(); } //! A copy-constructor for the MEDWrapper MED Polyedres representation virtual PPolyedreInfo CrPolyedreInfo(const PMeshInfo& theMeshInfo, const PPolyedreInfo& theInfo) { return PPolyedreInfo(); } //! Read a MEDWrapper MED Polyedres representation from defined MED file /*! This feature is support only for version of 2.2 and higher */ PPolyedreInfo GetPPolyedreInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, EConnectivite theConnMode = eNOD); //---------------------------------------------------------------------------- //! Get TEntityInfo which contains brief information about existing cells and their destribution among MED ENTITIES virtual TEntityInfo GetEntityInfo(const TMeshInfo& theMeshInfo, EConnectivite theConnMode = eNOD, TErr* theErr = NULL) = 0; //! Read number of cells for defined MED Mesh, ENTITY and geometrical type with define mode of connectivity virtual TInt GetNbCells(const TMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, EConnectivite theConnMode = eNOD, TErr* theErr = NULL) = 0; //! Read a MEDWrapper MED Cells representation from defined MED file virtual void GetCellInfo(TCellInfo& theInfo, TErr* theErr = NULL) = 0; //! Write the MEDWrapper MED Cells representation into defined MED file virtual void SetCellInfo(const TCellInfo& theInfo, TErr* theErr = NULL) = 0; //! Creates a MEDWrapper MED Cells representation virtual PCellInfo CrCellInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, TInt theNbElem, EConnectivite theConnMode = eNOD, EBooleen theIsElemNum = eVRAI, EBooleen theIsElemNames = eVRAI, EModeSwitch theMode = eFULL_INTERLACE) = 0; //! Creates a MEDWrapper MED Cells representation virtual PCellInfo CrCellInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, const TIntVector& theConnectivities, EConnectivite theConnMode = eNOD, const TIntVector& theFamilyNums = TIntVector(), const TIntVector& theElemNums = TIntVector(), const TStringVector& theElemNames = TStringVector(), EModeSwitch theMode = eFULL_INTERLACE) = 0; //! A copy-constructor for the MEDWrapper MED Cells representation virtual PCellInfo CrCellInfo(const PMeshInfo& theMeshInfo, const PCellInfo& theInfo) = 0; //! Read a MEDWrapper MED Cells representation from defined MED file PCellInfo GetPCellInfo(const PMeshInfo& theMeshInfo, EEntiteMaillage theEntity, EGeometrieElement theGeom, EConnectivite theConnMode = eNOD, TErr* theErr = NULL); //---------------------------------------------------------------------------- //! Read number of balls in the Mesh /*! This feature is supported since version 3.0 */ virtual TInt GetNbBalls(const TMeshInfo& theMeshInfo) { return 0; } //! Read a MEDWrapped representation of MED_BALL from the MED file /*! This feature is supported since version 3.0 */ virtual void GetBallInfo(TBallInfo& theInfo, TErr* theErr = NULL) {} //! Write a MEDWrapped representation of MED_BALL to the MED file /*! This feature is supported since version 3.0 */ virtual void SetBallInfo(const TBallInfo& theInfo, TErr* theErr = NULL) {} //! Creates a MEDWrapper MED Balls representation /*! This feature is supported since version 3.0 */ virtual PBallInfo CrBallInfo(const PMeshInfo& theMeshInfo, TInt theNbBalls, EBooleen theIsElemNum = eVRAI) { return PBallInfo(); } //! Creates a MEDWrapper MED Balls representation /*! This feature is supported since version 3.0 */ virtual PBallInfo CrBallInfo(const PMeshInfo& theMeshInfo, const TIntVector& theNodes, TFloatVector& theDiameters, const TIntVector& theFamilyNums = TIntVector(), const TIntVector& theElemNums = TIntVector()) { return PBallInfo(); } //! A copy-constructor for the MEDWrapped MED Balls representation virtual PBallInfo CrBallInfo(const PMeshInfo& theMeshInfo, const PBallInfo& theInfo) { return PBallInfo(); } //! Read a MEDWrapped MED Balls representation from defined MED file /*! This feature is supported since version 3.0 */ virtual PBallInfo GetPBallInfo(const PMeshInfo& theMeshInfo); //---------------------------------------------------------------------------- //! Read number of MED FIELDS in defined MED Mesh virtual TInt GetNbFields(TErr* theErr = NULL) = 0; //! Read number of components for the defined MED FIELD by its order number virtual TInt GetNbComp(TInt theFieldId, TErr* theErr = NULL) = 0; //! Read MEDWrapper MED FIELD representation by its order number virtual void GetFieldInfo(TInt theFieldId, TFieldInfo& theInfo, TErr* theErr = NULL) = 0; //! Write MEDWrapper MED FIELD representation into defined MED file virtual void SetFieldInfo(const TFieldInfo& theInfo, TErr* theErr = NULL) = 0; //! Creates a MEDWrapper MED FIELD representation virtual PFieldInfo CrFieldInfo(const PMeshInfo& theMeshInfo, TInt theNbComp = 0, ETypeChamp theType = eFLOAT64, const std::string& theValue = "", EBooleen theIsLocal = eVRAI, TInt theNbRef = 1) = 0; //! A copy-constructor for the MEDWrapper MED FIELD representation virtual PFieldInfo CrFieldInfo(const PMeshInfo& theMeshInfo, const PFieldInfo& theInfo) = 0; //! Read a MEDWrapper MED FIELD representation from defined MED file PFieldInfo GetPFieldInfo(const PMeshInfo& theMeshInfo, TInt theId, TErr* theErr = NULL); //---------------------------------------------------------------------------- //! Read number of MED GAUSS in defined MED Mesh /*! This feature is support only for version of 2.2 and higher */ virtual TInt GetNbGauss(TErr* theErr = NULL) { return TInt(); } //! Read brief MED GAUSS information by its order number from defined MED Mesh /*! This feature is support only for version of 2.2 and higher */ virtual TGaussInfo::TInfo GetGaussPreInfo(TInt theId, TErr* theErr = NULL) { return TGaussInfo::TInfo( TGaussInfo::TKey(ePOINT1,""),0 ); } //! Read a MEDWrapper MED GAUSS representation by its order number from defined MED file /*! This feature is support only for version of 2.2 and higher */ virtual void GetGaussInfo(TInt theId, TGaussInfo& theInfo, TErr* theErr = NULL) {} //! Creates a MEDWrapper MED GAUSS representation /*! This feature is support only for version of 2.2 and higher */ virtual PGaussInfo CrGaussInfo(const TGaussInfo::TInfo& theInfo, EModeSwitch theMode = eFULL_INTERLACE) = 0; //---------------------------------------------------------------------------- //! Read number of MED TIMESTAMPS in defined MED Mesh /*! By the way some additional information can be obtained: - to what MED ENTITY the MED TIMESTAMP conntected to; - on what geometrical types the MED TIMESTAMP defined to. */ virtual TInt GetNbTimeStamps(const TFieldInfo& theInfo, const TEntityInfo& theEntityInfo, EEntiteMaillage& theEntity, TGeom2Size& theGeom2Size, TErr* theErr = NULL) = 0; //! Read MEDWrapper MED TIMESTAMP representation by its order number virtual void GetTimeStampInfo(TInt theTimeStampId, TTimeStampInfo& theInfo, TErr* theErr = NULL) = 0; //! Creates a MEDWrapper MED TIMESTAMP representation virtual PTimeStampInfo CrTimeStampInfo(const PFieldInfo& theFieldInfo, EEntiteMaillage theEntity, const TGeom2Size& theGeom2Size, const TGeom2NbGauss& theGeom2NbGauss = TGeom2NbGauss(), TInt theNumDt = 0, TInt theNumOrd = 0, TFloat theDt = 0, const std::string& theUnitDt = "", const TGeom2Gauss& theGeom2Gauss = TGeom2Gauss()) = 0; //! A copy-constructor for the MEDWrapper MED TIMESTAMP representation virtual PTimeStampInfo CrTimeStampInfo(const PFieldInfo& theFieldInfo, const PTimeStampInfo& theInfo) = 0; //! Read MEDWrapper MED TIMESTAMP representation by its order number PTimeStampInfo GetPTimeStampInfo(const PFieldInfo& theFieldInfo, EEntiteMaillage theEntity, const TGeom2Size& theGeom2Size, TInt theId, TErr* theErr = NULL); //---------------------------------------------------------------------------- //! Read number of MED PROFILES in defined MED Mesh virtual TInt GetNbProfiles(TErr* theErr = NULL) = 0; //! Read brief MED PROFILE information by its order number from defined MED Mesh virtual TProfileInfo::TInfo GetProfilePreInfo(TInt theId, TErr* theErr = NULL) = 0; //! Read a MEDWrapper MED PROFILE representation by its order number from defined MED file virtual void GetProfileInfo(TInt theId, TProfileInfo& theInfo, TErr* theErr = NULL) = 0; //! Creates a MEDWrapper MED PROFILE representation virtual PProfileInfo CrProfileInfo(const TProfileInfo::TInfo& theInfo, EModeProfil theMode = eCOMPACT) = 0; //! Write a MEDWrapper MED PROFILE representation virtual void SetProfileInfo(const TProfileInfo& theInfo, TErr* theErr = NULL) = 0; //! Read a MEDWrapper MED PROFILE representation by its order number from defined MED file PProfileInfo GetPProfileInfo(TInt theId, EModeProfil theMode = eCOMPACT, TErr* theErr = NULL); //---------------------------------------------------------------------------- //! Read the values for MEDWrapper MED TIEMSTAMP from defined MED file virtual void GetTimeStampValue(const PTimeStampValueBase& theTimeStampValue, const TMKey2Profile& theMKey2Profile, const TKey2Gauss& theKey2Gauss, TErr* theErr = NULL) = 0; //! Write the values for MEDWrapper MED TIEMSTAMP to defined MED file virtual void SetTimeStampValue(const PTimeStampValueBase& theTimeStampValue, TErr* theErr = NULL) = 0; //! Creates the values for MEDWrapper MED TIEMSTAMP representation virtual PTimeStampValueBase CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo, ETypeChamp theTypeChamp, const TGeom2Profile& theGeom2Profile = TGeom2Profile(), EModeSwitch theMode = eFULL_INTERLACE) = 0; //! Creates the values for MEDWrapper MED TIEMSTAMP representation virtual PTimeStampValueBase CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo, const TGeom2Profile& theGeom2Profile = TGeom2Profile(), EModeSwitch theMode = eFULL_INTERLACE); //! A copy-constructor for the values for MEDWrapper MED TIEMSTAMP representation virtual PTimeStampValueBase CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo, const PTimeStampValueBase& theInfo, ETypeChamp theTypeChamp) = 0; //! A copy-constructor for the values for MEDWrapper MED TIEMSTAMP representation virtual PTimeStampValueBase CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo, const PTimeStampValueBase& theInfo); //! Read the values for MEDWrapper MED TIEMSTAMP from defined MED file PTimeStampValueBase GetPTimeStampValue(const PTimeStampInfo& theTimeStampInfo, const TMKey2Profile& theMKey2Profile, const TKey2Gauss& theKey2Gauss, TErr* theErr = NULL); //---------------------------------------------------------------------------- // Backward compatibility declarations //! Read the values for MEDWrapper MED TIEMSTAMP from defined MED file virtual void GetTimeStampVal(const PTimeStampVal& theVal, const TMKey2Profile& theMKey2Profile, const TKey2Gauss& theKey2Gauss, TErr* theErr = NULL); //! Write the values for MEDWrapper MED TIEMSTAMP to defined MED file virtual void SetTimeStamp(const PTimeStampVal& theVal, TErr* theErr = NULL); //! Creates the values for MEDWrapper MED TIEMSTAMP representation virtual PTimeStampVal CrTimeStampVal(const PTimeStampInfo& theTimeStampInfo, const TGeom2Profile& theGeom2Profile = TGeom2Profile(), EModeSwitch theMode = eFULL_INTERLACE); //! A copy-constructor for the values for MEDWrapper MED TIEMSTAMP representation virtual PTimeStampVal CrTimeStampVal(const PTimeStampInfo& theTimeStampInfo, const PTimeStampVal& theInfo); //! Read the values for MEDWrapper MED TIEMSTAMP from defined MED file PTimeStampVal GetPTimeStampVal(const PTimeStampInfo& theTimeStampInfo, const TMKey2Profile& theMKey2Profile, const TKey2Gauss& theKey2Gauss, TErr* theErr = NULL); //---------------------------------------------------------------------------- //! Read a MEDWrapper MED Grille representation from defined MED file /*! This feature is support only for version of 2.2 and higher */ PGrilleInfo GetPGrilleInfo(const PMeshInfo& theMeshInfo); //! Read a MEDWrapper MED Grille representation from defined MED file /*! This feature is support only for version of 2.2 and higher */ PGrilleInfo GetPGrilleInfo(const PMeshInfo& theMeshInfo, const PGrilleInfo& theInfo); //! Read a MEDWrapper MED Grille representation from defined MED file /*! This feature is support only for version of 2.2 and higher */ virtual void GetGrilleInfo(TGrilleInfo& theInfo, TErr* theErr = NULL) {} //! Write the MEDWrapper MED Grille representation into defined MED file /*! This feature is support only for version of 2.2 and higher */ virtual void SetGrilleInfo(const TGrilleInfo& theInfo, TErr* theErr = NULL) {} /*! This feature is support only for version of 2.2 and higher */ virtual PGrilleInfo CrGrilleInfo(const PMeshInfo& theMeshInfo, const PGrilleInfo& theGrilleInfo) { return PGrilleInfo(); } /*! This feature is support only for version of 2.2 and higher */ virtual PGrilleInfo CrGrilleInfo(const PMeshInfo& theMeshInfo) { return PGrilleInfo(); } /*! This feature is support only for version of 2.2 and higher */ virtual PGrilleInfo CrGrilleInfo(const PMeshInfo& theMeshInfo, const EGrilleType& type) { return PGrilleInfo(); } /*! This feature is support only for version of 2.2 and higher */ virtual PGrilleInfo CrGrilleInfo(const PMeshInfo& theMeshInfo, const EGrilleType& type, const TInt& nbNodes) { return PGrilleInfo(); } /*! This feature is support only for version of 2.2 and higher */ virtual PGrilleInfo CrGrilleInfo(const PMeshInfo& theMeshInfo, const EGrilleType& type, const MED::TIntVector& nbNodeVec) { return PGrilleInfo(); } /*! This feature is support only for version of 2.2 and higher */ virtual void GetGrilleType(const TMeshInfo& theMeshInfo, EGrilleType& type, TErr* theErr = NULL) { } }; //---------------------------------------------------------------------------- //! This class provide thread-safety for MEDWrapper interaction class MEDWRAPPER_EXPORT TLockProxy { TLockProxy& operator=(const TLockProxy& ); TWrapper* myWrapper; public: TLockProxy(TWrapper* theWrapper); ~TLockProxy(); TWrapper * operator-> () const; }; //---------------------------------------------------------------------------- //! To specialize the SharedPtr for TWrapper template<> class MEDWRAPPER_EXPORT SharedPtr: public boost::shared_ptr { public: SharedPtr() {} template explicit SharedPtr(Y * p): boost::shared_ptr(p) {} template SharedPtr(SharedPtr const & r): boost::shared_ptr(boost::dynamic_pointer_cast(r)) {} template SharedPtr& operator=(SharedPtr const & r) { SharedPtr(r).swap(*this); return *this; } template SharedPtr& operator()(Y * p) // Y must be complete { return operator=(SharedPtr(p)); } template SharedPtr& operator()(SharedPtr const & r) // Y must be complete { return operator=(SharedPtr(r)); } TLockProxy operator-> () const // never throws { return TLockProxy(this->get()); } protected: operator const TWrapper& () const; operator TWrapper& (); TWrapper& operator* () const; TWrapper * get() const // never throws { return boost::shared_ptr::get(); } }; //---------------------------------------------------------------------------- typedef SharedPtr PWrapper; } #endif