summaryrefslogtreecommitdiffstats
path: root/c++/src/H5DxferProp.h
blob: 81361cff544ca3134c8b29290dfdf7fad63829ac (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
// C++ informative line for the emacs editor: -*- C++ -*-
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by The HDF Group.                                               *
 * 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://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
 * access to either file, you may request a copy from help@hdfgroup.org.     *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

// Class DSetMemXferPropList represents the HDF5 dataset transfer property list
// and inherits from PropList.

#ifndef __H5DSetMemXferPropList_H
#define __H5DSetMemXferPropList_H

namespace H5 {

/*! \class DSetMemXferPropList
    \brief Class DSetCreatPropList inherits from PropList and provides
    wrappers for the HDF5 dataset memory and transfer property list.

    Inheritance: ObjCreatPropList -> PropList -> IdComponent
*/
class H5_DLLCPP DSetMemXferPropList : public PropList {
   public:
	///\brief Default dataset memory and transfer property list.
	static const DSetMemXferPropList& DEFAULT;

	// Creates a dataset memory and transfer property list.
	DSetMemXferPropList();

	// Creates a dataset transform property list.
	DSetMemXferPropList(const char* expression);

	// Sets type conversion and background buffers.
	void setBuffer( size_t size, void* tconv, void* bkg ) const;

	// Reads buffer settings.
	size_t getBuffer( void** tconv, void** bkg ) const;

	// Sets B-tree split ratios for a dataset transfer property list.
	void setBtreeRatios( double left, double middle, double right ) const;

	// Gets B-tree split ratios for a dataset transfer property list.
	void getBtreeRatios( double& left, double& middle, double& right ) const;

	// Sets data transform expression.
	void setDataTransform(const char* expression) const;
	void setDataTransform(const H5std_string& expression) const;

	// Gets data transform expression.
	ssize_t getDataTransform(char* exp, size_t buf_size=0) const;
	H5std_string getDataTransform() const;

	// Sets the dataset transfer property list status to TRUE or FALSE.
	void setPreserve( bool status ) const;

	// Checks status of the dataset transfer property list.
	bool getPreserve() const;

	// Sets an exception handling callback for datatype conversion.
	void setTypeConvCB( H5T_conv_except_func_t op, void *user_data) const;

	// Gets the exception handling callback for datatype conversion.
	void getTypeConvCB( H5T_conv_except_func_t *op, void **user_data) const;

	// Sets the memory manager for variable-length datatype
	// allocation in H5Dread and H5Dvlen_reclaim.
	void setVlenMemManager( H5MM_allocate_t alloc, void* alloc_info,
				H5MM_free_t free, void* free_info ) const;

	// alloc and free are set to NULL, indicating that system
	// malloc and free are to be used.
	void setVlenMemManager() const;

	// Gets the memory manager for variable-length datatype
	// allocation in H5Dread and H5Tvlen_reclaim.
	void getVlenMemManager( H5MM_allocate_t& alloc, void** alloc_info,
				H5MM_free_t& free, void** free_info ) const;

	// Sets the size of a contiguous block reserved for small data.
	void setSmallDataBlockSize(hsize_t size) const;

	// Returns the current small data block size setting.
	hsize_t getSmallDataBlockSize() const;

	// Sets number of I/O vectors to be read/written in hyperslab I/O.
	void setHyperVectorSize(size_t vector_size) const;

	// Returns the number of I/O vectors to be read/written in
	// hyperslab I/O.
	size_t getHyperVectorSize() const;

	// Enables or disables error-detecting for a dataset reading
	// process.
	void setEDCCheck(H5Z_EDC_t check) const;

	// Determines whether error-detection is enabled for dataset reads.
	H5Z_EDC_t getEDCCheck() const;

	///\brief Returns this class name.
	virtual H5std_string fromClass () const { return("DSetMemXferPropList"); }

	// Copy constructor: makes a copy of a DSetMemXferPropList object.
	DSetMemXferPropList(const DSetMemXferPropList& orig);

	// Creates a copy of an existing dataset memory and transfer
	// property list using the property list id.
	DSetMemXferPropList(const hid_t plist_id);

	// Noop destructor
	virtual ~DSetMemXferPropList();

#ifndef DOXYGEN_SHOULD_SKIP_THIS

        // Deletes the global constant, should only be used by the library
        static void deleteConstants();

    private:
	static DSetMemXferPropList* DEFAULT_;

        // Creates the global constant, should only be used by the library
        static DSetMemXferPropList* getConstant();

#endif // DOXYGEN_SHOULD_SKIP_THIS
};
}
#endif // __H5DSetMemXferPropList_H