1 /*  This file is part of MED.
2  *
3  *  COPYRIGHT (C) 1999 - 2019  EDF R&D, CEA/DEN
4  *  MED is free software: you can redistribute it and/or modify
5  *  it under the terms of the GNU Lesser General Public License as published by
6  *  the Free Software Foundation, either version 3 of the License, or
7  *  (at your option) any later version.
8  *
9  *  MED is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU Lesser General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Lesser General Public License
15  *  along with MED.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 
19 #include <med.h>
20 #include <med_config.h>
21 #include <med_outils.h>
22 #include <stdlib.h>
23 #include <string.h>
24 
25 #define nedffamc F77_FUNC(edffamc,EDFFAMC)
26 #define nedffame F77_FUNC(edffame,EDFFAME)
27 #define nedffaml F77_FUNC(edffaml,EDFFAML)
28 #define nedffami F77_FUNC(edffami,EDFFAMI)
29 #define nedfnfam F77_FUNC(edfnfam,EDFNFAM)
30 #define nedfngro F77_FUNC(edfngro,EDFNGRO)
31 #define nedfnatt F77_FUNC(edfnatt,EDFNATT)
32 
33 
34 #ifdef PPRO_NT
35 med_int
EDFFAMC(med_idt * fid,char * maa,unsigned int bidon1,med_int * lon1,char * fam,unsigned int bidon2,med_int * lon2,med_int * num,med_int * attr_ident,med_int * attr_val,char * attr_desc,unsigned int bidon3,med_int * lon3,med_int * n_attr,char * groupe,unsigned int bidon4,med_int * lon4,med_int * n_groupe)36  EDFFAMC(med_idt *fid, char *maa, unsigned int bidon1, med_int *lon1,
37                   char *fam, unsigned int bidon2, med_int *lon2,
38 	          med_int *num, med_int *attr_ident, med_int *attr_val,
39                   char *attr_desc, unsigned int bidon3,
40 	          med_int *lon3, med_int *n_attr, char *groupe ,
41                   unsigned int bidon4, med_int *lon4, med_int *n_groupe)
42 #else
43 med_int
44 nedffamc(med_idt *fid,char *maa,med_int *lon1,char *fam,med_int *lon2,
45 	 med_int *num,med_int *attr_ident,med_int *attr_val,char *attr_desc,
46 	 med_int *lon3,med_int *n_attr,char *groupe ,med_int *lon4,
47 	 med_int *n_groupe)
48 #endif
49 {
50 
51 
52   char *  name = "nedffamc";
53   int     dummy;
54   med_err fret=-1;
55   med_int majeur, mineur, release;
56   MedFuncType func;
57 
58   MEDversionLire( *fid, &majeur, &mineur, &release );
59 
60   func = _MEDversionedApi(name,majeur,mineur,release);
61   if ( func != (MedFuncType) NULL )
62     func (dummy, fid, maa, lon1, fam, lon2,
63 	  num, attr_ident, attr_val, attr_desc,
64 	  lon3, n_attr, groupe , lon4,
65 	  n_groupe , &fret);
66 
67   return fret;
68 }
69 
70 #ifdef PPRO_NT
71 med_int
EDFFAME(med_idt * fid,char * maa,unsigned int bidon,med_int * lon1,med_int * fam,med_int * n,med_int * type_ent,med_int * type_geo)72  EDFFAME (med_idt *fid, char *maa, unsigned int bidon, med_int *lon1,
73                    med_int *fam, med_int *n, med_int *type_ent,
74                    med_int *type_geo)
75 #else
76 med_int
77 nedffame(med_idt *fid,char *maa,med_int *lon1,med_int *fam,
78 	 med_int *n, med_int *type_ent,med_int *type_geo)
79 #endif
80 {
81   med_int ret;
82   char *  fn1;
83 
84   fn1 = _MED2cstring(maa, (int) * lon1);
85   if (!fn1 )
86     return(-1);
87 
88   ret = (med_int) MEDfamEcr(*fid,fn1,(med_int *)fam,
89 			   (med_int) *n,
90 			   (med_entite_maillage) *type_ent,
91 			   (med_geometrie_element) *type_geo);
92 
93   _MEDcstringFree(fn1);
94 
95   return(ret);
96 }
97 
98 
99 #ifdef PPRO_NT
100 med_int
EDFFAML(med_idt * fid,char * maa,unsigned int bidon,med_int * lon1,med_int * fam,med_int * n,med_int * type_ent,med_int * type_geo)101  EDFFAML(med_idt *fid, char *maa, unsigned int bidon, med_int *lon1,
102                   med_int *fam, med_int *n, med_int *type_ent,
103                   med_int *type_geo)
104 #else
105 med_int
106 nedffaml(med_idt *fid, char *maa, med_int *lon1, med_int *fam,
107 	 med_int *n,med_int *type_ent,med_int *type_geo)
108 #endif
109 {
110   med_int ret;
111   char *  fn1;
112 
113   fn1 = _MED2cstring(maa, (int) * lon1);
114   if (!fn1 )
115     return(-1);
116 
117   ret = (med_int) MEDfamLire(*fid,fn1,(med_int*) fam,(med_int) *n,
118 			     (med_entite_maillage) *type_ent,
119 			     (med_geometrie_element) *type_geo);
120 
121   _MEDcstringFree(fn1);
122 
123   return(ret);
124 }
125 
126 
127 #ifdef  PPRO_NT
128 int
EDFFAMI(med_idt * fid,char * maa,unsigned int bidon1,med_int * lon1,med_int * ind,char * fam,unsigned int bidon2,med_int * num,med_int * attr_ident,med_int * attr_val,char * attr_desc,int unsigned bidon3,med_int * n_attr,char * groupe,int unsigned bidon4,med_int * n_groupe)129  EDFFAMI(med_idt *fid, char *maa, unsigned int bidon1, med_int *lon1,
130                   med_int *ind, char *fam, unsigned int bidon2, med_int *num,
131                   med_int *attr_ident, med_int *attr_val,
132 	          char *attr_desc, int unsigned bidon3, med_int *n_attr,
133 	          char *groupe , int unsigned bidon4, med_int *n_groupe)
134 #else
135 med_int
136 nedffami(med_idt *fid, char *maa,med_int *lon1,med_int *ind,
137 	 char *fam,med_int *num,med_int *attr_ident,med_int *attr_val,
138 	 char *attr_desc,med_int *n_attr,
139 	 char *groupe ,med_int *n_groupe)
140 #endif
141 {
142   med_int ret;
143   char * fn1,* fs1, * fs2;
144   char fs3[MED_TAILLE_NOM+1];
145   int natt,ngro,j;
146   char str[MED_TAILLE_LNOM+1];
147 
148   fn1 = _MED2cstring(maa, (int) * lon1);
149   if (!fn1)
150     return(-1);
151 
152   if ((ngro = MEDnGroupe  (*fid,fn1,*ind)) < 0) return -1;
153   if ((natt = MEDnAttribut(*fid,fn1,*ind)) < 0) return -1;
154 
155   fs1 = (char *) malloc(MED_TAILLE_DESC*natt+1);
156   fs2 = (char *) malloc(MED_TAILLE_LNOM*ngro+1);
157 
158   ret = (med_int) MEDfamInfo(*fid,fn1,(int) *ind, (char *)fs3 ,
159 			     (med_int *)num,
160 			     (med_int *) attr_ident,(med_int *) attr_val,
161 			     (char *) fs1,
162 			     (med_int *) n_attr,
163 			     (char *)fs2 ,(med_int *) n_groupe);
164 
165   strncpy(fam,fs3,MED_TAILLE_NOM);
166   _MEDfstring(fam,MED_TAILLE_NOM);
167   strncpy(attr_desc,fs1,MED_TAILLE_DESC*natt);
168   _MEDfstring(attr_desc,MED_TAILLE_DESC*natt);
169 
170   for (j=0;j<ngro;j++) {
171       strncpy(str,fs2+j*MED_TAILLE_LNOM,MED_TAILLE_LNOM);
172       _MEDfstring(str,MED_TAILLE_LNOM);
173       str[MED_TAILLE_LNOM] = '\0';
174       if (j == 0)
175 	      strcpy(groupe,str);
176       else
177 	      strcat(groupe,str);
178   }
179   _MEDfstring(groupe,MED_TAILLE_LNOM*ngro);
180   free(fs1);
181   free(fs2);
182 
183   _MEDcstringFree(fn1);
184 
185   return(ret);
186 }
187 
188 #ifdef PPRO_NT
189 int
EDFNFAM(med_idt * fid,char * maa,unsigned int bidon,med_int * lon1)190  EDFNFAM(med_idt *fid, char *maa, unsigned int bidon, med_int *lon1)
191 #else
192 med_int
193 nedfnfam(med_idt *fid,char *maa,med_int *lon1)
194 #endif
195 {
196   med_int ret;
197   char *  fn1;
198 
199   fn1 = _MED2cstring(maa, (int) * lon1);
200   if (!fn1)
201     return(-1);
202 
203   ret = (med_int) MEDnFam((med_idt)*fid,fn1);
204 
205   _MEDcstringFree(fn1);
206 
207   return(ret);
208 }
209 
210 #ifdef PPRO_NT
211 int
EDFNGRO(med_idt * fid,char * maa,unsigned int bidon,med_int * lon1,med_int * indice)212  EDFNGRO(med_idt *fid, char *maa, unsigned int bidon, med_int *lon1, med_int *indice)
213 #else
214 med_int
215 nedfngro(med_idt *fid,char *maa,med_int *lon1,med_int *indice)
216 #endif
217 {
218   med_int ret;
219   char *  fn1;
220 
221   fn1 = _MED2cstring(maa, (int) * lon1);
222   if (!fn1)
223     return(-1);
224 
225   ret = (med_int) MEDnGroupe((med_idt)*fid,fn1,(int)*indice);
226 
227   _MEDcstringFree(fn1);
228 
229   return(ret);
230 }
231 
232 
233 #ifdef PPRO_NT
234 int
EDFNATT(med_idt * fid,char * maa,unsigned int bidon,med_int * lon1,med_int * indice)235  EDFNATT(med_idt *fid, char *maa, unsigned int bidon, med_int *lon1, med_int *indice)
236 #else
237 med_int
238 nedfnatt(med_idt *fid,char *maa,med_int *lon1,med_int *indice)
239 #endif
240 {
241   med_int ret;
242   char *  fn1;
243 
244   fn1 = _MED2cstring(maa, (int) * lon1);
245   if (!fn1)
246     return(-1);
247 
248   ret = (med_int) MEDnAttribut((med_idt)*fid,fn1,(int)*indice);
249 
250   _MEDcstringFree(fn1);
251 
252   return(ret);
253 }
254 
255 
256 
257 
258 
259