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