xref: /petsc/src/sys/classes/viewer/impls/vtk/vtkvimpl.h (revision feff33ee0b5b037fa8f9f294dede656a2f85cc47)
1 #if !defined(_VTKVIMPL_H)
2 #define _VTKVIMPL_H
3 
4 #include <petsc/private/viewerimpl.h>    /*I   "petscsys.h"   I*/
5 
6 typedef struct _n_PetscViewerVTKObjectLink *PetscViewerVTKObjectLink;
7 struct _n_PetscViewerVTKObjectLink {
8   PetscViewerVTKFieldType  ft;
9   PetscObject              vec;
10   PetscViewerVTKObjectLink next;
11 };
12 
13 typedef struct {
14   char                     *filename;
15   PetscFileMode            btype;
16   PetscObject              dm;
17   PetscViewerVTKObjectLink link;
18   PetscErrorCode (*write)(PetscObject,PetscViewer);
19 } PetscViewer_VTK;
20 
21 PETSC_EXTERN PetscErrorCode PetscViewerVTKFWrite(PetscViewer,FILE*,const void*,PetscInt,MPI_Datatype);
22 
23 #if defined(PETSC_HAVE_STDINT_H) /* The VTK format requires a 32-bit integer */
24 typedef int32_t PetscVTKInt;
25 #else                            /* Hope int is 32 bits */
26 typedef int PetscVTKInt;
27 #endif
28 typedef unsigned char PetscVTKType;
29 
30 #define PETSC_VTK_INT_MAX  2147483647
31 #define PETSC_VTK_INT_MIN -2147483647
32 #if defined(PETSC_USE_64BIT_INDICES)
33 #  define PetscVTKIntCheck(a)  if ((a) > PETSC_VTK_INT_MAX) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Array too long for 32-bit VTK binary format")
34 #  define PetscVTKIntCast(a) (PetscVTKInt)(a);PetscVTKIntCheck(a)
35 #else
36 #  define PetscVTKIntCheck(a)
37 #  define PetscVTKIntCast(a) a
38 #endif
39 
40 #endif
41