Salome HOME
Version ok de MED avec MEDGUI.
[modules/med.git] / src / MEDMEM / MEDMEM_DriversDef.cxx
1 #include "MEDMEM_DriversDef.hxx"
2
3 namespace MED_FR {
4
5 // Returns the (string) name of the geometry of 
6 // an element given by a med_geometrie_element value
7 GEO_NAME::GEO_NAME () : map<int,string>()
8 {
9   map<int,string> &table  = (map<int,string>&)*this ;
10   table[(int)0 ] = "MED_NONE" ;
11   table[(int)MED_POINT1 ] = "MED_POINT1" ;
12   table[(int)MED_SEG2   ] = "MED_SEG2"   ;
13   table[(int)MED_SEG3   ] = "MED_SEG3"   ;
14   table[(int)MED_TRIA3  ] = "MED_TRIA3"  ;
15   table[(int)MED_TRIA6  ] = "MED_TRIA6"  ;
16   table[(int)MED_QUAD4  ] = "MED_QUAD4"  ;
17   table[(int)MED_QUAD8  ] = "MED_QUAD8"  ;
18   table[(int)MED_TETRA4 ] = "MED_TETRA4" ;
19   table[(int)MED_TETRA10] = "MED_TETRA10";
20   table[(int)MED_HEXA8  ] = "MED_HEXA8"  ;
21   table[(int)MED_HEXA20 ] = "MED_HEXA20" ;
22   table[(int)MED_PENTA6 ] = "MED_PENTA6" ;
23   table[(int)MED_PENTA15] = "MED_PENTA15";
24   table[(int)MED_PYRA5  ] = "MED_PYRA5"  ;
25   table[(int)MED_PYRA13 ] = "MED_PYRA13" ;
26   assert( table.find( (int)MED_PYRA13 ) != table.end() ) ;
27 }
28   
29 string & GEO_NAME::operator[]( const med_geometrie_element &c ) const
30 {
31   map<int,string> &table = (map<int,string>&)*this ;
32   assert( table.find( (int)c ) != table.end() ) ;
33   return table[ (int)c ] ;
34 }
35
36
37 // Returns the (string) name of the type of 
38 // an entity given by a med_entite_maillage value
39
40 ENT_NAME:: ENT_NAME () : map<int,string>()
41 {
42   map<int,string> &table = (map<int,string>&)*this ;
43   table[(int)MED_MAILLE ] = "MED_MAILLE";
44   table[(int)MED_FACE   ] = "MED_FACE"; 
45   table[(int)MED_ARETE  ] = "MED_ARETE";
46   table[(int)MED_NOEUD  ] = "MED_NOEUD";
47 }
48 string & ENT_NAME::operator[]( const med_entite_maillage &c ) const
49 {
50   map<int,string> &table = (map<int,string>&)*this ;
51   assert( table.find( (int)c ) != table.end() ) ;
52   return table[ (int)c ] ;
53 }
54
55 MESH_ENTITIES::MESH_ENTITIES () : map<int, const list<med_geometrie_element> >() 
56 {
57   // Override the const declaration in order to used the find method below
58   map<int, const list<med_geometrie_element> > &table = (map<int, const list<med_geometrie_element> >&)*this ;
59   
60   // Initialize the value associated with the ROUGE_ key ( use the private operator = )
61   {
62     const med_geometrie_element T[] =  { MED_POINT1,  MED_SEG2,  MED_SEG3,   MED_TRIA3,
63                                          MED_TRIA6,   MED_QUAD4, MED_QUAD8,  MED_TETRA4,
64                                          MED_TETRA10, MED_HEXA8, MED_HEXA20, MED_PENTA6,
65                                          MED_PENTA15,MED_PYRA5, MED_PYRA13 };
66     static const list<med_geometrie_element> geomList(T,T+sizeof(T)/sizeof(med_geometrie_element));   
67     (*this)[MED_MAILLE] = geomList;
68   }
69   
70   {
71     const med_geometrie_element T[] =  { MED_TRIA3,MED_TRIA6, MED_QUAD4,MED_QUAD8 };
72     static const list<med_geometrie_element> geomList(T,T+sizeof(T)/sizeof(med_geometrie_element));   
73     (*this)[MED_FACE] = geomList; 
74   }
75   
76   {
77     const med_geometrie_element T[] =  { MED_SEG2,MED_SEG3 };
78     static const list<med_geometrie_element> geomList(T,T+sizeof(T)/sizeof(med_geometrie_element));   
79     (*this)[MED_ARETE] = geomList; 
80   }
81   
82   {
83     //    const med_geometrie_element T[] =  { MED_NONE };
84     const med_geometrie_element T[] =  { (med_geometrie_element)0 };
85     static const list<med_geometrie_element> geomList(T,T+sizeof(T)/sizeof(med_geometrie_element));   
86     (*this)[MED_NOEUD] = geomList; 
87   }
88   
89 }
90
91 const list<med_geometrie_element> & MESH_ENTITIES::operator[]( const  med_entite_maillage &c ) const
92 {
93   map<int,const list<med_geometrie_element> > &table = (map<int,const list<med_geometrie_element> >&)*this ;
94   // Verify the object already exists in the map
95   assert( table.find( (int)c ) != table.end() ) ;
96   return table[ (int)c ] ;
97 }
98
99 // This operator is used to initialize class objects of type  const list<med_geometrie_element>
100 list<med_geometrie_element> & MESH_ENTITIES::operator[]( const  med_entite_maillage &c )
101 {
102   return (list<med_geometrie_element> &) this->map<int,const list<med_geometrie_element> >::operator[]( (int)c) ;
103 }
104
105 } // End Of NameSpace MED_FR