1 #include <petsc/private/ftnimpl.h> 2 #include <petscdraw.h> 3 4 #if defined(PETSC_HAVE_FORTRAN_CAPS) 5 #define petscdrawzoom_ PETSCDRAWZOOM 6 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 7 #define petscdrawzoom_ petscdrawzoom 8 #endif 9 10 typedef void (*FCN)(PetscDraw *, void *, PetscErrorCode *); /* force argument to next function to not be extern C*/ 11 12 static PetscErrorCode ourdrawzoom(PetscDraw draw, void *ctx) 13 { 14 PetscErrorCode ierr = PETSC_SUCCESS; 15 16 (*(void (*)(PetscDraw *, void *, PetscErrorCode *))(((PetscObject)draw)->fortran_func_pointers[0]))(&draw, ctx, &ierr); 17 return ierr; 18 } 19 20 PETSC_EXTERN void petscdrawzoom_(PetscDraw *draw, FCN f, void *ctx, PetscErrorCode *ierr) 21 { 22 PetscObjectAllocateFortranPointers(*draw, 1); 23 ((PetscObject)*draw)->fortran_func_pointers[0] = (PetscFortranCallbackFn *)f; 24 25 *ierr = PetscDrawZoom(*draw, ourdrawzoom, ctx); 26 } 27