1 /*
2   System dependend definitions
3 */
4 
5 #ifndef _H5PART_TYPES_H_
6 #define _H5PART_TYPES_H_
7 
8 #ifdef   WIN32
9 typedef __int64			int64_t;
10 #endif /* WIN32 */
11 
12 typedef int64_t			h5part_int64_t;
13 typedef int			h5part_int32_t;
14 typedef double			h5part_float64_t;
15 typedef float			h5part_float32_t;
16 typedef h5part_int64_t (*h5part_error_handler)( const char*, const h5part_int64_t, const char*,...)
17 #ifdef __GNUC__
18 __attribute__ ((format (printf, 3, 4)))
19 #endif
20  ;
21 
22 #if defined(PARALLEL_IO) || defined(H5_HAVE_PARALLEL)
23 typedef MPI_Comm		H5_Comm;
24 #else
25 typedef unsigned long		H5_Comm;
26 #endif
27 
28 #define H5PART_STEPNAME_LEN	64
29 #define H5PART_DATANAME_LEN	64
30 
31 struct H5BlockFile;
32 
33 /**
34    \struct H5PartFile
35 
36    This is an essentially opaque datastructure that
37    acts as the filehandle for all practical purposes.
38    It is created by H5PartOpenFile<xx>() and destroyed by
39    H5PartCloseFile().
40 */
41 VTKH5PART_EXPORT
42 struct H5PartFile {
43 	hid_t	file;
44 	char	groupname_step[H5PART_STEPNAME_LEN];
45 	int	stepno_width;
46 	int	empty;
47 
48 	char flags;
49 
50 	h5part_int64_t timestep;
51 	hsize_t nparticles;
52 
53 	hid_t timegroup;
54 	hid_t shape;
55 	hid_t xfer_prop;
56 	hid_t access_prop;
57 	hid_t dcreate_prop;
58 	hid_t fcreate_prop;
59 
60 	/* the dataspace on disk for the current view */
61 	hid_t diskshape;
62 	/* the dataspace in memory for the current view */
63 	hid_t memshape;
64 
65 	h5part_int64_t viewstart; /* -1 if no view is available: A "view" looks */
66 	h5part_int64_t viewend;   /* at a subset of the data. */
67 	char viewindexed; /* flag for an indexed view */
68 
69 	/**
70 	   the number of particles in each processor.
71 	   With respect to the "VIEW", these numbers
72 	   can be regarded as non-overlapping subsections
73 	   of the particle array stored in the file.
74 	   So they can be used to compute the offset of
75 	   the view for each processor
76 	*/
77 	h5part_int64_t *pnparticles;
78 
79 	/**
80 	   Number of processors
81 	*/
82 	int nprocs;
83 
84 	/**
85 	   The index of the processor this process is running on.
86 	*/
87 	int myproc;
88 
89 	/**
90 	   MPI communicator
91 	*/
92 	H5_Comm comm;
93 
94 	int throttle;
95 
96 	struct H5BlockStruct *block;
97 	h5part_int64_t (*close_block)(struct H5PartFile *f);
98 
99 #ifdef PARALLEL_IO
100 	struct H5MultiBlockStruct *multiblock;
101 	h5part_int64_t (*close_multiblock)(struct H5PartFile *f);
102 #endif
103 };
104 
105 typedef struct H5PartFile H5PartFile;
106 
107 #ifdef IPL_XT3
108 # define SEEK_END 2
109 #endif
110 
111 #endif
112