summaryrefslogtreecommitdiffstats
path: root/c++/src/H5PropList.h
blob: beef474f65e1b543e0c127cd1ebed9a9fe92f147 (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
139
140
141
142
143
144
145
146
// 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 H5PropList_H
#define H5PropList_H

namespace H5 {

/*! \class PropList
    \brief Class PropList inherits from IdComponent and provides wrappers for
    the HDF5 generic property list.
*/
//  Inheritance: IdComponent
class H5_DLLCPP PropList : public IdComponent {
  public:
    ///\brief Default property list
    static const PropList &DEFAULT;

    // Creates a property list of a given type or creates a copy of an
    // existing property list giving the property list id.
    PropList(const hid_t plist_id);

    // Make a copy of the given property list using assignment statement
    PropList &operator=(const PropList &rhs);

    // Compares this property list or class against the given list or class.
    bool operator==(const PropList &rhs) const;

    // Close this property list.
    virtual void close() override;

    // Close a property list class.
    void closeClass() const;

    // Makes a copy of the given property list.
    void copy(const PropList &like_plist);

    // Copies a property from this property list or class to another
    void copyProp(PropList &dest, const char *name) const;
    void copyProp(PropList &dest, const H5std_string &name) const;

    // Copies a property from one property list or property class to another
    void copyProp(PropList &dest, PropList &src, const char *name) const;
    void copyProp(PropList &dest, PropList &src, const H5std_string &name) const;

    // Gets the class of this property list, i.e. H5P_FILE_CREATE,
    // H5P_FILE_ACCESS, ...
    hid_t getClass() const;

    // Return the name of a generic property list class.
    H5std_string getClassName() const;

    // Returns the parent class of a generic property class.
    PropList getClassParent() const;

    // Returns the number of properties in this property list or class.
    size_t getNumProps() const;

    // Query the value of a property in a property list.
    void         getProperty(const char *name, void *value) const;
    void         getProperty(const H5std_string &name, void *value) const;
    H5std_string getProperty(const char *name) const;
    H5std_string getProperty(const H5std_string &name) const;

    // Set a property's value in a property list.
    void setProperty(const char *name, const char *charptr) const;
    void setProperty(const char *name, const void *value) const;
    void setProperty(const char *name, const H5std_string &strg) const;
    void setProperty(const H5std_string &name, const void *value) const;
    void setProperty(const H5std_string &name, const H5std_string &strg) const;
    // Deprecated after 1.10.1, missing const
    void setProperty(const char *name, void *value) const;
    void setProperty(const char *name, H5std_string &strg) const;
    void setProperty(const H5std_string &name, void *value) const;
    void setProperty(const H5std_string &name, H5std_string &strg) const;

    // Query the size of a property in a property list or class.
    size_t getPropSize(const char *name) const;
    size_t getPropSize(const H5std_string &name) const;

    // Determines whether a property list is a certain class.
    bool isAClass(const PropList &prop_class) const;

    /// Query the existence of a property in a property object.
    bool propExist(const char *name) const;
    bool propExist(const H5std_string &name) const;

    // Removes a property from a property list.
    void removeProp(const char *name) const;
    void removeProp(const H5std_string &name) const;

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

    // Default constructor: creates a stub PropList object.
    PropList();

    // Copy constructor: same as the original PropList.
    PropList(const PropList &original);

    // Gets the property list id.
    virtual hid_t getId() const override;

    // Destructor: properly terminates access to this property list.
    virtual ~PropList() override;

#ifndef DOXYGEN_SHOULD_SKIP_THIS

    // Deletes the PropList global constant
    static void deleteConstants();

  protected:
    hid_t id; // HDF5 property list id

    // Sets the property list id.
    virtual void p_setId(const hid_t new_id) override;

  private:
    static PropList *DEFAULT_;

    // Dynamically allocates the PropList global constant
    static PropList *getConstant();

    // Friend function to set PropList id.  For library use only.
    friend void f_PropList_setId(PropList *plist, hid_t new_id);

#endif // DOXYGEN_SHOULD_SKIP_THIS

}; // end of PropList
} // namespace H5

#endif // H5PropList_H