xref: /petsc/src/sys/fileio/ftn-custom/zsysiof.c (revision 18d1adefffea661e60e6680fc855c731754765cd)
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
6*18d1adefSBarry Smith #define petscbinaryreadint_         PETSCBINARYREADINT
7*18d1adefSBarry Smith #define petscbinaryreadreal_        PETSCBINARYREADREAL
8*18d1adefSBarry Smith #define petscbinaryreadcomplex_     PETSCBINARYREADCOMPLEX
9*18d1adefSBarry Smith #define petscbinaryreadrealcnt_     PETSCBINARYREADREALCNT
10*18d1adefSBarry Smith #define petscbinaryreadcomplexcnt_  PETSCBINARYREADCOMPLEXCNT
11*18d1adefSBarry Smith #define petscbinaryreadint1_        PETSCBINARYREADINT1
12*18d1adefSBarry Smith #define petscbinaryreadread1_       PETSCBINARYREADREAL1
13*18d1adefSBarry Smith #define petscbinaryreadcomplex1_    PETSCBINARYREADCOMPLEX1
14*18d1adefSBarry Smith #define petscbinaryreadintcnt1_     PETSCBINARYREADINT1CNT
15*18d1adefSBarry Smith #define petscbinaryreadrealcnt1_    PETSCBINARYREADREAL1CNT
16*18d1adefSBarry Smith #define petscbinaryreadcomplexcnt1_ PETSCBINARYREADCOMPLEX1CNT
17*18d1adefSBarry Smith #define petscbinarywriteint_        PETSCBINARYWRITEINT
18*18d1adefSBarry Smith #define petscbinarywritereal_       PETSCBINARYWRITEREAL
19*18d1adefSBarry Smith #define petscbinarywritecomplex_    PETSCBINARYWRITECOMPLEX
20*18d1adefSBarry Smith #define petscbinarywriteint1_       PETSCBINARYWRITEINT1
21*18d1adefSBarry Smith #define petscbinarywritereal1_      PETSCBINARYWRITEREAL1
22*18d1adefSBarry Smith #define petscbinarywritecomplex1_   PETSCBINARYWRITECOMPLEX1
2355fcb7f5SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
2455fcb7f5SSatish Balay #define petscbinaryopen_            petscbinaryopen
25a8cc4164SSatish Balay #define petsctestfile_              petsctestfile
26*18d1adefSBarry Smith #define petscbinaryreadint_         petscbinaryreadint
27*18d1adefSBarry Smith #define petscbinaryreadreal_        petscbinaryreadreal
28*18d1adefSBarry Smith #define petscbinaryreadcomplex_     petscbinaryreadcomplex
29*18d1adefSBarry Smith #define petscbinaryreadrealcnt_     petscbinaryreadrealcnt
30*18d1adefSBarry Smith #define petscbinaryreadcomplexcnt_  petscbinaryreadcomplexcnt
31*18d1adefSBarry Smith #define petscbinaryreadint1_        petscbinaryreadint1
32*18d1adefSBarry Smith #define petscbinaryreadread1_       petscbinaryreadread1
33*18d1adefSBarry Smith #define petscbinaryreadcomplex1_    petscbinaryreadcomplex1
34*18d1adefSBarry Smith #define petscbinaryreadintcnt1_     petscbinaryreadintcnt1
35*18d1adefSBarry Smith #define petscbinaryreadrealcnt1_    petscbinaryreadrealcnt1
36*18d1adefSBarry Smith #define petscbinaryreadcomplexcnt1_ petscbinaryreadcomplexcnt1
37*18d1adefSBarry Smith #define petscbinarywriteint_        petscbinarywriteint
38*18d1adefSBarry Smith #define petscbinarywritereal_       petscbinarywritereal
39*18d1adefSBarry Smith #define petscbinarywritecomplex_    petscbinarywritecomplex
40*18d1adefSBarry Smith #define petscbinarywriteint1_       petscbinarywriteint1
41*18d1adefSBarry Smith #define petscbinarywritereal1_      petscbinarywritereal1
42*18d1adefSBarry Smith #define petscbinarywritecomplex1_   petscbinarywritecomplex1
4355fcb7f5SSatish Balay #endif
4455fcb7f5SSatish Balay 
45a9acdec7SBarry Smith /* Definitions of Fortran Wrapper routines */
46a9acdec7SBarry Smith #if defined(__cplusplus)
47a9acdec7SBarry Smith extern "C" {
48a9acdec7SBarry Smith #endif
49a9acdec7SBarry Smith 
50a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywriteint_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
51a9acdec7SBarry Smith {
52a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
53a9acdec7SBarry Smith }
54a9acdec7SBarry Smith 
55a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywritereal_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
56a9acdec7SBarry Smith {
57a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
58a9acdec7SBarry Smith }
59a9acdec7SBarry Smith 
60a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywritecomplex_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
61a9acdec7SBarry Smith {
62a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
63a9acdec7SBarry Smith }
64a9acdec7SBarry Smith 
65a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywriteint1_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
66a9acdec7SBarry Smith {
67a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
68a9acdec7SBarry Smith }
69a9acdec7SBarry Smith 
70a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywritereal1_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
71a9acdec7SBarry Smith {
72a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
73a9acdec7SBarry Smith }
74a9acdec7SBarry Smith 
75a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywritecomplex1_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
76a9acdec7SBarry Smith {
77a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
78a9acdec7SBarry Smith }
79a9acdec7SBarry Smith 
80390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscbinaryopen_(char* name PETSC_MIXED_LEN(len),PetscFileMode *type,int *fd,
8155fcb7f5SSatish Balay                                     PetscErrorCode *ierr PETSC_END_LEN(len))
8255fcb7f5SSatish Balay {
8355fcb7f5SSatish Balay   char *c1;
8455fcb7f5SSatish Balay 
8555fcb7f5SSatish Balay   FIXCHAR(name,len,c1);
86d49bb8f9SBarry Smith   *ierr = PetscBinaryOpen(c1,*type,fd);if (*ierr) return;
8755fcb7f5SSatish Balay   FREECHAR(name,c1);
8855fcb7f5SSatish Balay }
8955fcb7f5SSatish Balay 
90a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadint_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
91a9acdec7SBarry Smith {
92a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
93a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
94a9acdec7SBarry Smith }
95a9acdec7SBarry Smith 
96a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadreal_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
97a9acdec7SBarry Smith {
98a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
99a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
100a9acdec7SBarry Smith }
101a9acdec7SBarry Smith 
102a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadcomplex_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
103a9acdec7SBarry Smith {
104a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
105a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
106a9acdec7SBarry Smith }
107a9acdec7SBarry Smith 
108a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadint1_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
109a9acdec7SBarry Smith {
110a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
111a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
112a9acdec7SBarry Smith }
113a9acdec7SBarry Smith 
114a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadreal1_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
115a9acdec7SBarry Smith {
116a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
117a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
118a9acdec7SBarry Smith }
119a9acdec7SBarry Smith 
120a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadcomplex1_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
1219860990eSLisandro Dalcin {
1229860990eSLisandro Dalcin   CHKFORTRANNULLINTEGER(count);
1239860990eSLisandro Dalcin   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
1249860990eSLisandro Dalcin }
1259860990eSLisandro Dalcin 
126*18d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadintcnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
127*18d1adefSBarry Smith {
128*18d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
129*18d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
130*18d1adefSBarry Smith }
131*18d1adefSBarry Smith 
132*18d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadrealcnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
133*18d1adefSBarry Smith {
134*18d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
135*18d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
136*18d1adefSBarry Smith }
137*18d1adefSBarry Smith 
138*18d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadcomplexcnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
139*18d1adefSBarry Smith {
140*18d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
141*18d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
142*18d1adefSBarry Smith }
143*18d1adefSBarry Smith 
144*18d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadint1cnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
145*18d1adefSBarry Smith {
146*18d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
147*18d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
148*18d1adefSBarry Smith }
149*18d1adefSBarry Smith 
150*18d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadreal1cnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
151*18d1adefSBarry Smith {
152*18d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
153*18d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
154*18d1adefSBarry Smith }
155*18d1adefSBarry Smith 
156*18d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadcomplex1cnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
157*18d1adefSBarry Smith {
158*18d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
159*18d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
160*18d1adefSBarry Smith }
161*18d1adefSBarry Smith 
162390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petsctestfile_(char* name PETSC_MIXED_LEN(len),char* mode PETSC_MIXED_LEN(len1),PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len) PETSC_END_LEN(len1))
163c1bccaadSBarry Smith {
164ca43db0aSBarry Smith   char *c1;
165c1bccaadSBarry Smith 
166c1bccaadSBarry Smith   FIXCHAR(name,len,c1);
167d49bb8f9SBarry Smith   *ierr = PetscTestFile(c1,*mode,flg);if (*ierr) return;
168c1bccaadSBarry Smith   FREECHAR(name,c1);
169c1bccaadSBarry Smith }
170*18d1adefSBarry Smith 
171*18d1adefSBarry Smith #if defined(__cplusplus)
172*18d1adefSBarry Smith }
173*18d1adefSBarry Smith #endif
174