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 PETSC_STDCALL petscobjectcompose_(PetscObject *obj, char *name PETSC_MIXED_LEN(len), PetscObject *ptr, PetscErrorCode *ierr PETSC_END_LEN(len)) 26 { 27 char *n1; 28 29 FIXCHAR(name,len,n1); 30 CHKFORTRANNULLOBJECTDEREFERENCE(ptr); 31 *ierr = PetscObjectCompose(*obj, n1, *ptr); 32 FREECHAR(name,n1); 33 } 34 35 PETSC_EXTERN void PETSC_STDCALL petscobjectquery_(PetscObject *obj, char *name PETSC_MIXED_LEN(len), PetscObject *ptr, PetscErrorCode *ierr PETSC_END_LEN(len)) 36 { 37 char *n1; 38 39 FIXCHAR(name,len,n1); 40 *ierr = PetscObjectQuery(*obj, n1, ptr); 41 FREECHAR(name,n1); 42 } 43 44 PETSC_EXTERN void petscobjectreference_(PetscObject *obj,PetscErrorCode *ierr) 45 { 46 *ierr = PetscObjectReference(*obj); 47 } 48 49 PETSC_EXTERN void petscobjectdereference_(PetscObject *obj,PetscErrorCode *ierr) 50 { 51 *ierr = PetscObjectDereference(*obj); 52 } 53 54 PETSC_EXTERN void petscobjectgetreference_(PetscObject *obj,PetscInt *ref,PetscErrorCode *ierr) 55 { 56 *ierr = PetscObjectGetReference(*obj,ref); 57 } 58