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