1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 2ea5d4fccSPeter Brune #include <petscsnes.h> 3ea5d4fccSPeter Brune 4ea5d4fccSPeter Brune #if defined(PETSC_HAVE_FORTRAN_CAPS) 5*9bcc50f1SBarry Smith #define sneslinesearchshellsetapply_ SNESLINESEARCHSHELLSETAPPLY 6*9bcc50f1SBarry Smith #define sneslinesearchshellgetapply_ SNESLINESEARCHSHELLGETAPPLY 7ea5d4fccSPeter Brune #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 8*9bcc50f1SBarry Smith #define sneslinesearchshellsetapply_ sneslinesearchshellsetapply 9*9bcc50f1SBarry 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 19*9bcc50f1SBarry Smith PETSC_EXTERN void sneslinesearchshellsetapply_(SNESLineSearch *linesearch, void (*func)(SNESLineSearch *, void *, PetscErrorCode *), void *ctx, PetscErrorCode *ierr) 20ea5d4fccSPeter Brune { 21c87759e9SPeter Brune PetscObjectAllocateFortranPointers(*linesearch, 3); 22ea5d4fccSPeter Brune ((PetscObject)*linesearch)->fortran_func_pointers[0] = (PetscVoidFunction)func; 23f5af7f23SKarl Rupp 24*9bcc50f1SBarry Smith *ierr = SNESLineSearchShellSetApply(*linesearch, oursneslinesearchshellfunction, ctx); 25ea5d4fccSPeter Brune } 26ea5d4fccSPeter Brune 27*9bcc50f1SBarry Smith PETSC_EXTERN void sneslinesearchshellgetapply_(SNESLineSearch *linesearch, void *func, void **ctx, PetscErrorCode *ierr) 28ea5d4fccSPeter Brune { 29ea5d4fccSPeter Brune CHKFORTRANNULLINTEGER(ctx); 30*9bcc50f1SBarry Smith *ierr = SNESLineSearchShellGetApply(*linesearch, NULL, ctx); 31ea5d4fccSPeter Brune } 32