| Introduction to HDF5 HDF5 User Guide Other HDF5 documents and links | And in this document, the 
HDF5 Reference Manual H5 H5A H5D H5E H5F H5G H5I H5P H5R H5RA H5S H5T H5Z Tools | 
A group associates names with objects and provides a mechanism for mapping a name to an object. Since all objects appear in at least one group (with the possible exception of the root object) and since objects can have names in more than one group, the set of all objects in an HDF5 file is a directed graph. The internal nodes (nodes with out-degree greater than zero) must be groups while the leaf nodes (nodes with out-degree zero) are either empty groups or objects of some other type. Exactly one object in every non-empty file is the root object. The root object always has a positive in-degree because it is pointed to by the file boot block.
An object name consists of one or more components separated from one another by slashes. An absolute name begins with a slash and the object is located by looking for the first component in the root object, then looking for the second component in the first object, etc., until the entire name is traversed. A relative name does not begin with a slash and the traversal begins at the location specified by the create or access function.
H5Gcreate(hid_t loc_id, 
        const char *name,
	  size_t size_hint
    )
  H5Gcreate creates a new group with the specified
	  name at the specified location, loc_id.  
        The location is identified by a file or group identifier.  
	  The name, name, must not already be taken by some 
	  other object and all parent groups must already exist.  
        
	  size_hint is a hint for the number of bytes to
	  reserve to store the names which will be eventually added to
	  the new group.  Passing a value of zero for size_hint
	  is usually adequate since the library is able to dynamically
	  resize the name heap, but a correct hint may result in better
	  performance.  
        If a non-positive value is supplied for size_hint, 
        then a default size is chosen.
        
        The return value is a group identifier for the open group.
	  This group identifier should be closed by calling 
        H5Gclose() when it is no longer needed. 
  
loc_id
        name
        size_hint
        H5Gopen(hid_t loc_id,
        const char *name
    )
  H5Gopen opens an existing group with the specified 
        name at the specified location, loc_id.
        The location is identified by a file or group identifier
        H5Gopen returns a group identifier for the group
        that was opened.  This group identifier should be released by 
        calling H5Gclose() when it is no longer needed.  
  
loc_id
        name
        H5Gclose(hid_t group_id)
  H5Gclose releases resources used by a group which was
        opened by H5Gcreate() or H5Gopen(). 
        After closing a group, the group_id cannot be used again.  
        Failure to release a group with this call will result in resource leaks.
group_id
        H5Glink(hid_t loc_id,
        H5G_link_t link_type,
        const char *current_name,
        const char *new_name
    )
  new_name 
        to current_name.
  H5Glink creates a new name for an object that has some current 
	  name, possibly one of many names it currently has.  
        
        If link_type is H5G_LINK_HARD, then 
        current_name must specify the name of an 
        existing object and both
        names are interpreted relative to loc_id, which is 
        either a file identifier or a group identifier.
        
        If link_type is H5G_LINK_SOFT, then 
        current_name can be anything and is interpreted at 
        lookup time relative to the group which contains the final 
        component of new_name.  For instance, if
        current_name is ./foo,  
        new_name is ./x/y/bar, and a request
        is made for ./x/y/bar, then the actual object looked 
        up is ./x/y/./foo.                            
  
loc_id
        link_type
        H5G_LINK_HARD and H5G_LINK_SOFT.
      current_name
        new_name
        H5Gunlink(hid_t loc_id,
        const char *name
    )
  name from the group graph and
        decrements the link count for the object to which name points
  H5Gunlink removes an association between a name and an object. 
        Object headers keep track of how many hard links refer to the object;  
        when the hard link count reaches zero, the object can be removed  
        from the file.  Objects which are open are not removed until all  
        identifiers to the object are closed.
        If the link count reaches zero, all file-space associated with the object will be reclaimed. If the object is open, the reclamation of the file space is delayed until all handles to the object are closed.
loc_id
        name
        H5Giterate(hid_t loc_id,
        const char *name,
        int *idx,
        H5G_operator_t operator,
        void *operator_data
    )
  H5Giterate iterates over the members of 
        name in the file or group specified with 
        loc_id.  
        For each object in the group, the operator_data 
        and some additional information, specified below, are
        passed to the operator function.  
        The iteration begins with the idx object in the 
        group and the next element to be processed by the operator is 
        returned in idx.  If idx
        is NULL, then the iterator starts at the first group member; 
        since no stopping point is returned in this case, the iterator 
        cannot be restarted if one of the calls to its operator returns 
        non-zero.  
        
        The prototype for H5G_operator_t is:
        
