Salome HOME
Merge from V6_main 01/04/2013
[modules/med.git] / src / MEDMEM_I / MEDMEM_TraitsForFields.hxx
1 // Copyright (C) 2007-2013  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.
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 __MEDMEM_TRAITSFORFIELDS_HXX__
24 #define __MEDMEM_TRAITSFORFIELDS_HXX__
25
26 #include CORBA_SERVER_HEADER(MED)
27 #include "MEDMEM_Tags.hxx"
28 #include "MEDMEM_InterlacingPolicy.hxx"
29
30 namespace MEDMEM
31 {
32 template < typename T, typename INTERLACING_TAG >
33 struct FIELDI_TRAITS
34 {
35   typedef typename T::InterfaceForServant InterfaceForServant;
36   typedef typename T::FieldCorbaPtrType FieldCorbaPtrType;
37   typedef typename T::SimpleFieldCorbaPtrType SimpleFieldCorbaPtrType;
38   typedef typename T::SimpleFieldGlobalType SimpleFieldGlobalType;
39   typedef typename T::SeqType SeqType;
40   typedef typename T::SeqVarType SeqVarType;
41   typedef typename T::SenderPtrType SenderPtrType;
42   typedef typename T::SenderVarType SenderVarType;
43 };
44
45 template < >
46 struct FIELDI_TRAITS<double, FullInterlace>
47 {
48   typedef POA_SALOME_MED::FIELDDOUBLEFULL InterfaceForServant;
49   typedef SALOME_MED::FIELDDOUBLEFULL_ptr FieldCorbaPtrType;
50   typedef SALOME_MED::FIELDDOUBLE_ptr SimpleFieldCorbaPtrType;
51   typedef SALOME_MED::FIELDDOUBLE SimpleFieldGlobalType;
52   typedef SALOME_TYPES::ListOfDouble SeqType;
53   typedef SALOME_TYPES::ListOfDouble_var SeqVarType;
54   typedef SALOME::SenderDouble_ptr SenderPtrType;
55   typedef SALOME::SenderDouble_var SenderVarType;
56 };
57
58 template < >
59 struct FIELDI_TRAITS<double, NoInterlace>
60 {
61   typedef POA_SALOME_MED::FIELDDOUBLENO InterfaceForServant;
62   typedef SALOME_MED::FIELDDOUBLENO_ptr FieldCorbaPtrType;
63   typedef SALOME_MED::FIELDDOUBLE_ptr SimpleFieldCorbaPtrType;
64   typedef SALOME_MED::FIELDDOUBLE SimpleFieldGlobalType;
65   typedef SALOME_TYPES::ListOfDouble SeqType;
66   typedef SALOME_TYPES::ListOfDouble_var SeqVarType;
67   typedef SALOME::SenderDouble_ptr SenderPtrType;
68   typedef SALOME::SenderDouble_var SenderVarType;
69 };
70
71 template < >
72 struct FIELDI_TRAITS<double, NoInterlaceByType>
73 {
74   typedef POA_SALOME_MED::FIELDDOUBLENOBYTYPE InterfaceForServant;
75   typedef SALOME_MED::FIELDDOUBLENOBYTYPE_ptr FieldCorbaPtrType;
76   typedef SALOME_MED::FIELDDOUBLE_ptr SimpleFieldCorbaPtrType;
77   typedef SALOME_MED::FIELDDOUBLE SimpleFieldGlobalType;
78   typedef SALOME_TYPES::ListOfDouble SeqType;
79   typedef SALOME_TYPES::ListOfDouble_var SeqVarType;
80   typedef SALOME::SenderDouble_ptr SenderPtrType;
81   typedef SALOME::SenderDouble_var SenderVarType;
82 };
83
84 template < >
85 struct FIELDI_TRAITS<int, FullInterlace>
86 {
87   typedef POA_SALOME_MED::FIELDINTFULL InterfaceForServant;
88   typedef SALOME_MED::FIELDINTFULL_ptr FieldCorbaPtrType;
89   typedef SALOME_MED::FIELDINT_ptr SimpleFieldCorbaPtrType;
90   typedef SALOME_MED::FIELDINT SimpleFieldGlobalType;
91   typedef SALOME_TYPES::ListOfLong SeqType;
92   typedef SALOME_TYPES::ListOfLong_var SeqVarType;
93   typedef SALOME::SenderInt_ptr SenderPtrType;
94   typedef SALOME::SenderInt_var SenderVarType;
95 };
96
97 template < >
98 struct FIELDI_TRAITS<int, NoInterlace>
99 {
100   typedef POA_SALOME_MED::FIELDINTNO InterfaceForServant;
101   typedef SALOME_MED::FIELDINTNO_ptr FieldCorbaPtrType;
102   typedef SALOME_MED::FIELDINT_ptr SimpleFieldCorbaPtrType;
103   typedef SALOME_MED::FIELDINT SimpleFieldGlobalType;
104   typedef SALOME_TYPES::ListOfLong SeqType;
105   typedef SALOME_TYPES::ListOfLong_var SeqVarType;
106   typedef SALOME::SenderInt_ptr SenderPtrType;
107   typedef SALOME::SenderInt_var SenderVarType;
108 };
109
110 template < >
111 struct FIELDI_TRAITS<int, NoInterlaceByType>
112 {
113   typedef POA_SALOME_MED::FIELDINTNOBYTYPE InterfaceForServant;
114   typedef SALOME_MED::FIELDINTNOBYTYPE_ptr FieldCorbaPtrType;
115   typedef SALOME_MED::FIELDINT_ptr SimpleFieldCorbaPtrType;
116   typedef SALOME_MED::FIELDINT SimpleFieldGlobalType;
117   typedef SALOME_TYPES::ListOfLong SeqType;
118   typedef SALOME_TYPES::ListOfLong_var SeqVarType;
119   typedef SALOME::SenderInt_ptr SenderPtrType;
120   typedef SALOME::SenderInt_var SenderVarType;
121 };
122 }
123
124 #endif