MED fichier
medfamilycf.c
Aller à la documentation de ce fichier.
1 /* This file is part of MED.
2  *
3  * COPYRIGHT (C) 1999 - 2016 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 <string.h>
23 #include <stdlib.h>
24 
25 
26 
27 /*
28 From Fortran call of following C functions :
29 - MEDfamilyCr
30 - MEDnFamily
31 - MEDnFamilyGroup
32 - MEDfamilyInfo
33 - MEDfamily23Info
34 - MEDnFamily23Attribute
35 */
36 
37 #define nmfafcre F77_FUNC(mfafcre,MFAFCRE)
38 #define nmfafnfa F77_FUNC(mfafnfa,MFAFNFA)
39 #define nmfafnfg F77_FUNC(mfafnfg,MFAFNFG)
40 #define nmfaffai F77_FUNC(mfaffai,MFAFFAI)
41 #define nmfafona F77_FUNC(mfafona,MFAFONA)
42 #define nmfafofi F77_FUNC(mfafofi,MFAFOFI)
43 
44 
45 #ifdef PPRO_NT
46 med_int
47 MFAFCRE(med_int *fid, char *mname, unsigned int bidon1, med_int *mnamelen,
48  char *fname, unsigned int bidon2, med_int *fnamelen,
49  med_int *fnum, med_int *ng, char* gname, unsigned int bidon3,
50  med_int *gnamelen)
51 #else
52 med_int
53 nmfafcre(med_int *fid, char *mname, med_int *mnamelen,
54  char *fname, med_int *fnamelen,
55  med_int *fnum, med_int *ng, char* gname,
56  med_int *gnamelen)
57 #endif
58 {
59  char *_fn1,*_fn2,*_fn3;
60  med_err _ret;
61 
62  _fn1 = _MED2cstring((char *) mname, (int) *mnamelen);
63  if (!_fn1)
64  return(-1);
65  _fn2 = _MED2cstring((char *) fname, (int) *fnamelen);
66  if (!_fn2)
67  return(-1);
68  _fn3 = _MED1cstring((char *) gname, (int) *gnamelen, (int) *ng*MED_LNAME_SIZE);
69  if (!_fn3)
70  return(-1);
71 
72  _ret = (med_int) MEDfamilyCr((med_idt) *fid,
73  _fn1,
74  _fn2,
75  (med_int) *fnum,
76  (med_int) *ng,
77  _fn3);
78 
79  _MEDcstringFree(_fn1);
80  _MEDcstringFree(_fn2);
81  _MEDcstringFree(_fn3);
82 
83  return(_ret);
84 }
85 
86 
87 
88 
89 #ifdef PPRO_NT
90 int
91 MFAFNFA(med_int *fid, char *mname, unsigned int bidon, med_int *mnamelen)
92 #else
93 med_int
94 nmfafnfa(med_int *fid, char *mname, med_int *mnamelen)
95 #endif
96 {
97  med_int _ret;
98  char * _fn1;
99 
100  _fn1 = _MED2cstring((char *) mname, (int) *mnamelen);
101  if (!_fn1)
102  return(-1);
103 
104  _ret = (med_int) MEDnFamily((med_idt)*fid,
105  _fn1);
106 
107  _MEDcstringFree(_fn1);
108 
109  return(_ret);
110 }
111 
112 
113 
114 
115 #ifdef PPRO_NT
116 int
117 MFAFNFG(med_int *fid, char *mname, unsigned int bidon, med_int *mnamelen, med_int *it)
118 #else
119 med_int
120 nmfafnfg(med_int *fid, char *mname, med_int *mnamelen, med_int *it)
121 #endif
122 {
123  med_int _ret;
124  char * _fn1;
125 
126  _fn1 = _MED2cstring(mname, (int) *mnamelen);
127  if (!_fn1)
128  return(-1);
129 
130  _ret = (med_int) MEDnFamilyGroup((med_idt)*fid,
131  _fn1,
132  (int)*it);
133 
134  _MEDcstringFree(_fn1);
135 
136  return(_ret);
137 }
138 
139 
140 
141 #ifdef PPRO_NT
142 int
143 MFAFFAI(med_int *fid, char *mname, unsigned int bidon1, med_int *mnamelen,
144  med_int *it, char *fname, unsigned int bidon2,
145  med_int *fnum, char *gname , int unsigned bidon4)
146 #else
147 med_int
148 nmfaffai(med_int *fid, char *mname,med_int *mnamelen,
149  med_int *it, char *fname,
150  med_int *fnum, char *gname)
151 #endif
152 {
153  med_int _ret;
154  char * _fn1,*_fs2;
155  char _fn3[MED_NAME_SIZE+1]="";
156  int _ng,_j;
157  char _str[MED_LNAME_SIZE+1]="";
158 
159  _fn1 = _MED2cstring(mname, (int) *mnamelen);
160  if (!_fn1)
161  return(-1);
162 
163  _ng = MEDnFamilyGroup((med_idt) *fid,_fn1,*it);
164  if (_ng < 0)
165  return (-1);
166 
167  _fs2 = (char *) malloc(MED_LNAME_SIZE*_ng+1);*_fs2='\0';
168 
169  _ret = (med_int) MEDfamilyInfo((med_idt) *fid,
170  _fn1,
171  (int) *it,
172  (char *)_fn3 ,
173  (med_int *)fnum,
174  _fs2);
175 
176  _MEDc2fString(_fn3,fname,MED_NAME_SIZE);
177 
178  for (_j=0;_j<_ng;_j++) {
179  strncpy(_str,&_fs2[_j*MED_LNAME_SIZE],MED_LNAME_SIZE);_str[MED_LNAME_SIZE]='\0';
180  _MEDc2fString(_str,gname+_j*MED_LNAME_SIZE,MED_LNAME_SIZE);
181  }
182 
183  _MEDcstringFree(_fn1);
184  free(_fs2);
185 
186  return(_ret);
187 }
188 
189 
190 
191 
192 #ifdef PPRO_NT
193 int
194 MFAFONA(med_int *fid, char *mname, unsigned int bidon, med_int *mnamelen, med_int *it)
195 #else
196 med_int
197 nmfafona(med_int *fid, char *mname, med_int *mnamelen, med_int *it)
198 #endif
199 {
200  med_int _ret;
201  char * _fn1;
202 
203  _fn1 = _MED2cstring(mname, (int) *mnamelen);
204  if (!_fn1)
205  return(-1);
206 
207  _ret = (med_int) MEDnFamily23Attribute((med_idt)*fid,
208  _fn1,
209  (int)*it);
210 
211  _MEDcstringFree(_fn1);
212 
213  return(_ret);
214 }
215 
216 
217 
218 #ifdef PPRO_NT
219 int
220 MFAFOFI(med_int *fid, char *mname, unsigned int bidon1, med_int *mnamelen,
221  med_int *it, char *fname, unsigned int bidon2,
222  med_int *attr_ident, med_int *attr_val,
223  char *attr_desc, unsigned int bidon3,
224  med_int *fnum, char *gname , int unsigned bidon4)
225 #else
226 med_int
227 nmfafofi(med_int *fid, char *mname,med_int *mnamelen,
228  med_int *it, char *fname,
229  med_int *attr_ident, med_int *attr_val,
230  char *attr_desc,
231  med_int *fnum, char *gname)
232 #endif
233 {
234  med_int _ret;
235  char * _fn1,*_fs2;
236  char _fn3[MED_NAME_SIZE+1]="";
237  char *_fn4;
238  int _ng,_j, _na;
239  char _str[MED_LNAME_SIZE+1]="";
240 
241  _fn1 = _MED2cstring(mname, (int) *mnamelen);
242  if (!_fn1)
243  return(-1);
244 
245  _ng = MEDnFamilyGroup((med_idt) *fid,_fn1,*it);
246  if (_ng < 0)
247  return (-1);
248 
249  _na = MEDnFamily23Attribute((med_idt) *fid,_fn1,*it);
250  if (_na < 0)
251  return (-1);
252 
253  _fs2 = (char *) malloc(MED_LNAME_SIZE*_ng+1);*_fs2='\0';
254  _fn4 = (char *) malloc(MED_COMMENT_SIZE*_na+1);*_fn4='\0';
255 
256  _ret = (med_int) MEDfamily23Info((med_idt) *fid,
257  _fn1,
258  (int) *it,
259  (char *)_fn3 ,
260  (med_int *) attr_ident,
261  (med_int *) attr_val,
262  (char *) _fn4,
263  (med_int *) fnum,
264  _fs2);
265 
266  _MEDc2fString(_fn3,fname,MED_NAME_SIZE);
267  _MEDc2fString(_fn4,attr_desc,MED_COMMENT_SIZE*_na);
268 
269  for (_j=0;_j<_ng;_j++) {
270  strncpy(_str,&_fs2[_j*MED_LNAME_SIZE],MED_LNAME_SIZE);_str[MED_LNAME_SIZE]='\0';
271  _MEDc2fString(_str,gname+_j*MED_LNAME_SIZE,MED_LNAME_SIZE);
272  }
273 
274 
275  _MEDcstringFree(_fn1);
276  free(_fs2);
277  free(_fn4);
278  return(_ret);
279 }
herr_t med_err
Definition: med.h:310
MEDC_EXPORT med_err _MEDcstringFree(char *chaine)
#define nmfafcre
Definition: medfamilycf.c:37
MEDC_EXPORT med_int MEDnFamilyGroup(const med_idt fid, const char *const meshname, const int famit)
Cette routine permet de lire le nombre de groupe dans une famille.
#define nmfafnfa
Definition: medfamilycf.c:38
#define nmfaffai
Definition: medfamilycf.c:40
#define nmfafona
Definition: medfamilycf.c:41
#define nmfafofi
Definition: medfamilycf.c:42
#define MED_LNAME_SIZE
Definition: med.h:76
MEDC_EXPORT med_int MEDnFamily23Attribute(const med_idt fid, const char *const meshname, const int famit)
Cette routine permet de lire le nombre d'attribut dans une famille dans un maillage créé avec MED 2...
int med_int
Definition: med.h:316
MEDC_EXPORT char * _MED1cstring(char *chaine, int longueur_reelle, int longueur_fixee)
Definition: MED1cstring.c:37
MEDC_EXPORT med_err MEDfamilyInfo(const med_idt fid, const char *const meshname, const int famit, char *const familyname, med_int *const familynumber, char *const groupname)
Cette routine permet de lire les informations relatives à une famille d'un maillage.
Definition: MEDfamilyInfo.c:39
MEDC_EXPORT med_err MEDfamilyCr(const med_idt fid, const char *const meshname, const char *const familyname, const med_int familynumber, const med_int ngroup, const char *const groupname)
Cette routine permet la création d'une famille portant sur les entités d'un maillage.
Definition: MEDfamilyCr.c:40
MEDC_EXPORT med_int MEDnFamily(const med_idt fid, const char *const meshname)
Cette routine permet de lire le nombre de famille dans un maillage.
Definition: MEDnFamily.c:35
#define MED_COMMENT_SIZE
Definition: med.h:72
MEDC_EXPORT med_err MEDfamily23Info(const med_idt fid, const char *const meshname, const int famit, char *const familyname, med_int *const attributenumber, med_int *const attributevalue, char *const attributedes, med_int *const familynumber, char *const groupname)
Cette routine permet de lire les informations relatives à une famille d'un maillage créé avec MED 2...
MEDC_EXPORT med_err _MEDc2fString(const char *const chainec, char *const chainef, med_int longueur_buffer77)
hid_t med_idt
Definition: med.h:309
#define MED_NAME_SIZE
Definition: med.h:74
MEDC_EXPORT char * _MED2cstring(char *chaine, int longueur)
Definition: MED2cstring.c:35
#define nmfafnfg
Definition: medfamilycf.c:39