1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 29804daf3SBarry Smith #include <petscdraw.h> 35c6c1daeSBarry Smith 45c6c1daeSBarry Smith #if defined(PETSC_HAVE_FORTRAN_CAPS) 55c6c1daeSBarry Smith #define petscdrawzoom_ PETSCDRAWZOOM 65c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 75c6c1daeSBarry Smith #define petscdrawzoom_ petscdrawzoom 85c6c1daeSBarry Smith #endif 95c6c1daeSBarry Smith 1019caf8f3SSatish Balay typedef void (*FCN)(PetscDraw*,void*,PetscErrorCode*); /* force argument to next function to not be extern C*/ 115c6c1daeSBarry Smith 125c6c1daeSBarry Smith static PetscErrorCode ourdrawzoom(PetscDraw draw,void *ctx) 135c6c1daeSBarry Smith { 145c6c1daeSBarry Smith PetscErrorCode ierr = 0; 155c6c1daeSBarry Smith 16*2f613bf5SBarry Smith (*(void (*)(PetscDraw*,void*,PetscErrorCode*))(((PetscObject)draw)->fortran_func_pointers[0]))(&draw,ctx,&ierr); 17*2f613bf5SBarry Smith return ierr; 185c6c1daeSBarry Smith } 195c6c1daeSBarry Smith 2019caf8f3SSatish Balay PETSC_EXTERN void petscdrawzoom_(PetscDraw *draw,FCN f,void *ctx,PetscErrorCode *ierr) 215c6c1daeSBarry Smith { 225c6c1daeSBarry Smith PetscObjectAllocateFortranPointers(*draw,1); 235c6c1daeSBarry Smith ((PetscObject)*draw)->fortran_func_pointers[0] = (PetscVoidFunction)f; 24a297a907SKarl Rupp 255c6c1daeSBarry Smith *ierr = PetscDrawZoom(*draw,ourdrawzoom,ctx); 265c6c1daeSBarry Smith } 275c6c1daeSBarry Smith 28