Actual source code: zluf.c

  1: #include <petsc/private/fortranimpl.h>
  2: #include <petscpc.h>

  4: #if defined(PETSC_HAVE_FORTRAN_CAPS)
  5:   #define pcfactorsetmatorderingtype_ PCFACTORSETMATORDERINGTYPE
  6:   #define pcfactorsetmatsolvertype_   PCFACTORSETMATSOLVERTYPE
  7:   #define pcfactorgetmatsolvertype_   PCFACTORGETMATSOLVERTYPE
  8: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
  9:   #define pcfactorsetmatorderingtype_ pcfactorsetmatorderingtype
 10:   #define pcfactorsetmatsolvertype_   pcfactorsetmatsolvertype
 11:   #define pcfactorgetmatsolvertype_   pcfactorgetmatsolvertype
 12: #endif

 14: PETSC_EXTERN void pcfactorsetmatorderingtype_(PC *pc, char *ordering, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 15: {
 16:   char *t;

 18:   FIXCHAR(ordering, len, t);
 19:   *ierr = PCFactorSetMatOrderingType(*pc, t);
 20:   if (*ierr) return;
 21:   FREECHAR(ordering, t);
 22: }
 23: PETSC_EXTERN void pcfactorsetmatsolvertype_(PC *pc, char *ordering, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 24: {
 25:   char *t;

 27:   FIXCHAR(ordering, len, t);
 28:   *ierr = PCFactorSetMatSolverType(*pc, t);
 29:   if (*ierr) return;
 30:   FREECHAR(ordering, t);
 31: }
 32: PETSC_EXTERN void pcfactorgetmatsolvertype_(PC *mat, char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 33: {
 34:   const char *tname;

 36:   *ierr = PCFactorGetMatSolverType(*mat, &tname);
 37:   if (*ierr) return;
 38:   if (name != PETSC_NULL_CHARACTER_Fortran) {
 39:     *ierr = PetscStrncpy(name, tname, len);
 40:     if (*ierr) return;
 41:   }
 42:   FIXRETURNCHAR(PETSC_TRUE, name, len);
 43: }