MED fichier
medlinkcf.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 From Fortran call of following C functions :
27 - MEDlinkWr
28 - MEDlinkInfo
29 - MEDlinkRd
30 - MEDnLink
31 - MEDlinkInfoByName
32 */
33 
34 #define nmlnfliw F77_FUNC(mlnfliw,MLNFLIW)
35 #define nmlnflir F77_FUNC(mlnflir,MLNFLIR)
36 #define nmlnfnln F77_FUNC(mlnfnln,MLNFNLN)
37 #define nmlnflni F77_FUNC(mlnflni,MLNFLNI)
38 #define nmlnflai F77_FUNC(mlnflai,MLNFLAI)
39 
40 
41 #ifdef PPRO_NT
42 med_int
43 MLNFLIW(med_idt *fid, char *mname, unsigned int bidon1, med_int *mnamelen,
44  char *lname, unsigned int bidon2, med_int *lnamelen)
45 #else
46 med_int
47 nmlnfliw(med_idt *fid, char *mname, med_int *mnamelen,
48  char *lname, med_int *lnamelen)
49 #endif
50 {
51  med_err _ret=0;
52  char *_fn1,*_fn2;
53 
54  _fn1 = _MED2cstring((char *) mname, (int) *mnamelen);
55  if (!_fn1)
56  return(-1);
57  _fn2 = _MED2cstring((char *) lname, (int) *lnamelen);
58  if (!_fn2)
59  return(-1);
60 
61 
62  _ret = (med_int) MEDlinkWr((const med_idt) *fid,
63  _fn1,
64  _fn2);
65 
66  _MEDcstringFree(_fn1);
67  _MEDcstringFree(_fn2);
68 
69  return (_ret);
70 }
71 
72 
73 #ifdef PPRO_NT
74 med_int
75 MLNFNLN(med_int *fid)
76 #else
77 med_int
79 #endif
80 {
81  med_int _ret;
82 
83  _ret = (med_int) MEDnLink((const med_idt) *fid);
84 
85  return(_ret);
86 }
87 
88 
89 
90 #ifdef PPRO_NT
91 med_int
92 MLNFLNI(med_int *fid, med_int *it, char*mname, unsigned int bidon1,
93  med_int *lsize)
94 #else
95 med_int
96 nmlnflni(med_int *fid, med_int *it, char*mname, med_int *lsize)
97 #endif
98 {
99  med_int _ret;
100  char _fs1[MED_NAME_SIZE+1]="";
101 
102  _ret = (med_int) MEDlinkInfo((const med_idt)*fid,
103  (const med_int) *it,
104  _fs1,
105  (med_int *) lsize);
106 
107  _MEDc2fString(_fs1,mname,MED_NAME_SIZE);
108 
109  return _ret;
110 }
111 
112 #ifdef PPRO_NT
113 med_int
114 MLNFLAI(med_int *fid, char*mname, unsigned int bidon1, med_int *mnamelen, med_int *lsize)
115 #else
116 med_int
117 nmlnflai(med_int *fid, char*mname, med_int *mnamelen, med_int *lsize)
118 #endif
119 {
120  med_int _ret;
121  char *_fn1;
122 
123  _fn1 = _MED2cstring((char *) mname, (int) *mnamelen);
124  if (!_fn1)
125  return(-1);
126 
127  _ret = (med_int) MEDlinkInfoByName((const med_idt)*fid,
128  _fn1);
129 
130  *lsize = (med_int) _ret;
131 
132  _MEDcstringFree(_fn1);
133 
134  return _ret;
135 }
136 
137 
138 #ifdef PPRO_NT
139 med_int
140 MLNFLIR(med_idt *fid, char *mname, unsigned int bidon1, med_int *mnamelen,
141  char *lname, unsigned int bidon2, med_int *lnamelen)
142 #else
143 med_int
144 nmlnflir(med_idt *fid, char *mname, med_int *mnamelen, char *lname, med_int *lnamelen)
145 #endif
146 {
147  med_err _ret=0;
148  med_int _size;
149  char *_fn1,*_fn2;
150 
151  _fn1 = _MED2cstring((char *) mname, (int) *mnamelen);
152  if (!_fn1)
153  return(-1);
154 
155  _size = MEDlinkInfoByName((const med_idt) *fid,_fn1);
156  _fn2 = (char *) malloc(sizeof(char)*_size+1);
157  if (!_fn2)
158  return(-1);
159  *_fn2='\0';
160 
161 /* ISCRUTE(_size); */
162 /* SSCRUTE(_fn2); */
163 
164  _ret = (med_int) MEDlinkRd((const med_idt) *fid,
165  _fn1,
166  _fn2);
167 /* SSCRUTE(_fn2); */
168  _MEDc2fString(_fn2,lname,*lnamelen);
169 
170  _MEDcstringFree(_fn1);
171  free(_fn2);
172 
173  return (_ret);
174 }
MEDC_EXPORT med_int MEDlinkInfoByName(const med_idt fid, const char *const meshname)
Cette routine permet de lire les informations sur un lien dans un fichier MED.
herr_t med_err
Definition: med.h:310
MEDC_EXPORT med_err MEDlinkRd(const med_idt fid, const char *const meshname, char *const link)
Cette routine permet de lire un lien dans un fichier MED.
Definition: MEDlinkRd.c:37
MEDC_EXPORT med_err _MEDcstringFree(char *chaine)
#define nmlnfnln
Definition: medlinkcf.c:36
#define nmlnflir
Definition: medlinkcf.c:35
#define nmlnflni
Definition: medlinkcf.c:37
MEDC_EXPORT med_int MEDnLink(const med_idt fid)
Cette routine permet la lecture du nombre de lien dans un fichier MED.
Definition: MEDnLink.c:34
MEDC_EXPORT med_err MEDlinkInfo(const med_idt fid, const int linkit, char *const meshname, med_int *const linksize)
Cette routine permet de lire les informations sur un lien dans un fichier MED.
Definition: MEDlinkInfo.c:38
int med_int
Definition: med.h:316
#define nmlnflai
Definition: medlinkcf.c:38
MEDC_EXPORT med_err _MEDc2fString(const char *const chainec, char *const chainef, med_int longueur_buffer77)
#define nmlnfliw
Definition: medlinkcf.c:34
MEDC_EXPORT med_err MEDlinkWr(const med_idt fid, const char *const meshname, const char *const link)
Cette routine permet d'écrire un lien dans un fichier MED.
Definition: MEDlinkWr.c:36
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