/* $Id: viewer.h,v 1.60 1998/12/21 01:06:07 bsmith Exp bsmith $ */ /* Viewers are objects where other objects can be looked at or stored. */ #if !defined(__VIEWER_H) #define __VIEWER_H typedef struct _p_Viewer* Viewer; /* petsc.h must be included AFTER the definition of Viewer for ADIC to process correctly. */ #include "petsc.h" #define VIEWER_COOKIE PETSC_COOKIE+1 typedef char* ViewerType; #define SOCKET_VIEWER "socket" #define ASCII_VIEWER "ascii" #define BINARY_VIEWER "binary" #define STRING_VIEWER "string" #define DRAW_VIEWER "draw" #define AMS_VIEWER "ams" extern FList ViewerList; extern int ViewerRegisterAll(char *); extern int ViewerRegisterDestroy(void); extern int ViewerRegister_Private(char*,char*,char*,int(*)(Viewer)); #if defined(USE_DYNAMIC_LIBRARIES) #define ViewerRegister(a,b,c,d) ViewerRegister_Private(a,b,c,0) #else #define ViewerRegister(a,b,c,d) ViewerRegister_Private(a,b,c,d) #endif extern int ViewerCreate(MPI_Comm,Viewer*); extern int ViewerSetFromOptions(Viewer); extern int ViewerASCIIOpen(MPI_Comm,const char[],Viewer*); typedef enum {BINARY_RDONLY, BINARY_WRONLY, BINARY_CREATE} ViewerBinaryType; extern int ViewerBinaryOpen(MPI_Comm,const char[],ViewerBinaryType,Viewer*); extern int ViewerSocketOpen(MPI_Comm,const char[],int,Viewer*); extern int ViewerStringOpen(MPI_Comm,char[],int, Viewer*); extern int ViewerDrawOpen(MPI_Comm,const char[],const char[],int,int,int,int,Viewer*); extern int ViewerGetOutputname(Viewer,char**); extern int ViewerGetType(Viewer,ViewerType*); extern int ViewerSetType(Viewer,ViewerType); extern int ViewerDestroy(Viewer); #define VIEWER_FORMAT_ASCII_DEFAULT 0 #define VIEWER_FORMAT_ASCII_MATLAB 1 #define VIEWER_FORMAT_ASCII_IMPL 2 #define VIEWER_FORMAT_ASCII_INFO 3 #define VIEWER_FORMAT_ASCII_INFO_LONG 4 #define VIEWER_FORMAT_ASCII_COMMON 5 #define VIEWER_FORMAT_ASCII_SYMMODU 6 #define VIEWER_FORMAT_ASCII_INDEX 7 #define VIEWER_FORMAT_ASCII_DENSE 8 #define VIEWER_FORMAT_BINARY_DEFAULT 0 #define VIEWER_FORMAT_BINARY_NATIVE 1 #define VIEWER_FORMAT_DRAW_BASIC 0 #define VIEWER_FORMAT_DRAW_LG 1 #define VIEWER_FORMAT_DRAW_CONTOUR 2 extern int ViewerSetFormat(Viewer,int,char[]); extern int ViewerPushFormat(Viewer,int,char[]); extern int ViewerPopFormat(Viewer); extern int ViewerGetFormat(Viewer,int*); extern int ViewerFlush(Viewer); /* Operations explicit to a particular class of viewers */ extern int ViewerASCIIGetPointer(Viewer,FILE**); extern int ViewerASCIIPrintf(Viewer,const char[],...); extern int ViewerASCIIPushTab(Viewer); extern int ViewerASCIIPopTab(Viewer); extern int ViewerBinaryGetDescriptor(Viewer,int*); extern int ViewerBinaryGetInfoPointer(Viewer,FILE **); extern int ViewerStringSPrintf(Viewer,char *,...); extern int ViewerDrawClear(Viewer); /* These are all the default viewers that do not have to be explicitly opened */ extern Viewer VIEWER_STDOUT_SELF; extern Viewer VIEWER_STDERR_SELF; extern Viewer VIEWER_STDOUT_WORLD; extern Viewer VIEWER_STDOUT_(MPI_Comm); extern int VIEWER_STDOUT_Destroy(MPI_Comm); extern Viewer VIEWER_STDERR_WORLD; extern Viewer VIEWER_STDERR_(MPI_Comm); extern int VIEWER_STDERR_Destroy(MPI_Comm); extern Viewer VIEWER_DRAWX_WORLD_PRIVATE_0; extern Viewer VIEWER_DRAWX_WORLD_PRIVATE_1; extern Viewer VIEWER_DRAWX_WORLD_PRIVATE_2; extern Viewer VIEWER_DRAWX_SELF_PRIVATE; extern Viewer VIEWER_SOCKET_WORLD_PRIVATE; extern Viewer VIEWER_SOCKET_SELF_PRIVATE; /* not yet used */ extern int ViewerInitializeDrawXWorld_Private_0(void); extern int ViewerInitializeDrawXWorld_Private_1(void); extern int ViewerInitializeDrawXWorld_Private_2(void); extern int ViewerInitializeDrawXSelf_Private(void); extern int ViewerInitializeSocketWorld_Private(void); extern Viewer VIEWER_DRAWX_(MPI_Comm); extern int VIEWER_DRAWX_Destroy(MPI_Comm); #define VIEWER_DRAWX_WORLD_0 \ (ViewerInitializeDrawXWorld_Private_0(),VIEWER_DRAWX_WORLD_PRIVATE_0) #define VIEWER_DRAWX_WORLD_1 \ (ViewerInitializeDrawXWorld_Private_1(),VIEWER_DRAWX_WORLD_PRIVATE_1) #define VIEWER_DRAWX_WORLD_2 \ (ViewerInitializeDrawXWorld_Private_2(),VIEWER_DRAWX_WORLD_PRIVATE_2) #define VIEWER_DRAWX_SELF \ (ViewerInitializeDrawXSelf_Private(),VIEWER_DRAWX_SELF_PRIVATE) #define VIEWER_DRAWX_WORLD VIEWER_DRAWX_WORLD_0 #define VIEWER_SOCKET_WORLD \ (ViewerInitializeSocketWorld_Private(),VIEWER_SOCKET_WORLD_PRIVATE) /* Viewer based on the ALICE Memory Snooper */ #if defined(HAVE_AMS) #include "ams.h" extern int ViewerAMSGetAMSComm(Viewer,AMS_Comm *); extern int ViewerAMSOpen(MPI_Comm,const char[],Viewer*); extern Viewer VIEWER_AMS_(MPI_Comm); extern int VIEWER_AMS_Destroy(MPI_Comm); extern Viewer VIEWER_AMS_WORLD_PRIVATE; extern int ViewerInitializeAMSWorld_Private(void); #define VIEWER_AMS_WORLD (ViewerInitializeAMSWorld_Private(),VIEWER_AMS_WORLD_PRIVATE) #endif /* Viewer utility routines used by PETSc that are not normally used by users. */ extern int ViewerSocketPutScalar_Private(Viewer,int,int,Scalar*); extern int ViewerSocketPutDouble_Private(Viewer,int,int,double*); extern int ViewerSocketPutInt_Private(Viewer,int,int*); extern int ViewerSocketPutSparse_Private(Viewer,int,int,int,Scalar*,int*,int *); extern int ViewerInitializeASCII_Private(void); extern int ViewerDestroyASCII_Private(void); extern int ViewerDestroyDrawX_Private(void); extern int ViewerDestroySocket_Private(void); extern int ViewerDestroyAMS_Private(void); #endif