Error Handling
--------------
 Now all functions, in which an error could occur, are returning a
value. This value is either a 64bit integer or a pointer.

 A negative 64bit integer as result indicates an error. Values >= 0
indicates successful execution.   This is similar to the convention
used in UNIX system calls, but we do not return -1 but the error
number (which is always negative).

 For functions returning a pointer the NULL-pointer is used to indicate
an error. You can call the function H5PartGetErrno() to get the error
number.  For the time being there is no strerror(3) or perror(3)
equivalent.


API Changes
-----------
 There are several changes in the API of H5Part. The biggest change is
a side-effect of the implementation of strict error handling.  The
impact to the existing C/C++ code is very small.  But now you *can*
and *should* implement some kind of error handling.  The simplest
error handling is to set an error handler which aborts the program as
soon as an error occurred.

 The next "biggest" change is the use of H5Part types instead of "long
long" and "double". The replacement of "long long" is "h5part_int64_t"
and for "double" "h5part_float64_t". This change has now effect in
Fortran.

 In some functions the argument type changed from "int" to
"h5part_int64_t". Since on most systems "int" is a 32bit integer,
calls to these functions must be adapted to the new API. In C/C++ the
compiler will complain about it. But in Fortran you will *not* get an
error message.So, you must check your Fortran code carefully.

 Changes in detail (not listed are functions where only the return
type changed from any to "h5part_int64_t"):

 New API     Changes to old API

 h5part_int64_t    void
 H5PartSetNumParticles (
  H5PartFile *f,
  h5part_int64_t nparticles long long
  );

 h5part_int64_t    int
 H5PartWriteDataFloat64 (
  H5PartFile *f,
  char *name,
  h5part_float64_t *dta  double
  );

 h5part_int64_t    int
 H5PartWriteDataInt64 (
  H5PartFile *f,
  char *name,
  h5part_int64_t *dta  long long
  );

 h5part_int64_t    void
 H5PartSetStep (
  H5PartFile *f,
  h5part_int64_t step  int
  );

 h5part_int64_t    void
 H5PartSetView (
  H5PartFile *f,
  h5part_int64_t start,  long long
  h5part_int64_t end  long long
  );

 h5part_int64_t    int
 H5PartGetView (
  H5PartFile *f,
  h5part_int64_t *start,  long long
  h5part_int64_t *end  long long
  );

 h5part_int64_t    int
 H5PartReadDataFloat64 (
  H5PartFile *f,
  char *name,
  h5part_float64_t *dta  double
  );

 h5part_int64_t    int
 H5PartReadDataInt64 (
  H5PartFile *f,
  char *name,
  h5part_int64_t *dta  long long
  );

 h5part_int64_t    void
 H5PartReadParticleStep (
  H5PartFile *f,
  h5part_int64_t step,  int
  h5part_float64_t *x,  double
  h5part_float64_t *y,  double
  h5part_float64_t *z,  double
  h5part_float64_t *px,  double
  h5part_float64_t *py,  double
  h5part_float64_t *pz,  double
  h5part_int64_t *id  long long
  );

New functions:

 h5part_int64_t
 H5PartSetVerbosityLevel (
  unsigned int
  );

 h5part_int64_t
 H5PartSetErrorHandler (
  h5part_error_handler handler
  );

 h5part_int64_t
 H5PartGetErrno (
  void
  );

 h5part_int64_t
 H5PartDefaultErrorHandler (
  const char *funcname,
  const h5part_int64_t eno,
  const char *fmt,
  ...
  );

 h5part_int64_t
 H5PartAbortErrorHandler (
  const char *funcname,
  const h5part_int64_t eno,
  const char *fmt,
  ...
  );

Removed functions:

 int
 H5PartFileIsValid (
  H5PartFile *f
  );
