xref: /petsc/src/sys/fileio/ftn-custom/zsysiof.c (revision 296ae53d5f1397142a79e0dfc9ea3336f3552b2a)
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
11*296ae53dSBarry Smith #define petscbinaryreadintcnt_      PETSCBINARYREADINTCNT
1218d1adefSBarry Smith #define petscbinaryreadint1_        PETSCBINARYREADINT1
13*296ae53dSBarry Smith #define petscbinaryreadreal1_       PETSCBINARYREADREAL1
1418d1adefSBarry Smith #define petscbinaryreadcomplex1_    PETSCBINARYREADCOMPLEX1
15*296ae53dSBarry Smith #define petscbinaryreadint1cnt_     PETSCBINARYREADINT1CNT
16*296ae53dSBarry Smith #define petscbinaryreadreal1cnt_    PETSCBINARYREADREAL1CNT
17*296ae53dSBarry 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
30*296ae53dSBarry Smith #define petscbinaryreadintcnt_      petscbinaryreadintcnt
3118d1adefSBarry Smith #define petscbinaryreadrealcnt_     petscbinaryreadrealcnt
3218d1adefSBarry Smith #define petscbinaryreadcomplexcnt_  petscbinaryreadcomplexcnt
3318d1adefSBarry Smith #define petscbinaryreadint1_        petscbinaryreadint1
34*296ae53dSBarry Smith #define petscbinaryreadrea11_       petscbinaryreadrea11
3518d1adefSBarry Smith #define petscbinaryreadcomplex1_    petscbinaryreadcomplex1
36*296ae53dSBarry Smith #define petscbinaryreadint1cnt_     petscbinaryreadint1cnt
37*296ae53dSBarry Smith #define petscbinaryreadreal1cnt_    petscbinaryreadreal1cnt
38*296ae53dSBarry 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 
52a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywriteint_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
53a9acdec7SBarry Smith {
54a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
55a9acdec7SBarry Smith }
56a9acdec7SBarry Smith 
57a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywritereal_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
58a9acdec7SBarry Smith {
59a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
60a9acdec7SBarry Smith }
61a9acdec7SBarry Smith 
62a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywritecomplex_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
63a9acdec7SBarry Smith {
64a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
65a9acdec7SBarry Smith }
66a9acdec7SBarry Smith 
67a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywriteint1_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
68a9acdec7SBarry Smith {
69a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
70a9acdec7SBarry Smith }
71a9acdec7SBarry Smith 
72a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywritereal1_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
73a9acdec7SBarry Smith {
74a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
75a9acdec7SBarry Smith }
76a9acdec7SBarry Smith 
77a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinarywritecomplex1_(int *fd,void*p,PetscInt *n,PetscDataType *type,PetscBool  *istemp, int *ierr)
78a9acdec7SBarry Smith {
79a9acdec7SBarry Smith   *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp);
80a9acdec7SBarry Smith }
81a9acdec7SBarry Smith 
82390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscbinaryopen_(char* name PETSC_MIXED_LEN(len),PetscFileMode *type,int *fd,
8355fcb7f5SSatish Balay                                     PetscErrorCode *ierr PETSC_END_LEN(len))
8455fcb7f5SSatish Balay {
8555fcb7f5SSatish Balay   char *c1;
8655fcb7f5SSatish Balay 
8755fcb7f5SSatish Balay   FIXCHAR(name,len,c1);
88d49bb8f9SBarry Smith   *ierr = PetscBinaryOpen(c1,*type,fd);if (*ierr) return;
8955fcb7f5SSatish Balay   FREECHAR(name,c1);
9055fcb7f5SSatish Balay }
9155fcb7f5SSatish Balay 
92a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadint_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
93a9acdec7SBarry Smith {
94a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
95a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
96a9acdec7SBarry Smith }
97a9acdec7SBarry Smith 
98a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadreal_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
99a9acdec7SBarry Smith {
100a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
101a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
102a9acdec7SBarry Smith }
103a9acdec7SBarry Smith 
104a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadcomplex_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
105a9acdec7SBarry Smith {
106a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
107a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
108a9acdec7SBarry Smith }
109a9acdec7SBarry Smith 
110a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadint1_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
111a9acdec7SBarry Smith {
112a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
113a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
114a9acdec7SBarry Smith }
115a9acdec7SBarry Smith 
116a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadreal1_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
117a9acdec7SBarry Smith {
118a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
119a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
120a9acdec7SBarry Smith }
121a9acdec7SBarry Smith 
122a9acdec7SBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadcomplex1_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
1239860990eSLisandro Dalcin {
1249860990eSLisandro Dalcin   CHKFORTRANNULLINTEGER(count);
1259860990eSLisandro Dalcin   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
1269860990eSLisandro Dalcin }
1279860990eSLisandro Dalcin 
12818d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadintcnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
12918d1adefSBarry Smith {
13018d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
13118d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
13218d1adefSBarry Smith }
13318d1adefSBarry Smith 
13418d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadrealcnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
13518d1adefSBarry Smith {
13618d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
13718d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
13818d1adefSBarry Smith }
13918d1adefSBarry Smith 
14018d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadcomplexcnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
14118d1adefSBarry Smith {
14218d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
14318d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
14418d1adefSBarry Smith }
14518d1adefSBarry Smith 
14618d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadint1cnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
14718d1adefSBarry Smith {
14818d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
14918d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
15018d1adefSBarry Smith }
15118d1adefSBarry Smith 
15218d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadreal1cnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
15318d1adefSBarry Smith {
15418d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
15518d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
15618d1adefSBarry Smith }
15718d1adefSBarry Smith 
15818d1adefSBarry Smith PETSC_EXTERN void PETSC_STDCALL  petscbinaryreadcomplex1cnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
15918d1adefSBarry Smith {
16018d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
16118d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
16218d1adefSBarry Smith }
16318d1adefSBarry Smith 
164390e1bf2SBarry 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))
165c1bccaadSBarry Smith {
166ca43db0aSBarry Smith   char *c1;
167c1bccaadSBarry Smith 
168c1bccaadSBarry Smith   FIXCHAR(name,len,c1);
169d49bb8f9SBarry Smith   *ierr = PetscTestFile(c1,*mode,flg);if (*ierr) return;
170c1bccaadSBarry Smith   FREECHAR(name,c1);
171c1bccaadSBarry Smith }
17218d1adefSBarry Smith 
17318d1adefSBarry Smith #if defined(__cplusplus)
17418d1adefSBarry Smith }
17518d1adefSBarry Smith #endif
176