xref: /petsc/src/sys/classes/draw/utils/ftn-custom/zzoomf.c (revision a297a907cb186f3b4c52d96a498269186c73a6c7)
15c6c1daeSBarry Smith #include <petsc-private/fortranimpl.h>
25c6c1daeSBarry Smith 
35c6c1daeSBarry Smith #if defined(PETSC_HAVE_FORTRAN_CAPS)
45c6c1daeSBarry Smith #define petscdrawzoom_            PETSCDRAWZOOM
55c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
65c6c1daeSBarry Smith #define petscdrawzoom_            petscdrawzoom
75c6c1daeSBarry Smith #endif
85c6c1daeSBarry Smith 
95c6c1daeSBarry Smith typedef void (PETSC_STDCALL *FCN)(PetscDraw*,void*,PetscErrorCode*); /* force argument to next function to not be extern C*/
105c6c1daeSBarry Smith 
115c6c1daeSBarry Smith static PetscErrorCode ourdrawzoom(PetscDraw draw,void *ctx)
125c6c1daeSBarry Smith {
135c6c1daeSBarry Smith   PetscErrorCode ierr = 0;
145c6c1daeSBarry Smith 
155c6c1daeSBarry Smith   (*(void (PETSC_STDCALL*)(PetscDraw*,void*,PetscErrorCode*))(((PetscObject)draw)->fortran_func_pointers[0]))(&draw,ctx,&ierr);CHKERRQ(ierr);
165c6c1daeSBarry Smith   return 0;
175c6c1daeSBarry Smith }
185c6c1daeSBarry Smith 
195c6c1daeSBarry Smith EXTERN_C_BEGIN
205c6c1daeSBarry Smith 
215c6c1daeSBarry Smith void PETSC_STDCALL petscdrawzoom_(PetscDraw *draw,FCN f,void *ctx,PetscErrorCode *ierr)
225c6c1daeSBarry Smith {
235c6c1daeSBarry Smith   PetscObjectAllocateFortranPointers(*draw,1);
245c6c1daeSBarry Smith   ((PetscObject)*draw)->fortran_func_pointers[0] = (PetscVoidFunction)f;
25*a297a907SKarl Rupp 
265c6c1daeSBarry Smith   *ierr = PetscDrawZoom(*draw,ourdrawzoom,ctx);
275c6c1daeSBarry Smith }
285c6c1daeSBarry Smith 
295c6c1daeSBarry Smith EXTERN_C_END
30