xref: /petsc/src/sys/classes/draw/utils/ftn-custom/zzoomf.c (revision 2f613bf53f46f9356e00a2ca2bd69453be72fc31)
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