xref: /petsc/src/sys/memory/ftn-custom/zmtrf.c (revision 92f119d60f7d2a2cf41595d5d0552580c733cbde)
1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h>
2c6db04a5SJed Brown #include <petscsys.h>
3665c2dedSJed Brown #include <petscviewer.h>
455fcb7f5SSatish Balay 
555fcb7f5SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS)
655fcb7f5SSatish Balay #define petscmallocdump_               PETSCMALLOCDUMP
7*92f119d6SBarry Smith #define petscmallocview_               PETSCMALLOCVIEW
855fcb7f5SSatish Balay #define petscmallocvalidate_           PETSCMALLOCVALIDATE
90841954dSBarry Smith #define petscmemoryview_               PETSCMEMORYVIEW
1055fcb7f5SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
1155fcb7f5SSatish Balay #define petscmallocdump_               petscmallocdump
12*92f119d6SBarry Smith #define petscmallocview_               petscmallocview
1355fcb7f5SSatish Balay #define petscmallocvalidate_           petscmallocvalidate
140841954dSBarry Smith #define petscmemoryview_               petscmemoryview
1555fcb7f5SSatish Balay #endif
1655fcb7f5SSatish Balay 
1736366135SMatthew G Knepley static PetscErrorCode PetscFixSlashN(const char *in, char **out)
1836366135SMatthew G Knepley {
1936366135SMatthew G Knepley   PetscErrorCode ierr;
2036366135SMatthew G Knepley   PetscInt       i;
2136366135SMatthew G Knepley   size_t         len;
2236366135SMatthew G Knepley 
2336366135SMatthew G Knepley   PetscFunctionBegin;
2436366135SMatthew G Knepley   ierr = PetscStrallocpy(in,out);CHKERRQ(ierr);
2536366135SMatthew G Knepley   ierr = PetscStrlen(*out,&len);CHKERRQ(ierr);
2636366135SMatthew G Knepley   for (i=0; i<(int)len-1; i++) {
2736366135SMatthew G Knepley     if ((*out)[i] == '\\' && (*out)[i+1] == 'n') {(*out)[i] = ' '; (*out)[i+1] = '\n';}
2836366135SMatthew G Knepley   }
2936366135SMatthew G Knepley   PetscFunctionReturn(0);
3036366135SMatthew G Knepley }
3136366135SMatthew G Knepley 
328cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscmallocdump_(PetscErrorCode *ierr)
3355fcb7f5SSatish Balay {
3455fcb7f5SSatish Balay   *ierr = PetscMallocDump(stdout);
3555fcb7f5SSatish Balay }
36*92f119d6SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscmallocview_(PetscErrorCode *ierr)
3755fcb7f5SSatish Balay {
38*92f119d6SBarry Smith   *ierr = PetscMallocView(stdout);
3955fcb7f5SSatish Balay }
4055fcb7f5SSatish Balay 
418cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscmallocvalidate_(PetscErrorCode *ierr)
4255fcb7f5SSatish Balay {
43efca3c55SSatish Balay   *ierr = PetscMallocValidate(0,"Unknown Fortran",0);
4455fcb7f5SSatish Balay }
4555fcb7f5SSatish Balay 
46390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscmemoryview_(PetscViewer *vin, char* message PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
47fe7fb379SMatthew Knepley {
48fe7fb379SMatthew Knepley   PetscViewer v;
4936366135SMatthew G Knepley   char        *msg, *tmp;
50fe7fb379SMatthew Knepley 
51fe7fb379SMatthew Knepley   FIXCHAR(message,len,msg);
5236366135SMatthew G Knepley   *ierr = PetscFixSlashN(msg,&tmp);if (*ierr) return;
53fe7fb379SMatthew Knepley   FREECHAR(message,msg);
548bceffaeSBarry Smith   PetscPatchDefaultViewers_Fortran(vin,v);
550841954dSBarry Smith   *ierr = PetscMemoryView(v,tmp);if (*ierr) return;
568bceffaeSBarry Smith   *ierr = PetscFree(tmp);
57fe7fb379SMatthew Knepley }
58fe7fb379SMatthew Knepley 
59