1 #include <petsc-private/fortranimpl.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 (PETSC_STDCALL *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 = 0; 15 16 (*(void (PETSC_STDCALL*)(PetscDraw*,void*,PetscErrorCode*))(((PetscObject)draw)->fortran_func_pointers[0]))(&draw,ctx,&ierr);CHKERRQ(ierr); 17 return 0; 18 } 19 20 PETSC_EXTERN void PETSC_STDCALL petscdrawzoom_(PetscDraw *draw,FCN f,void *ctx,PetscErrorCode *ierr) 21 { 22 PetscObjectAllocateFortranPointers(*draw,1); 23 ((PetscObject)*draw)->fortran_func_pointers[0] = (PetscVoidFunction)f; 24 25 *ierr = PetscDrawZoom(*draw,ourdrawzoom,ctx); 26 } 27 28