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