1 
2 #ifndef _VIEWERIMPL
3 #define _VIEWERIMPL
4 
5 #include <petsc/private/petscimpl.h>
6 #include <petscviewer.h>
7 
8 PETSC_EXTERN PetscBool      PetscViewerRegisterAllCalled;
9 PETSC_EXTERN PetscErrorCode PetscViewerRegisterAll(void);
10 
11 struct _PetscViewerOps {
12    PetscErrorCode (*destroy)(PetscViewer);
13    PetscErrorCode (*view)(PetscViewer,PetscViewer);
14    PetscErrorCode (*flush)(PetscViewer);
15    PetscErrorCode (*getsubviewer)(PetscViewer,MPI_Comm,PetscViewer*);
16    PetscErrorCode (*restoresubviewer)(PetscViewer,MPI_Comm,PetscViewer*);
17    PetscErrorCode (*read)(PetscViewer,void*,PetscInt,PetscInt*,PetscDataType);
18    PetscErrorCode (*setfromoptions)(PetscOptionItems*,PetscViewer);
19    PetscErrorCode (*setup)(PetscViewer);
20 };
21 
22 #define PETSCVIEWERGETVIEWEROFFPUSHESMAX 25
23 
24 #define PETSCVIEWERFORMATPUSHESMAX 25
25 /*
26    Defines the viewer data structure.
27 */
28 struct _p_PetscViewer {
29   PETSCHEADER(struct _PetscViewerOps);
30   PetscViewerFormat format,formats[PETSCVIEWERFORMATPUSHESMAX];
31   int               iformat;   /* number of formats that have been pushed on formats[] stack */
32   void              *data;
33   PetscBool         setupcalled;
34 };
35 
36 PETSC_EXTERN PetscMPIInt Petsc_Viewer_keyval;
37 PETSC_EXTERN PetscMPIInt Petsc_Viewer_Stdout_keyval;
38 PETSC_EXTERN PetscMPIInt Petsc_Viewer_Stderr_keyval;
39 PETSC_EXTERN PetscMPIInt Petsc_Viewer_Binary_keyval;
40 PETSC_EXTERN PetscMPIInt Petsc_Viewer_Draw_keyval;
41 #if defined(PETSC_HAVE_HDF5)
42 PETSC_EXTERN PetscMPIInt Petsc_Viewer_HDF5_keyval;
43 #endif
44 #if defined(PETSC_USE_SOCKETVIEWER)
45 PETSC_EXTERN PetscMPIInt Petsc_Viewer_Socket_keyval;
46 #endif
47 
48 #endif
49