xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision ce0a2cd1da0658c2b28aad1be2e2c8e41567bece)
19306f9a3SSatish Balay /*
29306f9a3SSatish Balay   This file contains Fortran stubs for Options routines.
39306f9a3SSatish Balay   These are not generated automatically since they require passing strings
49306f9a3SSatish Balay   between Fortran and C.
59306f9a3SSatish Balay */
69306f9a3SSatish Balay 
7*ce0a2cd1SBarry Smith #include "private/fortranimpl.h"
89306f9a3SSatish Balay #include "petscsys.h"
99306f9a3SSatish Balay 
109306f9a3SSatish Balay #ifdef PETSC_HAVE_FORTRAN_CAPS
119306f9a3SSatish Balay #define petscoptionsgettruth_            PETSCOPTIONSGETTRUTH
129306f9a3SSatish Balay #define petscoptionsgetintarray_           PETSCOPTIONSGETINTARRAY
139306f9a3SSatish Balay #define petscoptionssetvalue_              PETSCOPTIONSSETVALUE
149306f9a3SSatish Balay #define petscoptionsclearvalue_            PETSCOPTIONSCLEARVALUE
159306f9a3SSatish Balay #define petscoptionshasname_               PETSCOPTIONSHASNAME
169306f9a3SSatish Balay #define petscoptionsgetint_                PETSCOPTIONSGETINT
179306f9a3SSatish Balay #define petscoptionsgetreal_               PETSCOPTIONSGETREAL
189306f9a3SSatish Balay #define petscoptionsgetrealarray_          PETSCOPTIONSGETREALARRAY
199306f9a3SSatish Balay #define petscoptionsgetstring_             PETSCOPTIONSGETSTRING
209306f9a3SSatish Balay #define petscgetprogramname                PETSCGETPROGRAMNAME
219306f9a3SSatish Balay #define petscoptionsinsertfile_            PETSCOPTIONSINSERTFILE
229306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
239306f9a3SSatish Balay #define petscoptionsgettruth_            petscoptionsgettruth
249306f9a3SSatish Balay #define petscoptionssetvalue_              petscoptionssetvalue
259306f9a3SSatish Balay #define petscoptionsclearvalue_            petscoptionsclearvalue
269306f9a3SSatish Balay #define petscoptionshasname_               petscoptionshasname
279306f9a3SSatish Balay #define petscoptionsgetint_                petscoptionsgetint
289306f9a3SSatish Balay #define petscoptionsgetreal_               petscoptionsgetreal
299306f9a3SSatish Balay #define petscoptionsgetrealarray_          petscoptionsgetrealarray
309306f9a3SSatish Balay #define petscoptionsgetstring_             petscoptionsgetstring
319306f9a3SSatish Balay #define petscoptionsgetintarray_           petscoptionsgetintarray
329306f9a3SSatish Balay #define petscgetprogramname_               petscgetprogramname
339306f9a3SSatish Balay #define petscoptionsinsertfile_            petscoptionsinsertfile
349306f9a3SSatish Balay #endif
359306f9a3SSatish Balay 
369306f9a3SSatish Balay EXTERN_C_BEGIN
379306f9a3SSatish Balay 
389306f9a3SSatish Balay /* ---------------------------------------------------------------------*/
399306f9a3SSatish Balay 
409306f9a3SSatish Balay void PETSC_STDCALL petscoptionsinsertfile_(CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
419306f9a3SSatish Balay {
429306f9a3SSatish Balay   char *c1;
439306f9a3SSatish Balay 
449306f9a3SSatish Balay   FIXCHAR(file,len,c1);
459306f9a3SSatish Balay   *ierr = PetscOptionsInsertFile(c1);
469306f9a3SSatish Balay   FREECHAR(file,c1);
479306f9a3SSatish Balay }
489306f9a3SSatish Balay 
499306f9a3SSatish Balay void PETSC_STDCALL petscoptionssetvalue_(CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2),
509306f9a3SSatish Balay                    PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
519306f9a3SSatish Balay {
529306f9a3SSatish Balay   char *c1,*c2;
539306f9a3SSatish Balay 
549306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
559306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
569306f9a3SSatish Balay   *ierr = PetscOptionsSetValue(c1,c2);
579306f9a3SSatish Balay   FREECHAR(name,c1);
589306f9a3SSatish Balay   FREECHAR(value,c2);
599306f9a3SSatish Balay }
609306f9a3SSatish Balay 
619306f9a3SSatish Balay void PETSC_STDCALL petscoptionsclearvalue_(CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
629306f9a3SSatish Balay {
639306f9a3SSatish Balay   char *c1;
649306f9a3SSatish Balay 
659306f9a3SSatish Balay   FIXCHAR(name,len,c1);
669306f9a3SSatish Balay   *ierr = PetscOptionsClearValue(c1);
679306f9a3SSatish Balay   FREECHAR(name,c1);
689306f9a3SSatish Balay }
699306f9a3SSatish Balay 
709306f9a3SSatish Balay void PETSC_STDCALL petscoptionshasname_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
719306f9a3SSatish Balay                     PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
729306f9a3SSatish Balay {
739306f9a3SSatish Balay   char *c1,*c2;
749306f9a3SSatish Balay 
759306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
769306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
779306f9a3SSatish Balay   *ierr = PetscOptionsHasName(c1,c2,flg);
789306f9a3SSatish Balay   FREECHAR(pre,c1);
799306f9a3SSatish Balay   FREECHAR(name,c2);
809306f9a3SSatish Balay }
819306f9a3SSatish Balay 
829306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetint_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
839306f9a3SSatish Balay                     PetscInt *ivalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
849306f9a3SSatish Balay {
859306f9a3SSatish Balay   char *c1,*c2;
867c363081SBarry Smith   PetscTruth flag;
879306f9a3SSatish Balay 
889306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
899306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
907c363081SBarry Smith   *ierr = PetscOptionsGetInt(c1,c2,ivalue,&flag);
917c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
929306f9a3SSatish Balay   FREECHAR(pre,c1);
939306f9a3SSatish Balay   FREECHAR(name,c2);
949306f9a3SSatish Balay }
959306f9a3SSatish Balay 
969306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgettruth_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
979306f9a3SSatish Balay                     PetscTruth *ivalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
989306f9a3SSatish Balay {
999306f9a3SSatish Balay   char *c1,*c2;
1007c363081SBarry Smith   PetscTruth flag;
1019306f9a3SSatish Balay 
1029306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1039306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1047c363081SBarry Smith   *ierr = PetscOptionsGetTruth(c1,c2,ivalue,&flag);
1057c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1069306f9a3SSatish Balay   FREECHAR(pre,c1);
1079306f9a3SSatish Balay   FREECHAR(name,c2);
1089306f9a3SSatish Balay }
1099306f9a3SSatish Balay 
1109306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetreal_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1119306f9a3SSatish Balay                     PetscReal *dvalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1129306f9a3SSatish Balay {
1139306f9a3SSatish Balay   char *c1,*c2;
1147c363081SBarry Smith   PetscTruth flag;
1159306f9a3SSatish Balay 
1169306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1179306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1187c363081SBarry Smith   *ierr = PetscOptionsGetReal(c1,c2,dvalue,&flag);
1197c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1209306f9a3SSatish Balay   FREECHAR(pre,c1);
1219306f9a3SSatish Balay   FREECHAR(name,c2);
1229306f9a3SSatish Balay }
1239306f9a3SSatish Balay 
1249306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetrealarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1259306f9a3SSatish Balay                 PetscReal *dvalue,PetscInt *nmax,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1269306f9a3SSatish Balay {
1279306f9a3SSatish Balay   char *c1,*c2;
1287c363081SBarry Smith   PetscTruth flag;
1299306f9a3SSatish Balay 
1309306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1319306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1327c363081SBarry Smith   *ierr = PetscOptionsGetRealArray(c1,c2,dvalue,nmax,&flag);
1337c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1349306f9a3SSatish Balay   FREECHAR(pre,c1);
1359306f9a3SSatish Balay   FREECHAR(name,c2);
1369306f9a3SSatish Balay }
1379306f9a3SSatish Balay 
1389306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetintarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1399306f9a3SSatish Balay                    PetscInt *dvalue,PetscInt *nmax,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1409306f9a3SSatish Balay {
1419306f9a3SSatish Balay   char *c1,*c2;
1427c363081SBarry Smith   PetscTruth flag;
1439306f9a3SSatish Balay 
1449306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1459306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1467c363081SBarry Smith   *ierr = PetscOptionsGetIntArray(c1,c2,dvalue,nmax,&flag);
1477c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1489306f9a3SSatish Balay   FREECHAR(pre,c1);
1499306f9a3SSatish Balay   FREECHAR(name,c2);
1509306f9a3SSatish Balay }
1519306f9a3SSatish Balay 
1529306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetstring_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1539306f9a3SSatish Balay                     CHAR string PETSC_MIXED_LEN(len),PetscTruth *flg,
1549306f9a3SSatish Balay                     PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len))
1559306f9a3SSatish Balay {
1569306f9a3SSatish Balay   char *c1,*c2,*c3;
1574610e317SSatish Balay   size_t len3;
1587c363081SBarry Smith   PetscTruth flag;
1599306f9a3SSatish Balay 
1609306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1619306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1629306f9a3SSatish Balay   c3   = string;
1639306f9a3SSatish Balay   len3 = len - 1;
1649306f9a3SSatish Balay 
1657c363081SBarry Smith   *ierr = PetscOptionsGetString(c1,c2,c3,len3,&flag);
1667c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1679306f9a3SSatish Balay   FREECHAR(pre,c1);
1689306f9a3SSatish Balay   FREECHAR(name,c2);
1697c363081SBarry Smith   FIXRETURNCHAR(flag,string,len);
1709306f9a3SSatish Balay }
1719306f9a3SSatish Balay 
1729306f9a3SSatish Balay void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in))
1739306f9a3SSatish Balay {
1749306f9a3SSatish Balay   char *tmp;
1754610e317SSatish Balay   size_t len;
1769306f9a3SSatish Balay   tmp = name;
1779306f9a3SSatish Balay   len = len_in - 1;
1789306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
1797c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
1809306f9a3SSatish Balay }
1819306f9a3SSatish Balay 
1829306f9a3SSatish Balay EXTERN_C_END
1839306f9a3SSatish Balay 
184