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 EXTERN_C_BEGIN 21 22 void PETSC_STDCALL petscdrawzoom_(PetscDraw *draw,FCN f,void *ctx,PetscErrorCode *ierr) 23 { 24 PetscObjectAllocateFortranPointers(*draw,1); 25 ((PetscObject)*draw)->fortran_func_pointers[0] = (PetscVoidFunction)f; 26 27 *ierr = PetscDrawZoom(*draw,ourdrawzoom,ctx); 28 } 29 30 EXTERN_C_END 31