16dd63270SBarry Smith #include <petsc/private/ftnimpl.h> 2ea5d4fccSPeter Brune #include <petscsnes.h> 3ea5d4fccSPeter Brune 4ea5d4fccSPeter Brune #if defined(PETSC_HAVE_FORTRAN_CAPS) 59bcc50f1SBarry Smith #define sneslinesearchshellsetapply_ SNESLINESEARCHSHELLSETAPPLY 69bcc50f1SBarry Smith #define sneslinesearchshellgetapply_ SNESLINESEARCHSHELLGETAPPLY 7ea5d4fccSPeter Brune #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 89bcc50f1SBarry Smith #define sneslinesearchshellsetapply_ sneslinesearchshellsetapply 99bcc50f1SBarry Smith #define sneslinesearchshellgetapply_ sneslinesearchshellgetapply 10ea5d4fccSPeter Brune #endif 11ea5d4fccSPeter Brune 12f1c6b773SPeter Brune static PetscErrorCode oursneslinesearchshellfunction(SNESLineSearch linesearch, void *ctx) 13ea5d4fccSPeter Brune { 145f80ce2aSJacob Faibussowitsch PetscFunctionBegin; 159566063dSJacob Faibussowitsch PetscCallFortranVoidFunction((*(void (*)(SNESLineSearch *, void *, PetscErrorCode *))(((PetscObject)linesearch)->fortran_func_pointers[0]))(&linesearch, ctx, &ierr)); 163ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 17ea5d4fccSPeter Brune } 18ea5d4fccSPeter Brune 199bcc50f1SBarry Smith PETSC_EXTERN void sneslinesearchshellsetapply_(SNESLineSearch *linesearch, void (*func)(SNESLineSearch *, void *, PetscErrorCode *), void *ctx, PetscErrorCode *ierr) 20ea5d4fccSPeter Brune { 21c87759e9SPeter Brune PetscObjectAllocateFortranPointers(*linesearch, 3); 22*5ebfa9e9SBarry Smith ((PetscObject)*linesearch)->fortran_func_pointers[0] = (PetscFortranCallbackFn *)func; 23f5af7f23SKarl Rupp 249bcc50f1SBarry Smith *ierr = SNESLineSearchShellSetApply(*linesearch, oursneslinesearchshellfunction, ctx); 25ea5d4fccSPeter Brune } 26ea5d4fccSPeter Brune 279bcc50f1SBarry Smith PETSC_EXTERN void sneslinesearchshellgetapply_(SNESLineSearch *linesearch, void *func, void **ctx, PetscErrorCode *ierr) 28ea5d4fccSPeter Brune { 29ea5d4fccSPeter Brune CHKFORTRANNULLINTEGER(ctx); 309bcc50f1SBarry Smith *ierr = SNESLineSearchShellGetApply(*linesearch, NULL, ctx); 31ea5d4fccSPeter Brune } 32