1*6dd63270SBarry Smith #include <petsc/private/ftnimpl.h>
2ae4341f3SSatish Balay
3519f805aSKarl Rupp #if defined(PETSC_HAVE_FORTRAN_CAPS)
4ae4341f3SSatish Balay #define chkmemfortran_ CHKMEMFORTRAN
5ae4341f3SSatish Balay #define petscoffsetfortran_ PETSCOFFSETFORTRAN
645d5e9f8SBarry Smith #define petscobjectstateincrease_ PETSCOBJECTSTATEINCREASE
70764c050SBarry Smith #define petsccienabledportableerroroutput_ PETSCCIENABLEDPORTABLEERROROUTPUT
8ae4341f3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
9ae4341f3SSatish Balay #define chkmemfortran_ chkmemfortran
108a6b6cadSSatish Balay #define petscoffsetfortran_ petscoffsetfortran
1145d5e9f8SBarry Smith #define petscobjectstateincrease_ petscobjectstateincrease
120764c050SBarry Smith #define petsccienabledportableerroroutput_ petsccienabledportableerroroutput
13ae4341f3SSatish Balay #endif
14ae4341f3SSatish Balay
petsccienabledportableerroroutput_(PetscMPIInt * cienabled)150764c050SBarry Smith PETSC_EXTERN void petsccienabledportableerroroutput_(PetscMPIInt *cienabled)
160764c050SBarry Smith {
170764c050SBarry Smith *cienabled = PetscCIEnabledPortableErrorOutput ? 1 : 0;
180764c050SBarry Smith }
190764c050SBarry Smith
petscobjectstateincrease_(PetscObject * obj,PetscErrorCode * ierr)2019caf8f3SSatish Balay PETSC_EXTERN void petscobjectstateincrease_(PetscObject *obj, PetscErrorCode *ierr)
2145d5e9f8SBarry Smith {
2245d5e9f8SBarry Smith *ierr = PetscObjectStateIncrease(*obj);
2345d5e9f8SBarry Smith }
2445d5e9f8SBarry Smith
petscoffsetfortran_(PetscScalar * x,PetscScalar * y,size_t * shift,PetscErrorCode * ierr)2519caf8f3SSatish Balay PETSC_EXTERN void petscoffsetfortran_(PetscScalar *x, PetscScalar *y, size_t *shift, PetscErrorCode *ierr)
26ae4341f3SSatish Balay {
273ba16761SJacob Faibussowitsch *ierr = PETSC_SUCCESS;
28ae4341f3SSatish Balay *shift = y - x;
29ae4341f3SSatish Balay }
30ae4341f3SSatish Balay
31ae4341f3SSatish Balay /*
32ae4341f3SSatish Balay This version does not do a malloc
33ae4341f3SSatish Balay */
34ae4341f3SSatish Balay static char FIXCHARSTRING[1024];
35ae4341f3SSatish Balay
36ae4341f3SSatish Balay #define FIXCHARNOMALLOC(a, n, b) \
37a8f51744SPierre Jolivet do { \
38ae4341f3SSatish Balay if (a == PETSC_NULL_CHARACTER_Fortran) { \
39dfef5ea7SSatish Balay b = a = NULL; \
40ae4341f3SSatish Balay } else { \
41ae4341f3SSatish Balay while ((n > 0) && (a[n - 1] == ' ')) n--; \
42ae4341f3SSatish Balay if (a[n] != 0) { \
43ae4341f3SSatish Balay b = FIXCHARSTRING; \
4489d949e2SBarry Smith *ierr = PetscStrncpy(b, a, n + 1); \
45ae4341f3SSatish Balay if (*ierr) return; \
46ae4341f3SSatish Balay } else b = a; \
47ae4341f3SSatish Balay } \
48a8f51744SPierre Jolivet } while (0)
49ae4341f3SSatish Balay
chkmemfortran_(int * line,char * file,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T len)5019caf8f3SSatish Balay PETSC_EXTERN void chkmemfortran_(int *line, char *file, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
51ae4341f3SSatish Balay {
52ae4341f3SSatish Balay char *c1;
53ae4341f3SSatish Balay
54ae4341f3SSatish Balay FIXCHARNOMALLOC(file, len, c1);
55efca3c55SSatish Balay *ierr = PetscMallocValidate(*line, "Userfunction", c1);
56ae4341f3SSatish Balay }
57