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/H5File.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/H5File.h')
-rw-r--r-- | c++/src/H5File.h | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/c++/src/H5File.h b/c++/src/H5File.h new file mode 100644 index 0000000..782a90d --- /dev/null +++ b/c++/src/H5File.h @@ -0,0 +1,132 @@ +#ifndef _H5File_H +#define _H5File_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +class H5File : public IdComponent { + public: + // copy constructor: makes a copy of the original H5File object. + H5File(const H5File& original ); + + // Creates or opens an HDF5 file. + H5File( const string& name, unsigned int flags, + const FileCreatPropList& create_plist = FileCreatPropList::DEFAULT, + const FileAccPropList& access_plist = FileAccPropList::DEFAULT ); + H5File( const char* name, unsigned int flags, + const FileCreatPropList& create_plist = FileCreatPropList::DEFAULT, + const FileAccPropList& access_plist = FileAccPropList::DEFAULT ); + + // Sets and gets H5File's data member + //void setId( hid_t new_file_id ); + //hid_t getId() const; + + // Creates a new group in this file + Group createGroup( const string& name, size_t size_hint = 0 ) const; + Group createGroup( const char* name, size_t size_hint = 0 ) const; + + // Opens an existing group in this file + Group openGroup( const string& name ) const; + Group openGroup( const char* name ) const; + + // Determines if a file, specified by its name, is in HDF5 format + static bool isHdf5(const string& name ); + static bool isHdf5(const char* name ); + + // Reopens this file + void reopen(); + + // Creates a new dataset in this file + DataSet createDataSet( const string& name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT ) const; + DataSet createDataSet( const char* name, const DataType& data_type, const DataSpace& data_space, const DSetCreatPropList& create_plist = DSetCreatPropList::DEFAULT ) const; + + // Opens a existing dataset in this file + DataSet openDataSet( const string& name ) const; + DataSet openDataSet( const char* name ) const; + + // Opens a generic named datatype in this file + DataType openDataType( const string& name ) const; + DataType openDataType( const char* name ) const; + + // Opens a named enumeration datatype in this file + EnumType openEnumType( const string& name ) const; + EnumType openEnumType( const char* name ) const; + + // Opens a named compound datatype in this file + CompType openCompType( const string& name ) const; + CompType openCompType( const char* name ) const; + + // Opens a named integer datatype in this file + IntType openIntType( const string& name ) const; + IntType openIntType( const char* name ) const; + + // Opens a named floating-point datatype in this file + FloatType openFloatType( const string& name ) const; + FloatType openFloatType( const char* name ) const; + + // Opens a named string datatype in this file + StrType openStrType( const string& name ) const; + StrType openStrType( const char* name ) const; + + // Gets the creation property list of this file + FileCreatPropList getCreatePlist() const; + + // Gets the access property list of this file + FileAccPropList getAccessPlist() const; + + // Creates a link from new_name to current_name in this file + void link( H5G_link_t link_type, const string& curr_name, const string& new_name ) const; + void link( H5G_link_t link_type, const char* curr_name, const char* new_name ) const; + + // Removes a name linked to this file + void unlink( const string& name ) const; + void unlink( const char* name ) const; + + // Renames an object within this file + void move( const string& src, const string& dst ) const; + void move( const char* src, const char* dst ) const; + + // Retrieves information about an object given its name and link + void getObjinfo( const string& name, hbool_t follow_link, H5G_stat_t& statbuf ) const; + void getObjinfo( const char* name, hbool_t follow_link, H5G_stat_t& statbuf ) const; + + // Returns the name of the object that the symbolic link 'name' + // points to + string getLinkval( const string& name, size_t size ) const; + string getLinkval( const char* name, size_t size ) const; + + // Sets the comment for an object specified by its name + void setComment( const string& name, const string& comment ) const; + void setComment( const char* name, const char* comment ) const; + + // Gets the comment of an object specified by its name + string getComment( const string& name, size_t bufsize ) const; + string getComment( const char* name, size_t bufsize ) const; + + // Mounts a file, specified by its name, to this file + void mount( const string& name, H5File& child, PropList& plist ) const; + void mount( const char* name, H5File& child, PropList& plist ) const; + + // Unmounts a file, specified by its name, from this file + void unmount( const string& name ) const; + void unmount( const char* name ) const; + + // Used by the API to appropriately close a file + void p_close() const; + + virtual ~H5File(); + + private: + // Common code for member functions openXxxType - templates, maybe??? + hid_t p_openDataType( const char* name ) const; + + // This function is private and contains common code between the + // constructors taking a string or a char* + void getFile( const char* name, unsigned int flags, const FileCreatPropList& create_plist, const FileAccPropList& access_plist ); + +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif |