Actual source code: zmatproductf.c

  1: #include <petsc/private/fortranimpl.h>
  2: #include <petscmat.h>
  3: #include <petscviewer.h>

  5: #if defined(PETSC_HAVE_FORTRAN_CAPS)
  6:   #define matproductview_         MATPRODUCTVIEW
  7:   #define matproductsetalgorithm_ MATPRODUCTSETALGORITHM
  8:   #define matproductgetalgorithm_ MATPRODUCTGETALGORITHM
  9: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
 10:   #define matproductview_         matproductview
 11:   #define matproductsetalgorithm_ matproductsetalgorithm
 12:   #define matproductgetalgorithm_ matproductgetalgorithm
 13: #endif

 15: PETSC_EXTERN void matproductview_(Mat *mat, PetscViewer *viewer, PetscErrorCode *ierr)
 16: {
 17:   PetscViewer v;
 18:   PetscPatchDefaultViewers_Fortran(viewer, v);
 19:   *ierr = MatProductView(*mat, v);
 20: }

 22: PETSC_EXTERN void matproductsetalgorithm_(Mat *mat, char *algorithm, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 23: {
 24:   char *t;

 26:   FIXCHAR(algorithm, len, t);
 27:   *ierr = MatProductSetAlgorithm(*mat, t);
 28:   if (*ierr) return;
 29:   FREECHAR(algorithm, t);
 30: }

 32: PETSC_EXTERN void matproductgetalgorithm_(Mat *mat, char *algorithm, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 33: {
 34:   const char *talgo;

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