1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 2ea5d4fccSPeter Brune #include <petscsnes.h> 3ea5d4fccSPeter Brune 4ea5d4fccSPeter Brune #if defined(PETSC_HAVE_FORTRAN_CAPS) 5f1c6b773SPeter Brune #define sneslinesearchshellsetuserfunc_ SNESLINESEARCHSHELLSETUSERFUNC 6f1c6b773SPeter Brune #define sneslinesearchshellgetuserfunc_ SNESLINESEARCHSHELLGETUSERFUNC 7ea5d4fccSPeter Brune #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 8f1c6b773SPeter Brune #define sneslinesearchshellsetuserfunc_ sneslinesearchshellsetuserfunc 9f1c6b773SPeter Brune #define sneslinesearchshellgetuserfunc_ sneslinesearchshellgetuserfunc 10ea5d4fccSPeter Brune #endif 11ea5d4fccSPeter Brune 12f1c6b773SPeter Brune static PetscErrorCode oursneslinesearchshellfunction(SNESLineSearch linesearch, void *ctx) 13ea5d4fccSPeter Brune { 14*5f80ce2aSJacob Faibussowitsch PetscFunctionBegin; 15*5f80ce2aSJacob Faibussowitsch CHKERR_FORTRAN_VOID_FUNCTION((*(void (*)(SNESLineSearch*,void*,PetscErrorCode*))(((PetscObject)linesearch)->fortran_func_pointers[0]))(&linesearch,ctx,&ierr)); 16*5f80ce2aSJacob Faibussowitsch PetscFunctionReturn(0); 17ea5d4fccSPeter Brune } 18ea5d4fccSPeter Brune 1919caf8f3SSatish Balay PETSC_EXTERN void sneslinesearchshellsetuserfunc_(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 24f1c6b773SPeter Brune *ierr = SNESLineSearchShellSetUserFunc(*linesearch,oursneslinesearchshellfunction,ctx); 25ea5d4fccSPeter Brune } 26ea5d4fccSPeter Brune 2719caf8f3SSatish Balay PETSC_EXTERN void sneslinesearchshellgetuserfunc_(SNESLineSearch *linesearch, void * func, void **ctx,PetscErrorCode *ierr) 28ea5d4fccSPeter Brune { 29ea5d4fccSPeter Brune 30ea5d4fccSPeter Brune CHKFORTRANNULLINTEGER(ctx); 310298fd71SBarry Smith *ierr = SNESLineSearchShellGetUserFunc(*linesearch,NULL,ctx); 32ea5d4fccSPeter Brune } 33