/* System dependend definitions */ #ifndef _H5PARTTYPES_H_ #define _H5PARTTYPES_H_ typedef int64_t h5part_int64_t; typedef double h5part_float64_t; typedef h5part_int64_t (*h5part_error_handler)( const char*, const h5part_int64_t, const char*,...) #ifdef __GNUC__ __attribute__ ((format (printf, 3, 4))) #endif ; struct H5BlockFile; /** \struct H5PartFile This is an essentially opaque datastructure that acts as the filehandle for all practical purposes. It is created by H5PartOpenFile() and destroyed by H5PartCloseFile(). */ struct H5PartFile { hid_t file; h5part_int64_t timestep; hsize_t nparticles; hid_t timegroup; hid_t shape; unsigned mode; hid_t xfer_prop; hid_t create_prop; hid_t access_prop; hid_t diskshape; hid_t memshape; /* for parallel I/O (this is on-disk) H5S_ALL if serial I/O */ h5part_int64_t viewstart; /* -1 if no view is available: A "view" looks */ h5part_int64_t viewend; /* at a subset of the data. */ /** the number of particles in each processor. With respect to the "VIEW", these numbers can be regarded as non-overlapping subsections of the particle array stored in the file. So they can be used to compute the offset of the view for each processor */ h5part_int64_t *pnparticles; /** Number of processors */ int nprocs; /** The index of the processor this process is running on. */ int myproc; #ifdef PARALLEL_IO /** MPI comnunicator */ MPI_Comm comm; #endif struct H5BlockStruct *block; h5part_int64_t (*close_block)(struct H5PartFile *f); }; typedef struct H5PartFile H5PartFile; #ifdef IPL_XT3 # define SEEK_END 2 #endif #endif