summaryrefslogtreecommitdiffstats
path: root/c++/src/H5FaccProp.h
blob: e10c7d02a6714a282df5c696ff8077ba2531061c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// C++ informative line for the emacs editor: -*- C++ -*-
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  * Copyright by the Board of Trustees of the University of Illinois.         *
  * 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 files COPYING and Copyright.html.  COPYING can be found at the root   *
  * of the source code distribution tree; Copyright.html can be found at the  *
  * root level of an installed copy of the electronic HDF5 document set and   *
  * is linked from the top-level documents page.  It can also be found at     *
  * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html.  If you do not have     *
  * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#ifndef _H5FileAccPropList_H
#define _H5FileAccPropList_H

#ifndef H5_NO_NAMESPACE
namespace H5 {
#endif

// class for file access properties
class H5_DLLCPP FileAccPropList : public PropList {
   public:
	static const FileAccPropList DEFAULT;

	// Creates a file access property list.
	FileAccPropList();

	// Copy constructor: creates a copy of a FileAccPropList object
	FileAccPropList( const FileAccPropList& original );

	// 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( FileAccPropList& meta_plist, FileAccPropList& raw_plist, 
	     const char* meta_ext = ".meta", const char* raw_ext = ".raw" ) const;
	void setSplit( FileAccPropList& meta_plist, FileAccPropList& raw_plist, 
	     const string& meta_ext, const string& raw_ext ) const;

#ifdef H5_HAVE_STREAM // for Stream Virtual File Driver
	// Modifies this file access property list to use the Stream driver.
	void setStream(H5FD_stream_fapl_t &fapl) const;

	// Retrieves the streaming I/O driver settings
	H5FD_stream_fapl_t getStream() const;
#endif

	// 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 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);

	// Returns the degree for the file close behavior.
	H5F_close_degree_t getFcloseDegree();

	// Sets garbage collecting references flag.
	void setGcReferences( unsigned gc_ref = 0 ) const;

	// Returns garbage collecting references setting.
	unsigned getGcReferences() const;

	// Creates a copy of an existing file access property list
	// using the property list id
	FileAccPropList (const hid_t plist_id) : PropList( plist_id ) {}

	// Default destructor
	virtual ~FileAccPropList();
};
#ifndef H5_NO_NAMESPACE
}
#endif
#endif