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 #if defined(PETSC_HAVE_FORTRAN_CAPS) 10 #define petscobjectcompose_ PETSCOBJECTCOMPOSE 11 #define petscobjectquery_ PETSCOBJECTQUERY 12 #define petscobjectreference_ PETSCOBJECTREFERENCE 13 #define petscobjectdereference_ PETSCOBJECTDEREFERENCE 14 #define petscobjectgetreference_ PETSCOBJECTGETREFERENCE 15 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 16 #define petscobjectcompose_ petscobjectcompose 17 #define petscobjectquery_ petscobjectquery 18 #define petscobjectreference_ petscobjectreference 19 #define petscobjectdereference_ petscobjectdereference 20 #define petscobjectgetreference_ petscobjectgetreference 21 #endif 22 23 /* ---------------------------------------------------------------------*/ 24 25 PETSC_EXTERN void petscobjectcompose_(PetscObject *obj, char *name, PetscObject *ptr, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 26 { 27 char *n1; 28 29 FIXCHAR(name, len, n1); 30 *ierr = PetscObjectCompose(*obj, n1, *ptr); 31 if (*ierr) return; 32 FREECHAR(name, n1); 33 } 34 35 PETSC_EXTERN void petscobjectquery_(PetscObject *obj, char *name, PetscObject *ptr, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 36 { 37 char *n1; 38 39 FIXCHAR(name, len, n1); 40 *ierr = PetscObjectQuery(*obj, n1, ptr); 41 if (*ierr) return; 42 FREECHAR(name, n1); 43 } 44 45 PETSC_EXTERN void petscobjectreference_(PetscObject *obj, PetscErrorCode *ierr) 46 { 47 *ierr = PetscObjectReference(*obj); 48 } 49 50 PETSC_EXTERN void petscobjectdereference_(PetscObject *obj, PetscErrorCode *ierr) 51 { 52 *ierr = PetscObjectDereference(*obj); 53 } 54 55 PETSC_EXTERN void petscobjectgetreference_(PetscObject *obj, PetscInt *ref, PetscErrorCode *ierr) 56 { 57 *ierr = PetscObjectGetReference(*obj, ref); 58 } 59