1 /* $Id: viewer.h,v 1.60 1998/12/21 01:06:07 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_Private(char*,char*,char*,int(*)(Viewer)); 32 #if defined(USE_DYNAMIC_LIBRARIES) 33 #define ViewerRegister(a,b,c,d) ViewerRegister_Private(a,b,c,0) 34 #else 35 #define ViewerRegister(a,b,c,d) ViewerRegister_Private(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 48 extern int ViewerGetOutputname(Viewer,char**); 49 extern int ViewerGetType(Viewer,ViewerType*); 50 extern int ViewerSetType(Viewer,ViewerType); 51 extern int ViewerDestroy(Viewer); 52 53 #define VIEWER_FORMAT_ASCII_DEFAULT 0 54 #define VIEWER_FORMAT_ASCII_MATLAB 1 55 #define VIEWER_FORMAT_ASCII_IMPL 2 56 #define VIEWER_FORMAT_ASCII_INFO 3 57 #define VIEWER_FORMAT_ASCII_INFO_LONG 4 58 #define VIEWER_FORMAT_ASCII_COMMON 5 59 #define VIEWER_FORMAT_ASCII_SYMMODU 6 60 #define VIEWER_FORMAT_ASCII_INDEX 7 61 #define VIEWER_FORMAT_ASCII_DENSE 8 62 63 #define VIEWER_FORMAT_BINARY_DEFAULT 0 64 #define VIEWER_FORMAT_BINARY_NATIVE 1 65 66 #define VIEWER_FORMAT_DRAW_BASIC 0 67 #define VIEWER_FORMAT_DRAW_LG 1 68 #define VIEWER_FORMAT_DRAW_CONTOUR 2 69 70 extern int ViewerSetFormat(Viewer,int,char[]); 71 extern int ViewerPushFormat(Viewer,int,char[]); 72 extern int ViewerPopFormat(Viewer); 73 extern int ViewerGetFormat(Viewer,int*); 74 extern int ViewerFlush(Viewer); 75 76 /* 77 Operations explicit to a particular class of viewers 78 */ 79 extern int ViewerASCIIGetPointer(Viewer,FILE**); 80 extern int ViewerASCIIPrintf(Viewer,const char[],...); 81 extern int ViewerASCIIPushTab(Viewer); 82 extern int ViewerASCIIPopTab(Viewer); 83 extern int ViewerBinaryGetDescriptor(Viewer,int*); 84 extern int ViewerBinaryGetInfoPointer(Viewer,FILE **); 85 extern int ViewerStringSPrintf(Viewer,char *,...); 86 extern int ViewerDrawClear(Viewer); 87 88 /* 89 These are all the default viewers that do not have 90 to be explicitly opened 91 */ 92 extern Viewer VIEWER_STDOUT_SELF; 93 extern Viewer VIEWER_STDERR_SELF; 94 extern Viewer VIEWER_STDOUT_WORLD; 95 extern Viewer VIEWER_STDOUT_(MPI_Comm); 96 extern int VIEWER_STDOUT_Destroy(MPI_Comm); 97 extern Viewer VIEWER_STDERR_WORLD; 98 extern Viewer VIEWER_STDERR_(MPI_Comm); 99 extern int VIEWER_STDERR_Destroy(MPI_Comm); 100 extern Viewer VIEWER_DRAWX_WORLD_PRIVATE_0; 101 extern Viewer VIEWER_DRAWX_WORLD_PRIVATE_1; 102 extern Viewer VIEWER_DRAWX_WORLD_PRIVATE_2; 103 extern Viewer VIEWER_DRAWX_SELF_PRIVATE; 104 extern Viewer VIEWER_SOCKET_WORLD_PRIVATE; 105 extern Viewer VIEWER_SOCKET_SELF_PRIVATE; /* not yet used */ 106 107 extern int ViewerInitializeDrawXWorld_Private_0(void); 108 extern int ViewerInitializeDrawXWorld_Private_1(void); 109 extern int ViewerInitializeDrawXWorld_Private_2(void); 110 extern int ViewerInitializeDrawXSelf_Private(void); 111 extern int ViewerInitializeSocketWorld_Private(void); 112 extern Viewer VIEWER_DRAWX_(MPI_Comm); 113 extern int VIEWER_DRAWX_Destroy(MPI_Comm); 114 115 #define VIEWER_DRAWX_WORLD_0 \ 116 (ViewerInitializeDrawXWorld_Private_0(),VIEWER_DRAWX_WORLD_PRIVATE_0) 117 #define VIEWER_DRAWX_WORLD_1 \ 118 (ViewerInitializeDrawXWorld_Private_1(),VIEWER_DRAWX_WORLD_PRIVATE_1) 119 #define VIEWER_DRAWX_WORLD_2 \ 120 (ViewerInitializeDrawXWorld_Private_2(),VIEWER_DRAWX_WORLD_PRIVATE_2) 121 122 #define VIEWER_DRAWX_SELF \ 123 (ViewerInitializeDrawXSelf_Private(),VIEWER_DRAWX_SELF_PRIVATE) 124 #define VIEWER_DRAWX_WORLD VIEWER_DRAWX_WORLD_0 125 126 #define VIEWER_SOCKET_WORLD \ 127 (ViewerInitializeSocketWorld_Private(),VIEWER_SOCKET_WORLD_PRIVATE) 128 129 /* 130 Viewer based on the ALICE Memory Snooper 131 */ 132 #if defined(HAVE_AMS) 133 #include "ams.h" 134 extern int ViewerAMSGetAMSComm(Viewer,AMS_Comm *); 135 extern int ViewerAMSOpen(MPI_Comm,const char[],Viewer*); 136 extern Viewer VIEWER_AMS_(MPI_Comm); 137 extern int VIEWER_AMS_Destroy(MPI_Comm); 138 extern Viewer VIEWER_AMS_WORLD_PRIVATE; 139 extern int ViewerInitializeAMSWorld_Private(void); 140 #define VIEWER_AMS_WORLD (ViewerInitializeAMSWorld_Private(),VIEWER_AMS_WORLD_PRIVATE) 141 #endif 142 143 /* 144 Viewer utility routines used by PETSc that are not normally used 145 by users. 146 */ 147 extern int ViewerSocketPutScalar_Private(Viewer,int,int,Scalar*); 148 extern int ViewerSocketPutDouble_Private(Viewer,int,int,double*); 149 extern int ViewerSocketPutInt_Private(Viewer,int,int*); 150 extern int ViewerSocketPutSparse_Private(Viewer,int,int,int,Scalar*,int*,int *); 151 extern int ViewerInitializeASCII_Private(void); 152 extern int ViewerDestroyASCII_Private(void); 153 extern int ViewerDestroyDrawX_Private(void); 154 extern int ViewerDestroySocket_Private(void); 155 extern int ViewerDestroyAMS_Private(void); 156 157 #endif 158 159