xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision 5ef26d82791c105202c99bf0171a606e8eac9ba6)
1 /*
2   This file contains Fortran stubs for Options routines.
3   These are not generated automatically since they require passing strings
4   between Fortran and C.
5 */
6 
7 #include <petsc-private/fortranimpl.h>
8 
9 #ifdef PETSC_HAVE_FORTRAN_CAPS
10 #define petscoptionsgetenumprivate_        PETSCOPTIONSGETENUMPRIVATE
11 #define petscoptionsgetbool_               PETSCOPTIONSGETBOOL
12 #define petscoptionsgetintarray_           PETSCOPTIONSGETINTARRAY
13 #define petscoptionssetvalue_              PETSCOPTIONSSETVALUE
14 #define petscoptionsclearvalue_            PETSCOPTIONSCLEARVALUE
15 #define petscoptionshasname_               PETSCOPTIONSHASNAME
16 #define petscoptionsgetint_                PETSCOPTIONSGETINT
17 #define petscoptionsgetreal_               PETSCOPTIONSGETREAL
18 #define petscoptionsgetrealarray_          PETSCOPTIONSGETREALARRAY
19 #define petscoptionsgetstring_             PETSCOPTIONSGETSTRING
20 #define petscgetprogramname                PETSCGETPROGRAMNAME
21 #define petscoptionsinsertfile_            PETSCOPTIONSINSERTFILE
22 #define petscoptionsclear_                 PETSCOPTIONSCLEAR
23 #define petscoptionsinsertstring_          PETSCOPTIONSINSERTSTRING
24 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
25 #define petscoptionsgetenumprivate_        petscoptionsgetenumprivate
26 #define petscoptionsgetbool_               petscoptionsgetbool
27 #define petscoptionssetvalue_              petscoptionssetvalue
28 #define petscoptionsclearvalue_            petscoptionsclearvalue
29 #define petscoptionshasname_               petscoptionshasname
30 #define petscoptionsgetint_                petscoptionsgetint
31 #define petscoptionsgetreal_               petscoptionsgetreal
32 #define petscoptionsgetrealarray_          petscoptionsgetrealarray
33 #define petscoptionsgetstring_             petscoptionsgetstring
34 #define petscoptionsgetintarray_           petscoptionsgetintarray
35 #define petscgetprogramname_               petscgetprogramname
36 #define petscoptionsinsertfile_            petscoptionsinsertfile
37 #define petscoptionsclear_                 petscoptionsclear
38 #define petscoptionsinsertstring_          petscoptionsinsertstring
39 #endif
40 
41 EXTERN_C_BEGIN
42 
43 /* ---------------------------------------------------------------------*/
44 
45 void PETSC_STDCALL petscoptionsinsertstring_(CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
46 {
47   char *c1;
48 
49   FIXCHAR(file,len,c1);
50   *ierr = PetscOptionsInsertString(c1);
51   FREECHAR(file,c1);
52 }
53 
54 void PETSC_STDCALL petscoptionsinsertfile_(MPI_Fint *comm,CHAR file PETSC_MIXED_LEN(len),PetscBool  *require,PetscErrorCode *ierr PETSC_END_LEN(len))
55 {
56   char *c1;
57 
58   FIXCHAR(file,len,c1);
59   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),c1,*require);
60   FREECHAR(file,c1);
61 }
62 
63 void PETSC_STDCALL petscoptionssetvalue_(CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2),
64                    PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
65 {
66   char *c1,*c2;
67 
68   FIXCHAR(name,len1,c1);
69   FIXCHAR(value,len2,c2);
70   *ierr = PetscOptionsSetValue(c1,c2);
71   FREECHAR(name,c1);
72   FREECHAR(value,c2);
73 }
74 
75 void PETSC_STDCALL petscoptionsclear_(PetscErrorCode *ierr)
76 {
77   *ierr = PetscOptionsClear();
78 }
79 
80 void PETSC_STDCALL petscoptionsclearvalue_(CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
81 {
82   char *c1;
83 
84   FIXCHAR(name,len,c1);
85   *ierr = PetscOptionsClearValue(c1);
86   FREECHAR(name,c1);
87 }
88 
89 void PETSC_STDCALL petscoptionshasname_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
90                     PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
91 {
92   char *c1,*c2;
93 
94   FIXCHAR(pre,len1,c1);
95   FIXCHAR(name,len2,c2);
96   *ierr = PetscOptionsHasName(c1,c2,flg);
97   FREECHAR(pre,c1);
98   FREECHAR(name,c2);
99 }
100 
101 void PETSC_STDCALL petscoptionsgetint_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
102                     PetscInt *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
103 {
104   char *c1,*c2;
105   PetscBool  flag;
106 
107   FIXCHAR(pre,len1,c1);
108   FIXCHAR(name,len2,c2);
109   *ierr = PetscOptionsGetInt(c1,c2,ivalue,&flag);
110   if (!FORTRANNULLBOOL(flg)) *flg = flag;
111   FREECHAR(pre,c1);
112   FREECHAR(name,c2);
113 }
114 
115 void PETSC_STDCALL petscoptionsgetenumprivate_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),const char *const*list,
116                     PetscEnum *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
117 {
118   char *c1,*c2;
119   PetscBool  flag;
120 
121   FIXCHAR(pre,len1,c1);
122   FIXCHAR(name,len2,c2);
123   *ierr = PetscOptionsGetEnum(c1,c2,list,ivalue,&flag);
124   if (!FORTRANNULLBOOL(flg)) *flg = flag;
125   FREECHAR(pre,c1);
126   FREECHAR(name,c2);
127 }
128 
129 void PETSC_STDCALL petscoptionsgetbool_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
130                     PetscBool  *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
131 {
132   char *c1,*c2;
133   PetscBool  flag;
134 
135   FIXCHAR(pre,len1,c1);
136   FIXCHAR(name,len2,c2);
137   *ierr = PetscOptionsGetBool(c1,c2,ivalue,&flag);
138   if (!FORTRANNULLBOOL(flg)) *flg = flag;
139   FREECHAR(pre,c1);
140   FREECHAR(name,c2);
141 }
142 
143 void PETSC_STDCALL petscoptionsgetreal_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
144                     PetscReal *dvalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
145 {
146   char *c1,*c2;
147   PetscBool  flag;
148 
149   FIXCHAR(pre,len1,c1);
150   FIXCHAR(name,len2,c2);
151   *ierr = PetscOptionsGetReal(c1,c2,dvalue,&flag);
152   if (!FORTRANNULLBOOL(flg)) *flg = flag;
153   FREECHAR(pre,c1);
154   FREECHAR(name,c2);
155 }
156 
157 void PETSC_STDCALL petscoptionsgetrealarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
158                 PetscReal *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
159 {
160   char *c1,*c2;
161   PetscBool  flag;
162 
163   FIXCHAR(pre,len1,c1);
164   FIXCHAR(name,len2,c2);
165   *ierr = PetscOptionsGetRealArray(c1,c2,dvalue,nmax,&flag);
166   if (!FORTRANNULLBOOL(flg)) *flg = flag;
167   FREECHAR(pre,c1);
168   FREECHAR(name,c2);
169 }
170 
171 void PETSC_STDCALL petscoptionsgetintarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
172                    PetscInt *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
173 {
174   char *c1,*c2;
175   PetscBool  flag;
176 
177   FIXCHAR(pre,len1,c1);
178   FIXCHAR(name,len2,c2);
179   *ierr = PetscOptionsGetIntArray(c1,c2,dvalue,nmax,&flag);
180   if (!FORTRANNULLBOOL(flg)) *flg = flag;
181   FREECHAR(pre,c1);
182   FREECHAR(name,c2);
183 }
184 
185 void PETSC_STDCALL petscoptionsgetstring_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
186                     CHAR string PETSC_MIXED_LEN(len),PetscBool  *flg,
187                     PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len))
188 {
189   char *c1,*c2,*c3;
190   size_t len3;
191   PetscBool  flag;
192 
193   FIXCHAR(pre,len1,c1);
194   FIXCHAR(name,len2,c2);
195   c3   = string;
196   len3 = len - 1;
197 
198   *ierr = PetscOptionsGetString(c1,c2,c3,len3,&flag);
199   if (!FORTRANNULLBOOL(flg)) *flg = flag;
200   FREECHAR(pre,c1);
201   FREECHAR(name,c2);
202   FIXRETURNCHAR(flag,string,len);
203 }
204 
205 void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in))
206 {
207   char *tmp;
208   size_t len;
209   tmp = name;
210   len = len_in - 1;
211   *ierr = PetscGetProgramName(tmp,len);
212   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
213 }
214 
215 EXTERN_C_END
216 
217