xref: /petsc/src/sys/fileio/ftn-custom/zsysiof.c (revision 5975b3b6e3931510e2a64a701673cbe1930c6f42)
1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h>
255fcb7f5SSatish Balay 
355fcb7f5SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS)
455fcb7f5SSatish Balay   #define petscbinaryopen_            PETSCBINARYOPEN
5c1bccaadSBarry Smith   #define petsctestfile_              PETSCTESTFILE
618d1adefSBarry Smith   #define petscbinaryreadint_         PETSCBINARYREADINT
718d1adefSBarry Smith   #define petscbinaryreadreal_        PETSCBINARYREADREAL
818d1adefSBarry Smith   #define petscbinaryreadcomplex_     PETSCBINARYREADCOMPLEX
918d1adefSBarry Smith   #define petscbinaryreadrealcnt_     PETSCBINARYREADREALCNT
1018d1adefSBarry Smith   #define petscbinaryreadcomplexcnt_  PETSCBINARYREADCOMPLEXCNT
11296ae53dSBarry Smith   #define petscbinaryreadintcnt_      PETSCBINARYREADINTCNT
1218d1adefSBarry Smith   #define petscbinaryreadint1_        PETSCBINARYREADINT1
13296ae53dSBarry Smith   #define petscbinaryreadreal1_       PETSCBINARYREADREAL1
1418d1adefSBarry Smith   #define petscbinaryreadcomplex1_    PETSCBINARYREADCOMPLEX1
15296ae53dSBarry Smith   #define petscbinaryreadint1cnt_     PETSCBINARYREADINT1CNT
16296ae53dSBarry Smith   #define petscbinaryreadreal1cnt_    PETSCBINARYREADREAL1CNT
17296ae53dSBarry Smith   #define petscbinaryreadcomplex1cnt_ PETSCBINARYREADCOMPLEX1CNT
1818d1adefSBarry Smith   #define petscbinarywriteint_        PETSCBINARYWRITEINT
1918d1adefSBarry Smith   #define petscbinarywritereal_       PETSCBINARYWRITEREAL
2018d1adefSBarry Smith   #define petscbinarywritecomplex_    PETSCBINARYWRITECOMPLEX
2118d1adefSBarry Smith   #define petscbinarywriteint1_       PETSCBINARYWRITEINT1
2218d1adefSBarry Smith   #define petscbinarywritereal1_      PETSCBINARYWRITEREAL1
2318d1adefSBarry Smith   #define petscbinarywritecomplex1_   PETSCBINARYWRITECOMPLEX1
2455fcb7f5SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
2555fcb7f5SSatish Balay   #define petscbinaryopen_            petscbinaryopen
26a8cc4164SSatish Balay   #define petsctestfile_              petsctestfile
2718d1adefSBarry Smith   #define petscbinaryreadint_         petscbinaryreadint
2818d1adefSBarry Smith   #define petscbinaryreadreal_        petscbinaryreadreal
2918d1adefSBarry Smith   #define petscbinaryreadcomplex_     petscbinaryreadcomplex
30296ae53dSBarry Smith   #define petscbinaryreadintcnt_      petscbinaryreadintcnt
3118d1adefSBarry Smith   #define petscbinaryreadrealcnt_     petscbinaryreadrealcnt
3218d1adefSBarry Smith   #define petscbinaryreadcomplexcnt_  petscbinaryreadcomplexcnt
3318d1adefSBarry Smith   #define petscbinaryreadint1_        petscbinaryreadint1
34296ae53dSBarry Smith   #define petscbinaryreadrea11_       petscbinaryreadrea11
3518d1adefSBarry Smith   #define petscbinaryreadcomplex1_    petscbinaryreadcomplex1
36296ae53dSBarry Smith   #define petscbinaryreadint1cnt_     petscbinaryreadint1cnt
37296ae53dSBarry Smith   #define petscbinaryreadreal1cnt_    petscbinaryreadreal1cnt
38296ae53dSBarry Smith   #define petscbinaryreadcomplex1cnt_ petscbinaryreadcomplex1cnt
3918d1adefSBarry Smith   #define petscbinarywriteint_        petscbinarywriteint
4018d1adefSBarry Smith   #define petscbinarywritereal_       petscbinarywritereal
4118d1adefSBarry Smith   #define petscbinarywritecomplex_    petscbinarywritecomplex
4218d1adefSBarry Smith   #define petscbinarywriteint1_       petscbinarywriteint1
4318d1adefSBarry Smith   #define petscbinarywritereal1_      petscbinarywritereal1
4418d1adefSBarry Smith   #define petscbinarywritecomplex1_   petscbinarywritecomplex1
4555fcb7f5SSatish Balay #endif
4655fcb7f5SSatish Balay 
47a9acdec7SBarry Smith /* Definitions of Fortran Wrapper routines */
48a9acdec7SBarry Smith #if defined(__cplusplus)
49a9acdec7SBarry Smith extern "C" {
50a9acdec7SBarry Smith #endif
51a9acdec7SBarry Smith 
52f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywriteint_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr)
53a9acdec7SBarry Smith {
54f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd, p, *n, *type);
55a9acdec7SBarry Smith }
56a9acdec7SBarry Smith 
57f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywritereal_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr)
58a9acdec7SBarry Smith {
59f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd, p, *n, *type);
60a9acdec7SBarry Smith }
61a9acdec7SBarry Smith 
62f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywritecomplex_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr)
63a9acdec7SBarry Smith {
64f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd, p, *n, *type);
65a9acdec7SBarry Smith }
66a9acdec7SBarry Smith 
67f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywriteint1_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr)
68a9acdec7SBarry Smith {
69f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd, p, *n, *type);
70a9acdec7SBarry Smith }
71a9acdec7SBarry Smith 
72f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywritereal1_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr)
73a9acdec7SBarry Smith {
74f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd, p, *n, *type);
75a9acdec7SBarry Smith }
76a9acdec7SBarry Smith 
77f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywritecomplex1_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr)
78a9acdec7SBarry Smith {
79f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd, p, *n, *type);
80a9acdec7SBarry Smith }
81a9acdec7SBarry Smith 
82*5975b3b6SBarry Smith PETSC_EXTERN void petscbinaryopen_(char *name, PetscFileMode *type, int *fd, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
8355fcb7f5SSatish Balay {
8455fcb7f5SSatish Balay   char *c1;
8555fcb7f5SSatish Balay 
8655fcb7f5SSatish Balay   FIXCHAR(name, len, c1);
87*5975b3b6SBarry Smith   *ierr = PetscBinaryOpen(c1, *type, fd);
88*5975b3b6SBarry Smith   if (*ierr) return;
8955fcb7f5SSatish Balay   FREECHAR(name, c1);
9055fcb7f5SSatish Balay }
9155fcb7f5SSatish Balay 
9219caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadint_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
93a9acdec7SBarry Smith {
94a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
95*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
96*5975b3b6SBarry Smith   if (*ierr) return;
97a9acdec7SBarry Smith }
98a9acdec7SBarry Smith 
9919caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadreal_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
100a9acdec7SBarry Smith {
101a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
102*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
103*5975b3b6SBarry Smith   if (*ierr) return;
104a9acdec7SBarry Smith }
105a9acdec7SBarry Smith 
10619caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadcomplex_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
107a9acdec7SBarry Smith {
108a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
109*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
110*5975b3b6SBarry Smith   if (*ierr) return;
111a9acdec7SBarry Smith }
112a9acdec7SBarry Smith 
11319caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadint1_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
114a9acdec7SBarry Smith {
115a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
116*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
117*5975b3b6SBarry Smith   if (*ierr) return;
118a9acdec7SBarry Smith }
119a9acdec7SBarry Smith 
12019caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadreal1_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
121a9acdec7SBarry Smith {
122a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
123*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
124*5975b3b6SBarry Smith   if (*ierr) return;
125a9acdec7SBarry Smith }
126a9acdec7SBarry Smith 
12719caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadcomplex1_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
1289860990eSLisandro Dalcin {
1299860990eSLisandro Dalcin   CHKFORTRANNULLINTEGER(count);
130*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
131*5975b3b6SBarry Smith   if (*ierr) return;
1329860990eSLisandro Dalcin }
1339860990eSLisandro Dalcin 
13419caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadintcnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
13518d1adefSBarry Smith {
13618d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
137*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
138*5975b3b6SBarry Smith   if (*ierr) return;
13918d1adefSBarry Smith }
14018d1adefSBarry Smith 
14119caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadrealcnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
14218d1adefSBarry Smith {
14318d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
144*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
145*5975b3b6SBarry Smith   if (*ierr) return;
14618d1adefSBarry Smith }
14718d1adefSBarry Smith 
14819caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadcomplexcnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
14918d1adefSBarry Smith {
15018d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
151*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
152*5975b3b6SBarry Smith   if (*ierr) return;
15318d1adefSBarry Smith }
15418d1adefSBarry Smith 
15519caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadint1cnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
15618d1adefSBarry Smith {
15718d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
158*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
159*5975b3b6SBarry Smith   if (*ierr) return;
16018d1adefSBarry Smith }
16118d1adefSBarry Smith 
16219caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadreal1cnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
16318d1adefSBarry Smith {
16418d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
165*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
166*5975b3b6SBarry Smith   if (*ierr) return;
16718d1adefSBarry Smith }
16818d1adefSBarry Smith 
16919caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadcomplex1cnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr)
17018d1adefSBarry Smith {
17118d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
172*5975b3b6SBarry Smith   *ierr = PetscBinaryRead(*fd, data, *num, count, *type);
173*5975b3b6SBarry Smith   if (*ierr) return;
17418d1adefSBarry Smith }
17518d1adefSBarry Smith 
17619caf8f3SSatish Balay PETSC_EXTERN void petsctestfile_(char *name, char *mode, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len, PETSC_FORTRAN_CHARLEN_T len1)
177c1bccaadSBarry Smith {
178ca43db0aSBarry Smith   char *c1;
179c1bccaadSBarry Smith 
180c1bccaadSBarry Smith   FIXCHAR(name, len, c1);
181*5975b3b6SBarry Smith   *ierr = PetscTestFile(c1, *mode, flg);
182*5975b3b6SBarry Smith   if (*ierr) return;
183c1bccaadSBarry Smith   FREECHAR(name, c1);
184c1bccaadSBarry Smith }
18518d1adefSBarry Smith 
18618d1adefSBarry Smith #if defined(__cplusplus)
18718d1adefSBarry Smith }
18818d1adefSBarry Smith #endif
189