]> SALOME platform Git repositories - modules/smesh.git/blobdiff - src/DriverMED/DriverMED_W_Field.h
Salome HOME
[tuleap26948] : fix of Dump study does not work after study reopening
[modules/smesh.git] / src / DriverMED / DriverMED_W_Field.h
index 56b907d73e43c7902f1f8b95902e450467ffbfbf..d3438237102a024f4e32f7b990dead54709c6d33 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  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
@@ -31,6 +31,7 @@
 #include "Driver_SMESHDS_Mesh.h"
 #include "SMDSAbs_ElementType.hxx"
 #include "SMDS_ElemIterator.hxx"
+#include "MED_Common.hxx"
 
 #include <string>
 #include <vector>
@@ -41,6 +42,8 @@ class MESHDRIVERMED_EXPORT DriverMED_W_Field: public Driver_SMESHDS_Mesh
 
   DriverMED_W_Field();
 
+  void AddODOnVertices(bool toAdd) { _addODOnVertices = toAdd; }
+
   bool Set(SMESHDS_Mesh *      mesh,
            const std::string & fieldName,
            SMDSAbs_ElementType type,
@@ -55,15 +58,19 @@ class MESHDRIVERMED_EXPORT DriverMED_W_Field: public Driver_SMESHDS_Mesh
   void AddValue( int    val );
 
   /*
-   * Returns elements in the order they are written in MED file. Result can be NULL!
+   * Return elements in the order they are written in MED file. Result can be NULL!
    */
   SMDS_ElemIteratorPtr GetOrderedElems();
 
   /*
    * Add one field to the file
    */
-  virtual Status Perform();
+  Status Perform() override;
+
+ protected:
 
+  Status PerformInternal(MED::PWrapper& medFile);
+  
  private:
 
   std::string                _fieldName;
@@ -72,9 +79,22 @@ class MESHDRIVERMED_EXPORT DriverMED_W_Field: public Driver_SMESHDS_Mesh
   std::vector< double >      _dblValues;
   std::vector< int >         _intValues;
   int                        _dt, _it;
+  bool                       _addODOnVertices;
 
   std::vector< const SMDS_MeshElement* >              _elemsByGeom[SMDSEntity_Last];
   std::vector< std::pair< SMDSAbs_EntityType, int > > _nbElemsByGeom;
 };
 
+#include "MEDCouplingMemArray.hxx"
+
+class MESHDRIVERMED_EXPORT DriverMED_W_Field_Mem : public DriverMED_W_Field
+{
+public:
+  DriverMED_W_Field_Mem(MEDCoupling::MCAuto<MEDCoupling::DataArrayByte> data):_data(data) { }
+  Status Perform() override;
+  MEDCoupling::MCAuto<MEDCoupling::DataArrayByte> getData() const { return _data; }
+private:
+  MEDCoupling::MCAuto<MEDCoupling::DataArrayByte> _data;
+};
+
 #endif