diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2000-11-14 21:30:12 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2000-11-14 21:30:12 (GMT) |
commit | 92041a68656c59813619ae1f26ed211b7f028e86 (patch) | |
tree | aaa3256c9a9f0adde21570eac9254f7ce00450b1 /c++/src/H5Group.h | |
parent | 36acd5381e3977164e0d6d666f8ce97cc53f9387 (diff) | |
download | hdf5-92041a68656c59813619ae1f26ed211b7f028e86.zip hdf5-92041a68656c59813619ae1f26ed211b7f028e86.tar.gz hdf5-92041a68656c59813619ae1f26ed211b7f028e86.tar.bz2 |
[svn-r2897] Purpose:
C++ API for 1.3.x branch
Description:
The *.C and *.h files named different than those in 1.2.x.
They are in the form: 'H5' + classname, or just classname if
the classname is already prefixed with 'H5' to avoid ambiguity
in documentation context. This version has several hidden bugs
fixed and an improvement on the reference counting approach.
The classes and their inheritance structure are listed below:
---------------------------------------
H5Library
Exception
RefCounter
IdComponent
H5File
DataSpace
H5Object
Group
AbstractDs
DataSet
Attribute
DataType
PredType
EnumType
CompType
AtomType
StrType
IntType
FloatType
PropList
FileCreatPropList
FileAccPropList
DSetCreatPropList
DSetMemXferPropList
---------------------------------------
IdComponent uses RefCounter to keep track of opened objects
so proper termination of HDF5 objects can be maintained.
Each class has a .h file containing the class declaration and
a .C file containing its definition. In addition to the classes
files, the following files do not have class information:
- H5Cpp.h: header file to be included in user's application
- H5Idtemplates.h: contains a template function used by several classes
- H5Classes.h: contains forward class declarations
- H5CommonFG.*: contains common code used by classes H5File and Group
- H5Include.h: contains the hdf5.h header file and the #undef RCSID
to work around the problem: multiple defined RcsId
- H5Alltypes.h: simply serves as a container to hold the header
files of all datatypes to simplify the header file inclusion
Platforms:
Solaris (arabica) and Linux
Diffstat (limited to 'c++/src/H5Group.h')
-rw-r--r-- | c++/src/H5Group.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/c++/src/H5Group.h b/c++/src/H5Group.h new file mode 100644 index 0000000..6246aa4 --- /dev/null +++ b/c++/src/H5Group.h @@ -0,0 +1,115 @@ +#ifndef _H5Group_H +#define _H5Group_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +class Group : public H5Object { + public: + // default constructor + Group(); + + // Copy constructor: makes a copy of the original object + Group( const Group& original ); + + // Creates a group in this group + Group createGroup( const string& name, size_t size_hint = 0 ); + Group createGroup( const char* name, size_t size_hint = 0 ); + + // Opens an existing group in this group + Group openGroup( const string& name ); + Group openGroup( const char* name ); + + // Creates a dataset in this group + DataSet createDataSet( const string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT ); + DataSet createDataSet( const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT ); + + // Opens a dataset in this group + DataSet openDataSet( const string& name ); + DataSet openDataSet( const char* name ); + + // Opens a generic named datatype in this group. + DataType openDataType( const string& name ) const; + DataType openDataType( const char* name ) const; + + // Opens a named enumeration datatype in this group. + EnumType openEnumType( const string& name ) const; + EnumType openEnumType( const char* name ) const; + + // Opens a named compound datatype in this group. + CompType openCompType( const string& name ) const; + CompType openCompType( const char* name ) const; + + // Opens a named integer datatype in this group. + IntType openIntType( const string& name ) const; + IntType openIntType( const char* name ) const; + + // Opens a named floating-point datatype in this group. + FloatType openFloatType( const string& name ) const; + FloatType openFloatType( const char* name ) const; + + // Opens a named string datatype in this group. + StrType openStrType( const string& name ) const; + StrType openStrType( const char* name ) const; + + // Creates a link from new_name to current_name in this group. + void link( H5G_link_t link_type, const string& curr_name, const string& new_name ); + void link( H5G_link_t link_type, const char* curr_name, const char* new_name ); + + // Removes a name linked to this group. + void unlink( const string& name ); + void unlink( const char* name ); + + // Iterates over the elements of this group - not implemented in + // C++ style yet + int iterateElems( const string& name, int *idx, H5G_iterate_t op, void *op_data ); + int iterateElems( const char* name, int *idx, H5G_iterate_t op, void *op_data ); + + // Renames an object within this group. + void move( const string& src, const string& dst ); + void move( const char* src, const char* dst ); + + // Retrieves information about the named object. + void getObjinfo( const string& name, hbool_t follow_link, H5G_stat_t& statbuf ); + void getObjinfo( const char* name, hbool_t follow_link, H5G_stat_t& statbuf ); + + // Returns the name of the object that the symbolic link points to. + string getLinkval( const string& name, size_t size ); + string getLinkval( const char* name, size_t size ); + + // Sets comment for an object specified by its name. + void setComment( const string& name, const string& comment ); + void setComment( const char* name, const char* comment ); + + // Gets the comment of an object specified by its name. + string getComment( const string& name, size_t bufsize ); + string getComment( const char* name, size_t bufsize ); + + // Mounts the file 'child' onto this group. + void mount( const string& name, H5File& child, PropList& plist); + void mount( const char* name, H5File& child, PropList& plist); + + // Unmounts the file named 'name' from this parent group. + void unmount( const string& name ); + void unmount( const char* name ); + + // Used by the API to appropriately close a group + void p_close() const; + + virtual ~Group(); + + // Creates a copy of an existing Group using its id + // (used only by template functions in FGtemplates.h + // to return a Group; will not be published; maybe, use friend???) + Group( const hid_t group_id ); + + private: + // Common code for member functions openXxxType - templates, maybe??? + hid_t p_openDataType( const char* name ) const; + +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif |