Salome HOME
00eb32bdf3410f694946450c13c5ed022973668a
[modules/smesh.git] / src / MEDWrapper / Base / MED_Common.hxx
1 // Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 #ifndef MED_Common_HeaderFile
24 #define MED_Common_HeaderFile
25
26 #include "MED_WrapperBase.hxx"
27
28 #include <string>
29 #include <set>
30 #include <map>
31
32 #include <hdf5.h>
33
34 #include <boost/tuple/tuple.hpp>
35
36 #include "SALOMEconfig.h"
37
38 #include "MED_Vector.hxx"
39 #include "MED_SharedPtr.hxx"
40 #include "MED_SliceArray.hxx"
41
42 #ifdef WIN32
43 #pragma warning(disable:4099)
44 #endif
45
46 namespace MED{
47   // enum EVersion sould be synchronized with enum MED_VERSION in SMESH_Mesh.idl (.hh)
48   // i.e. same positive values!
49   enum EVersion {eVUnknown = -1, eV2_1, eV2_2, eLATEST,
50                  eMINOR_0, eMINOR_1, eMINOR_2, eMINOR_3, eMINOR_4, eMINOR_5, eMINOR_6, eMINOR_7, eMINOR_8, eMINOR_9};
51   
52   typedef enum {eFAUX, eVRAI} EBooleen ; 
53   typedef double TFloat;
54 #if defined(HAVE_F77INT64)
55   typedef long TInt;
56 #else
57   typedef int TInt;
58 #endif 
59   typedef hid_t TIdt;
60   typedef herr_t TErr;
61
62   typedef enum {eFULL_INTERLACE, eNO_INTERLACE} EModeSwitch;
63
64   typedef enum {eFLOAT64=6, eINT=24, eLONG=26 } ETypeChamp;
65
66   typedef enum {eNON_STRUCTURE, eSTRUCTURE} EMaillage;
67
68   typedef enum {eCART, eCYL, eSPHER} ERepere; 
69
70   typedef enum {eNOD, eDESC} EConnectivite ; 
71
72   typedef enum {ePOINT1=1, eSEG2=102, eSEG3=103, eTRIA3=203,
73                 eQUAD4=204, eTRIA6=206, eTRIA7=207, eQUAD8=208, eQUAD9=209,eTETRA4=304,
74                 ePYRA5=305, ePENTA6=306, eHEXA8=308, eOCTA12=312, eTETRA10=310, 
75                 ePYRA13=313, ePENTA15=315, ePENTA18=318, eHEXA20=320, eHEXA27=327,
76                 ePOLYGONE=400, ePOLYGON2=420, ePOLYEDRE=500, eNONE=0, 
77                 eBALL=1101 /*no such a type in med.h, it's just a trick*/,
78                 eAllGeoType=-1 } EGeometrieElement;
79
80   typedef enum {eMAILLE, eFACE, eARETE, eNOEUD, eNOEUD_ELEMENT, eSTRUCT_ELEMENT} EEntiteMaillage; 
81
82   typedef enum {eNO_PFLMOD, eGLOBAL, eCOMPACT}  EModeProfil; 
83
84   typedef enum {eGRILLE_CARTESIENNE, eGRILLE_POLAIRE, eGRILLE_STANDARD} EGrilleType;
85
86   typedef enum {eCOOR, eCONN, eNOM, eNUM, eFAM, eCOOR_IND1, eCOOR_IND2, eCOOR_IND3} ETable;
87
88   typedef TVector<TFloat> TFloatVector;
89   typedef TVector<std::string> TStringVector;
90   typedef TVector<TInt> TIntVector;
91   typedef std::set<std::string> TStringSet;
92   
93   typedef std::map<EGeometrieElement,TInt> TGeom2Size;
94   typedef std::map<EEntiteMaillage,TGeom2Size> TEntityInfo;
95
96   typedef std::set<EGeometrieElement> TGeomSet;
97   typedef std::map<EEntiteMaillage,TGeomSet> TEntity2GeomSet;
98
99   MEDWRAPPER_EXPORT 
100   const TEntity2GeomSet& 
101   GetEntity2GeomSet();
102
103   template<EVersion>
104   TInt MEDWRAPPER_EXPORT
105   GetDESCLength();
106   
107   template<EVersion>
108   TInt MEDWRAPPER_EXPORT
109   GetIDENTLength();
110   
111   template<EVersion>
112   TInt MEDWRAPPER_EXPORT
113   GetNOMLength();
114   
115   template<EVersion>
116   TInt MEDWRAPPER_EXPORT
117   GetLNOMLength();
118   
119   template<EVersion>
120   TInt MEDWRAPPER_EXPORT
121   GetPNOMLength();
122   
123   template<EVersion>
124   void MEDWRAPPER_EXPORT
125   GetVersionRelease(TInt& majeur, TInt& mineur, TInt& release);
126   
127   template<EVersion>
128   MEDWRAPPER_EXPORT
129   TInt
130   GetNbConn(EGeometrieElement typmai,
131             EEntiteMaillage typent,
132             TInt mdim);
133   
134   MEDWRAPPER_EXPORT
135   TInt 
136   GetNbNodes(EGeometrieElement typmai);
137
138   struct TNameInfo;
139   typedef SharedPtr<TNameInfo> PNameInfo;
140   
141   struct TMeshInfo;
142   typedef SharedPtr<TMeshInfo> PMeshInfo;
143   
144   struct TFamilyInfo;
145   typedef SharedPtr<TFamilyInfo> PFamilyInfo;
146
147   struct TElemInfo;
148   typedef SharedPtr<TElemInfo> PElemInfo;
149
150   struct TNodeInfo;
151   typedef SharedPtr<TNodeInfo> PNodeInfo;
152
153   struct TPolygoneInfo;
154   typedef SharedPtr<TPolygoneInfo> PPolygoneInfo;
155
156   struct TPolyedreInfo;
157   typedef SharedPtr<TPolyedreInfo> PPolyedreInfo;
158
159   struct TCellInfo;
160   typedef SharedPtr<TCellInfo> PCellInfo;
161
162   struct TBallInfo;
163   typedef SharedPtr<TBallInfo> PBallInfo;
164
165   struct TFieldInfo;
166   typedef SharedPtr<TFieldInfo> PFieldInfo;
167
168   struct TTimeStampInfo;
169   typedef SharedPtr<TTimeStampInfo> PTimeStampInfo;
170
171   struct TProfileInfo;
172   typedef SharedPtr<TProfileInfo> PProfileInfo;
173   
174   struct TGaussInfo;
175   typedef SharedPtr<TGaussInfo> PGaussInfo;
176   
177   class TGrilleInfo;
178   typedef SharedPtr<TGrilleInfo> PGrilleInfo;
179
180   struct TTimeStampValueBase;
181   typedef SharedPtr<TTimeStampValueBase> PTimeStampValueBase;
182
183   struct TWrapper;
184   typedef SharedPtr<TWrapper> PWrapper;
185 }
186
187
188 #endif