You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
6.6 KiB
C++

// C++ informative line for the emacs editor: -*- C++ -*-
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by The HDF Group. *
* All rights reserved. *
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the COPYING file, which can be found at the root of the source code *
* distribution tree, or in https://www.hdfgroup.org/licenses. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef H5FileAccPropList_H
#define H5FileAccPropList_H
namespace H5 {
/*! \class FileAccPropList
\brief Class FileAccPropList inherits from PropList and provides
wrappers for the HDF5 file access property list.
*/
// Inheritance: PropList -> IdComponent
class H5_DLLCPP FileAccPropList : public PropList {
public:
///\brief Default file access property list.
static const FileAccPropList &DEFAULT;
// Creates a file access property list.
FileAccPropList();
// Modifies this property list to use the H5FD_STDIO driver
void setStdio() const;
// Set file driver for this property list
void setDriver(hid_t new_driver_id, const void *new_driver_info) const;
// Returns a low-level file driver identifier.
hid_t getDriver() const;
// Sets offset for family driver.
void setFamilyOffset(hsize_t offset) const;
// Gets offset for family driver.
hsize_t getFamilyOffset() const;
// Modifies this file access property list to use the sec2 driver.
void setSec2() const;
// Modifies this file access property list to use the H5FD_CORE
// driver.
void setCore(size_t increment, hbool_t backing_store) const;
// Queries H5FD_CORE driver properties.
void getCore(size_t &increment, hbool_t &backing_store) const;
// Sets this file access properties list to the family driver.
void setFamily(hsize_t memb_size, const FileAccPropList &memb_plist) const;
// Returns information about the family file access property list.
void getFamily(hsize_t &memb_size, FileAccPropList &memb_plist) const;
FileAccPropList getFamily(hsize_t &memb_size) const;
// Emulates the old split file driver,
void setSplit(const FileAccPropList &meta_plist, const FileAccPropList &raw_plist,
const char *meta_ext = ".meta", const char *raw_ext = ".raw") const;
void setSplit(const FileAccPropList &meta_plist, const FileAccPropList &raw_plist,
const H5std_string &meta_ext = ".meta", const H5std_string &raw_ext = ".raw") const;
// Sets the maximum size of the data sieve buffer.
void setSieveBufSize(size_t bufsize) const;
// Returns the current settings for the data sieve buffer size
// property
size_t getSieveBufSize() const;
// Sets the minimum size of metadata block allocations.
void setMetaBlockSize(hsize_t &block_size) const;
// Returns the current metadata block size setting.
hsize_t getMetaBlockSize() const;
// Modifies this file access property list to use the logging driver.
void setLog(const char *logfile, unsigned flags, size_t buf_size) const;
void setLog(const H5std_string &logfile, unsigned flags, size_t buf_size) const;
// Sets alignment properties of this file access property list
void setAlignment(hsize_t threshold = 1, hsize_t alignment = 1) const;
// Retrieves the current settings for alignment properties from
// this property list.
void getAlignment(hsize_t &threshold, hsize_t &alignment) const;
// Sets data type for multi driver.
void setMultiType(H5FD_mem_t dtype) const;
// Returns the data type property for MULTI driver.
H5FD_mem_t getMultiType() const;
// Sets the meta data cache and raw data chunk cache parameters.
void setCache(int mdc_nelmts, size_t rdcc_nelmts, size_t rdcc_nbytes, double rdcc_w0) const;
// Queries the meta data cache and raw data chunk cache parameters.
void getCache(int &mdc_nelmts, size_t &rdcc_nelmts, size_t &rdcc_nbytes, double &rdcc_w0) const;
// Sets the degree for the file close behavior.
void setFcloseDegree(H5F_close_degree_t degree) const;
// Returns the degree for the file close behavior.
H5F_close_degree_t getFcloseDegree() const;
// Sets file access property list to use the H5FD_DIRECT driver.
void setFileAccDirect(size_t boundary, size_t block_size, size_t cbuf_size) const;
// Retrieves information about the direct file access property list.
void getFileAccDirect(size_t &boundary, size_t &block_size, size_t &cbuf_size) const;
// Sets garbage collecting references flag.
void setGcReferences(unsigned gc_ref = 0) const;
// Returns garbage collecting references setting.
unsigned getGcReferences() const;
// Sets file locking parameters.
void setFileLocking(hbool_t use_file_locking, hbool_t ignore_when_disabled) const;
// Gets file locking parameters.
void getFileLocking(hbool_t &use_file_locking, hbool_t &ignore_when_disabled) const;
// Sets bounds on versions of library format to be used when creating
// or writing objects.
void setLibverBounds(H5F_libver_t libver_low, H5F_libver_t libver_high) const;
// Gets the current settings for the library version format bounds.
void getLibverBounds(H5F_libver_t &libver_low, H5F_libver_t &libver_high) const;
///\brief Returns this class name.
virtual H5std_string
fromClass() const override
{
return ("FileAccPropList");
}
// Copy constructor: same as the original FileAccPropList.
FileAccPropList(const FileAccPropList &original);
// Creates a copy of an existing file access property list
// using the property list id.
FileAccPropList(const hid_t plist_id);
// Noop destructor
virtual ~FileAccPropList() override;
#ifndef DOXYGEN_SHOULD_SKIP_THIS
// Deletes the global constant, should only be used by the library
static void deleteConstants();
private:
static FileAccPropList *DEFAULT_;
// Creates the global constant, should only be used by the library
static FileAccPropList *getConstant();
#endif // DOXYGEN_SHOULD_SKIP_THIS
}; // end of FileAccPropList
} // namespace H5
#endif // H5FileAccPropList_H