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