typedef herr_t *(H5G_operator_t)(hid_t group_id,
                const char *member_name, void *operator_data/*in,out*/);
        group_id, the name of the current 
        object within the group, member_name, and the 
        pointer to the operator data passed in to H5Giterate, 
        operator_data.  
        The return values from an operator are:
loc_id
        *name
        *idx
        operator
        *operator_data
        H5Gmove(hid_t loc_id,
        const char *src,
        const char *dst
    )
  H5Gmove renames an object within an HDF5 file.  
        The original name, src, is unlinked from the 
        group graph and the new name, dst, is inserted   
        as an atomic operation.  Both names are interpreted relative 
        to loc_id, which is either a file or a group 
        identifier.
  loc_id
        *src
        *dst
        H5Gget_objinfo(hid_t loc_id,
        const char *name,
        hbool_t follow_link,
        H5G_stat_t *statbuf
    )
  H5Gget_objinfo returns information about the 
        specified object through the statbuf argument. 
        loc_id (a file, group, dataset, or 
        named datatype identifier) and 
        name together determine the object.  
        If the object is a symbolic link and follow_link is
        zero (0), then the information returned is that for the link itself;
        otherwise the link is followed and information is returned about
        the object to which the link points.  
        If follow_link is non-zero but the final symbolic link 
        is dangling (does not point to anything), then an error is returned.  
        The statbuf fields are undefined for an error.  
        The existence of an object can be tested by calling this function 
        with a null statbuf.
        
        H5Gget_objinfo() fills in the following data structure:
        
                  typedef struct H5G_stat_t {
                      unsigned long fileno[2];
                      unsigned long objno[2];
                      unsigned nlink;
                      H5G_type_t type;
                      time_t mtime; 
                      size_t linklen;
                  } H5G_stat_t
        
        The fileno and objno fields contain 
        four values which uniquely itentify an object among those 
        HDF5 files which are open: if all four values are the same 
        between two objects, then the two objects are the same 
        (provided both files are still open).  
        The nlink field is the number of hard links to  
        the object or zero when information is being returned about a 
        symbolic link (symbolic links do not have hard links but 
        all other objects always have at least one).  
        The type field contains the type of the object, 
        one of H5G_GROUP, H5G_DATASET, 
        or H5G_LINK.  
        The mtime field contains the modification time.
        If information is being returned about a symbolic link then 
        linklen will be the length of the link value 
        (the name of the pointed-to object with the null terminator);
        otherwise linklen will be zero.  
        Other fields may be added to this structure in the future.
  mtime value of 0 (zero).
  loc_id
        *name
        follow_link
        *statbuf
        statbuf (if non-null) initialized.
         Otherwise returns a negative value.
H5Gget_linkval(hid_t loc_id,
        const char *name,
        size_t size,
        char *value
    )
  H5Gget_linkval returns size 
        characters of the link value through the value 
        argument if loc_id (a file or group identifier) 
        and name specify a symbolic link.  
        If size is smaller than the link value, then 
        value will not be null terminated. 
         
        This function fails if the specified object is not a symbolic link.  
        The presence of a symbolic link can be tested by passing zero for  
        size and NULL for value.  
        
        Use H5Gget_objinfo() to get the size of a link value.
  
loc_id
        name
        size
        value 
            to be returned.
      value
        value, 
        if successful.
        Otherwise returns a negative value.
H5Gset_comment(hid_t loc_id,
        const char *name,
        const char *comment
    )
  H5Gset_comment sets the comment for the the
        object name to comment.
        Any previously existing comment is overwritten.
        
        If comment is the empty string or a 
        null pointer, the comment message is removed from the object. 
        
Comments should be relatively short, null-terminated, ASCII strings.
Comments can be attached to any object that has an object header, e.g., data sets, groups, named data types, and data spaces, but not symbolic links.
loc_id
        name
        comment
        H5Gget_comment(hid_t loc_id,
        const char *name,
        size_t bufsize,
        char *comment
    )
  H5Gget_comment retrieves the comment for the the
        object name.  The comment is returned in the buffer 
        comment.
        
        At most bufsize characters, including a null 
        terminator, are copied.  The result is not null terminated 
        if the comment is longer than the supplied buffer.  
        
If an object does not have a comment, the empty string is returned.
loc_id
        name
        bufsize
        comment.
      comment
        bufsize.
        Otherwise returns a negative value.
| Introduction to HDF5 HDF5 User Guide Other HDF5 documents and links | And in this document, the 
HDF5 Reference Manual H5 H5A H5D H5E H5F H5G H5I H5P H5R H5RA H5S H5T H5Z Tools |