1 /* $Id: viewer.h,v 1.73 2000/01/11 21:04:04 bsmith Exp bsmith $ */ 2 /* 3 Viewers are objects where other objects can be looked at or stored. 4 */ 5 6 #if !defined(__VIEWER_H) 7 #define __VIEWER_H 8 9 typedef struct _p_Viewer* Viewer; 10 11 /* 12 petsc.h must be included AFTER the definition of Viewer for ADIC to 13 process correctly. 14 */ 15 #include "petsc.h" 16 17 #define VIEWER_COOKIE PETSC_COOKIE+1 18 typedef char* ViewerType; 19 20 #define SOCKET_VIEWER "socket" 21 #define ASCII_VIEWER "ascii" 22 #define BINARY_VIEWER "binary" 23 #define STRING_VIEWER "string" 24 #define DRAW_VIEWER "draw" 25 #define AMS_VIEWER "ams" 26 27 extern FList ViewerList; 28 extern int ViewerRegisterAll(char *); 29 extern int ViewerRegisterDestroy(void); 30 31 extern int ViewerRegister(char*,char*,char*,int(*)(Viewer)); 32 #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 33 #define ViewerRegisterDynamic(a,b,c,d) ViewerRegister(a,b,c,0) 34 #else 35 #define ViewerRegisterDynamic(a,b,c,d) ViewerRegister(a,b,c,d) 36 #endif 37 extern int ViewerCreate(MPI_Comm,Viewer*); 38 extern int ViewerSetFromOptions(Viewer); 39 40 41 extern int ViewerASCIIOpen(MPI_Comm,const char[],Viewer*); 42 typedef enum {BINARY_RDONLY,BINARY_WRONLY,BINARY_CREATE} ViewerBinaryType; 43 extern int ViewerBinaryOpen(MPI_Comm,const char[],ViewerBinaryType,Viewer*); 44 extern int ViewerSocketOpen(MPI_Comm,const char[],int,Viewer*); 45 extern int ViewerStringOpen(MPI_Comm,char[],int,Viewer*); 46 extern int ViewerDrawOpen(MPI_Comm,const char[],const char[],int,int,int,int,Viewer*); 47 extern int ViewerAMSSetCommName(Viewer,const char[]); 48 49 extern int ViewerGetOutputname(Viewer,char**); 50 extern int ViewerGetType(Viewer,ViewerType*); 51 extern int ViewerSetType(Viewer,ViewerType); 52 extern int ViewerDestroy(Viewer); 53 extern int ViewerGetSingleton(Viewer,Viewer*); 54 extern int ViewerRestoreSingleton(Viewer,Viewer*); 55 56 #define VIEWER_FORMAT_ASCII_DEFAULT 0 57 #define VIEWER_FORMAT_ASCII_MATLAB 1 58 #define VIEWER_FORMAT_ASCII_IMPL 2 59 #define VIEWER_FORMAT_ASCII_INFO 3 60 #define VIEWER_FORMAT_ASCII_INFO_LONG 4 61 #define VIEWER_FORMAT_ASCII_COMMON 5 62 #define VIEWER_FORMAT_ASCII_SYMMODU 6 63 #define VIEWER_FORMAT_ASCII_INDEX 7 64 #define VIEWER_FORMAT_ASCII_DENSE 8 65 66 #define VIEWER_FORMAT_BINARY_DEFAULT 9 67 #define VIEWER_FORMAT_BINARY_NATIVE 10 68 69 #define VIEWER_FORMAT_DRAW_BASIC 11 70 #define VIEWER_FORMAT_DRAW_LG 12 71 #define VIEWER_FORMAT_DRAW_CONTOUR 13 72 #define VIEWER_FORMAT_DRAW_PORTS 15 73 74 #define VIEWER_FORMAT_NATIVE 14 75 76 extern int ViewerSetFormat(Viewer,int,char[]); 77 extern int ViewerPushFormat(Viewer,int,char[]); 78 extern int ViewerPopFormat(Viewer); 79 extern int ViewerGetFormat(Viewer,int*); 80 extern int ViewerFlush(Viewer); 81 82 /* 83 Operations explicit to a particular class of viewers 84 */ 85 extern int ViewerASCIIGetPointer(Viewer,FILE**); 86 extern int ViewerASCIIPrintf(Viewer,const char[],...); 87 extern int ViewerASCIISynchronizedPrintf(Viewer,const char[],...); 88 extern int ViewerASCIIPushTab(Viewer); 89 extern int ViewerASCIIPopTab(Viewer); 90 extern int ViewerASCIIUseTabs(Viewer,PetscTruth); 91 extern int ViewerBinaryGetDescriptor(Viewer,int*); 92 extern int ViewerBinaryGetInfoPointer(Viewer,FILE **); 93 extern int ViewerBinarySetType(Viewer,ViewerBinaryType); 94 extern int ViewerStringSPrintf(Viewer,char *,...); 95 extern int ViewerStringSetString(Viewer,char[],int); 96 extern int ViewerDrawClear(Viewer); 97 extern int ViewerDrawSetInfo(Viewer,const char[],const char[],int,int,int,int); 98 extern int ViewerSocketSetConnection(Viewer,const char[],int); 99 100 extern int ViewerSetFilename(Viewer,const char[]); 101 extern int ViewerGetFilename(Viewer,char**); 102 103 /* 104 These are all the default viewers that do not have 105 to be explicitly opened 106 */ 107 extern Viewer VIEWER_STDOUT_(MPI_Comm); 108 extern int VIEWER_STDOUT_Destroy(MPI_Comm); 109 extern Viewer VIEWER_STDERR_(MPI_Comm); 110 extern int VIEWER_STDERR_Destroy(MPI_Comm); 111 extern Viewer VIEWER_DRAW_(MPI_Comm); 112 extern int VIEWER_DRAW_Destroy(MPI_Comm); 113 extern Viewer VIEWER_SOCKET_(MPI_Comm); 114 extern int VIEWER_SOCKET_Destroy(MPI_Comm); 115 116 #define VIEWER_STDOUT_SELF VIEWER_STDOUT_(PETSC_COMM_SELF) 117 #define VIEWER_STDOUT_WORLD VIEWER_STDOUT_(PETSC_COMM_WORLD) 118 #define VIEWER_STDERR_SELF VIEWER_STDERR_(PETSC_COMM_SELF) 119 #define VIEWER_STDERR_WORLD VIEWER_STDERR_(PETSC_COMM_WORLD) 120 121 #define VIEWER_DRAW_SELF VIEWER_DRAW_(PETSC_COMM_SELF) 122 #define VIEWER_DRAW_WORLD VIEWER_DRAW_(PETSC_COMM_WORLD) 123 #define VIEWER_SOCKET_WORLD VIEWER_SOCKET_(PETSC_COMM_WORLD) 124 #define VIEWER_SOCKET_SELF VIEWER_SOCKET_(PETSC_COMM_SELF) 125 /* 126 Viewer based on the ALICE Memory Snooper 127 */ 128 #if defined(PETSC_HAVE_AMS) 129 #include "ams.h" 130 extern int ViewerAMSGetAMSComm(Viewer,AMS_Comm *); 131 extern int ViewerAMSOpen(MPI_Comm,const char[],Viewer*); 132 extern Viewer VIEWER_AMS_(MPI_Comm); 133 extern int VIEWER_AMS_Destroy(MPI_Comm); 134 #define VIEWER_AMS_WORLD VIEWER_AMS_(PETSC_COMM_WORLD) 135 #endif 136 137 /* 138 Viewer utility routines used by PETSc that are not normally used 139 by users. 140 */ 141 extern int ViewerSocketPutScalar_Private(Viewer,int,int,Scalar*); 142 extern int ViewerSocketPutReal_Private(Viewer,int,int,double*); 143 extern int ViewerSocketPutInt_Private(Viewer,int,int*); 144 extern int ViewerSocketPutSparse_Private(Viewer,int,int,int,Scalar*,int*,int *); 145 146 extern int ViewerDestroyAMS_Private(void); 147 148 /* 149 Manages sets of viewers 150 */ 151 typedef struct _p_Viewers* Viewers; 152 extern int ViewersCreate(MPI_Comm,Viewers*); 153 extern int ViewersDestroy(Viewers); 154 extern int ViewersGetViewer(Viewers,int,Viewer*); 155 156 #endif 157 158 159 160 161