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