1: #if !defined(_VTKVIMPL_H) 2: #define _VTKVIMPL_H 4: #include <petsc/private/viewerimpl.h> 6: typedef struct _n_PetscViewerVTKObjectLink *PetscViewerVTKObjectLink; 7: struct _n_PetscViewerVTKObjectLink { 8: PetscViewerVTKFieldType ft; 9: PetscObject vec; 10: PetscViewerVTKObjectLink next; 11: }; 13: typedef struct { 14: char *filename; 15: PetscFileMode btype; 16: PetscObject dm; 17: PetscViewerVTKObjectLink link; 18: PetscErrorCode (*write)(PetscObject,PetscViewer); 19: } PetscViewer_VTK; 21: PETSC_EXTERN PetscErrorCode PetscViewerVTKFWrite(PetscViewer,FILE*,const void*,PetscInt,MPI_Datatype); 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; 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 40: #endif