Files
src_old/src/include/H5.h
T
2013-09-26 15:53:54 +02:00

312 lines
6.8 KiB
C

/*
Copyright (c) 2006-2013, The Regents of the University of California,
through Lawrence Berkeley National Laboratory (subject to receipt of any
required approvals from the U.S. Dept. of Energy) and the Paul Scherrer
Institut (Switzerland). All rights reserved.
License: see file COPYING in top level of source distribution.
*/
#ifndef __H5_H
#define __H5_H
#include <string.h>
#include "H5_model.h"
#include "H5_attribs.h"
#ifdef __cplusplus
extern "C" {
#endif
static inline h5_prop_t
H5CreateFileProp (
void
) {
H5_API_ENTER (h5_prop_t, "%s", "");
H5_API_RETURN (h5_create_prop (H5_PROP_FILE));
}
static inline h5_err_t
H5SetPropFileMPIO (
h5_prop_t prop,
MPI_Comm* comm
) {
H5_API_ENTER (h5_err_t, "prop=%p, comm=%p", (void*)prop, comm);
H5_API_RETURN (h5_set_prop_file_mpio (prop, comm));
}
static inline h5_err_t
H5SetPropFileAlign (
h5_prop_t prop,
h5_int64_t align
) {
H5_API_ENTER (h5_err_t, "prop=%p, align=%lld", (void*)prop, (long long int)align);
H5_API_RETURN (h5_set_prop_file_align (prop, align));
}
/*!
\ingroup h5hut_file
Set the `throttle` factor, which causes HDF5 write and read
calls to be issued in that number of batches.
This can prevent large concurrency parallel applications that
use independent writes from overwhelming the underlying
parallel file system.
Throttling only works with the H5_VFD_MPIPOSIX or
H5_VFD_MPIIO_IND drivers and is only available in
the parallel library.
\return \c H5_SUCCESS or \c H5_FAILURE
*/
static inline h5_err_t
H5SetPropFileThrottle (
h5_prop_t prop,
h5_int64_t throttle
) {
H5_API_ENTER (h5_err_t, "prop=%p, throttle=%lld", (void*)prop, (long long int)throttle);
H5_API_RETURN (h5_set_prop_file_throttle (prop, throttle));
}
static inline h5_err_t
H5CloseProp (
h5_prop_t prop
) {
H5_API_ENTER (h5_err_t, "prop=%p", (void*)prop);
H5_API_RETURN (h5_close_prop (prop));
}
/*!
\ingroup h5hut_file
<A NAME="H5OpenFile"></A>
Open file with name \c filename. This function is available in the parallel
and serial version. In the serial case \c comm may have any value.
File mode flags are:
- \c H5_O_RDONLY: Only reading allowed
- \c H5_O_WRONLY: create new file, dataset must not exist
- \c H5_O_APPEND: allows to append a new datasets to an existing file
- \c H5_O_RDWR: dataset may exist
- \c H5_FS_LUSTRE - enable optimizations for the Lustre file system
- \c H5_VFD_MPIPOSIX - use the HDF5 MPI-POSIX virtual file driver
- \c H5_VFD_MPIIO_IND - use MPI-IO in indepedent mode
The typical file extension is \c .h5.
\c h5_file_p should be treated as an essentially opaque
datastructure. It acts as the file handle, but internally
it maintains several key state variables associated with
the file.
\return File handle or \c (void*)H5_FAILURE
*/
static inline h5_file_t
H5OpenFile (
const char* filename,
h5_int64_t mode,
h5_prop_t props
) {
H5_API_ENTER (h5_file_t,
"filename='%s', mode=%lld, props=%p",
filename, (long long int)mode, (void*)props);
H5_API_RETURN (h5_open_file2 (filename, mode, props));
}
/*!
\ingroup h5hut_file
Close file and free all memory associated with the file handle.
\return \c H5_SUCCESS or \c H5_FAILURE
*/
static inline h5_err_t
H5CloseFile (
const h5_file_t f ///< [in] file handle.
) {
H5_API_ENTER (h5_err_t,
"f=%p",
(h5_file_p)f);
H5_API_RETURN (h5_close_file (f));
}
/*!
\ingroup h5hut_file
Verify that the file handle points to a valid H5hut file structure.
\return \c H5_SUCCESS or \c H5_FAILURE
*/
static inline h5_err_t
H5CheckFile (
const h5_file_t f ///< [in] file handle.
) {
H5_API_ENTER (h5_err_t,
"f=%p",
(h5_file_p)f);
H5_API_RETURN (h5_check_filehandle (f));
}
/*!
\ingroup h5hut_file
Flush step data to disk.
\return \c H5_SUCCESS or \c H5_FAILURE
*/
static inline h5_err_t
H5FlushStep (
const h5_file_t f ///< [in] file handle.
) {
H5_API_ENTER (h5_err_t,
"f=%p",
(h5_file_p)f);
H5_API_RETURN (h5_flush_step (f));
}
/*!
\ingroup h5hut_file
Flush file data to disk.
\return \c H5_SUCCESS or \c H5_FAILURE
*/
static inline h5_err_t
H5FlushFile (
const h5_file_t f ///< [in] file handle.
) {
H5_API_ENTER (h5_err_t,
"f=%p",
(h5_file_p)f);
H5_API_RETURN (h5_flush_file (f));
}
/*!
\ingroup h5hut_file
Close H5hut library. This function should be called before program exit.
\return \c H5_SUCCESS or \c H5_FAILURE
*/
static inline h5_err_t
H5Finalize (
void
) {
H5_API_ENTER (h5_err_t, "%s", "");
H5_API_RETURN (h5_close_hdf5 ());
}
/*!
\ingroup h5hut_error
Set verbosity level to \c level.
\return \c H5_SUCCESS
*/
static inline h5_err_t
H5SetVerbosityLevel (
const h5_id_t level ///< [in] verbosity/debug level.
) {
return h5_set_debuglevel (level);
}
/*!
\ingroup h5hut_error
Set error handler to \c handler.
\return \c H5_SUCCESS
*/
static inline h5_err_t
H5SetErrorHandler (
h5_errorhandler_t handler ///< [in] error handler to set.
) {
H5_API_ENTER (h5_err_t, "handler=%p", handler);
H5_API_RETURN (h5_set_errorhandler (handler));
}
/*!
\ingroup h5hut_error
Set the abort error handler.
\return \c H5_SUCCESS
*/
static inline h5_err_t
H5AbortOnError (
void
) {
H5_API_ENTER (h5_err_t, "%s", "");
H5_API_RETURN (h5_set_errorhandler (h5_abort_errorhandler));
}
/*!
\ingroup h5hut_error
Get current error handler.
\return Pointer to error handler.
*/
static inline h5_errorhandler_t
H5GetErrorHandler (
void
) {
H5_API_ENTER (h5_errorhandler_t, "%s", "void");
H5_API_RETURN (h5_get_errorhandler());
}
/*!
\ingroup h5hut_error
The report error handler writes a message to stderr, sets the error number
and returns.
\return \c H5_FAILURE
*/
static inline h5_err_t
H5ReportErrorhandler (
const char* fmt, ///< [in] format string of error message.
va_list ap ///< [in] arguments to format string.
) {
return h5_report_errorhandler (fmt, ap);
}
/*!
\ingroup h5hut_error
The abort error handler writes a message to stderr and exits the programm.
\return does not return.
*/
static inline h5_err_t
H5AbortErrorhandler (
const char* fmt, ///< [in] format string of error message.
va_list ap ///< [in] arguments to format string.
) {
return h5_abort_errorhandler (fmt, ap);
}
/*!
\ingroup h5hut_error
Get last error code.
\return error code
*/
static inline h5_err_t
H5GetErrno (
void
) {
return h5_get_errno ();
}
#ifdef __cplusplus
}
#endif
#endif