xref: /petsc/src/sys/classes/draw/utils/ftn-custom/zzoomf.c (revision 4e8208cbcbc709572b8abe32f33c78b69c819375)
16dd63270SBarry Smith #include <petsc/private/ftnimpl.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 
ourdrawzoom(PetscDraw draw,PetscCtx ctx)12*2a8381b2SBarry Smith static PetscErrorCode ourdrawzoom(PetscDraw draw, PetscCtx ctx)
135c6c1daeSBarry Smith {
143ba16761SJacob Faibussowitsch   PetscErrorCode ierr = PETSC_SUCCESS;
155c6c1daeSBarry Smith 
162f613bf5SBarry Smith   (*(void (*)(PetscDraw *, void *, PetscErrorCode *))(((PetscObject)draw)->fortran_func_pointers[0]))(&draw, ctx, &ierr);
172f613bf5SBarry Smith   return ierr;
185c6c1daeSBarry Smith }
195c6c1daeSBarry Smith 
petscdrawzoom_(PetscDraw * draw,FCN f,PetscCtx ctx,PetscErrorCode * ierr)20*2a8381b2SBarry Smith PETSC_EXTERN void petscdrawzoom_(PetscDraw *draw, FCN f, PetscCtx ctx, PetscErrorCode *ierr)
215c6c1daeSBarry Smith {
225c6c1daeSBarry Smith   PetscObjectAllocateFortranPointers(*draw, 1);
235ebfa9e9SBarry Smith   ((PetscObject)*draw)->fortran_func_pointers[0] = (PetscFortranCallbackFn *)f;
24a297a907SKarl Rupp 
255c6c1daeSBarry Smith   *ierr = PetscDrawZoom(*draw, ourdrawzoom, ctx);
265c6c1daeSBarry Smith }
27