Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-18 09:16:03

0001 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
0002  * Copyright by The HDF Group.                                               *
0003  * All rights reserved.                                                      *
0004  *                                                                           *
0005  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
0006  * terms governing use, modification, and redistribution, is contained in    *
0007  * the COPYING file, which can be found at the root of the source code       *
0008  * distribution tree, or in https://www.hdfgroup.org/licenses.               *
0009  * If you do not have access to either file, you may request a copy from     *
0010  * help@hdfgroup.org.                                                        *
0011  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
0012 
0013 /*-------------------------------------------------------------------------
0014  *
0015  * Created:             H5Gpublic.h
0016  *
0017  * Purpose:             Public declarations for the H5G package
0018  *
0019  *-------------------------------------------------------------------------
0020  */
0021 #ifndef H5Gpublic_H
0022 #define H5Gpublic_H
0023 
0024 #include "H5public.h"  /* Generic Functions                        */
0025 #include "H5Ipublic.h" /* Identifiers                              */
0026 #include "H5Lpublic.h" /* Links                                    */
0027 #include "H5Opublic.h" /* Object Headers                           */
0028 
0029 /*****************/
0030 /* Public Macros */
0031 /*****************/
0032 
0033 /*******************/
0034 /* Public Typedefs */
0035 /*******************/
0036 
0037 //! <!-- [H5G_storage_t_snip] -->
0038 /**
0039  * Types of link storage for groups
0040  */
0041 typedef enum H5G_storage_type_t {
0042     H5G_STORAGE_TYPE_UNKNOWN = -1, /**< Unknown link storage type   */
0043     H5G_STORAGE_TYPE_SYMBOL_TABLE, /**< Links in group are stored with a "symbol table" */
0044                                    /**< (this is sometimes called "old-style" groups) */
0045     H5G_STORAGE_TYPE_COMPACT,      /**< Links are stored in object header */
0046     H5G_STORAGE_TYPE_DENSE         /**< Links are stored in fractal heap & indexed with v2 B-tree */
0047 } H5G_storage_type_t;
0048 //! <!-- [H5G_storage_t_snip] -->
0049 
0050 //! <!-- [H5G_info_t_snip] -->
0051 /**
0052  * Information struct for group for
0053  * H5Gget_info(), H5Gget_info_by_name(), and H5Gget_info_by_idx()
0054  */
0055 typedef struct H5G_info_t {
0056     H5G_storage_type_t storage_type; /**< Type of storage for links in group */
0057     hsize_t            nlinks;       /**< Number of links in group */
0058     int64_t            max_corder;   /**< Current max. creation order value for group */
0059     hbool_t            mounted;      /**< Whether group has a file mounted on it */
0060 } H5G_info_t;
0061 //! <!-- [H5G_info_t_snip] -->
0062 
0063 /********************/
0064 /* Public Variables */
0065 /********************/
0066 
0067 /*********************/
0068 /* Public Prototypes */
0069 /*********************/
0070 #ifdef __cplusplus
0071 extern "C" {
0072 #endif
0073 
0074 /**
0075  *-------------------------------------------------------------------------
0076  * \ingroup H5G
0077  *
0078  * \brief Creates a new group and links it into the file
0079  *
0080  * \fgdta_loc_id
0081  * \param[in] name      Name of the group to create
0082  * \lcpl_id
0083  * \gcpl_id
0084  * \gapl_id
0085  *
0086  * \return \hid_t{group}
0087  *
0088  * \details H5Gcreate2() creates a new group in a file. After a
0089  *          group has been created, links to datasets and to other groups
0090  *          can be added.
0091  *
0092  *          The \p loc_id and \p name parameters specify where the group
0093  *          is located. \p loc_id may be a file, group, dataset, named
0094  *          datatype or attribute in the file. If an attribute, dataset,
0095  *          or named datatype is specified for \p loc_id then the group
0096  *          will be created at the location where the attribute, dataset,
0097  *          or named datatype is attached. \p name is the link to the group;
0098  *          \p name may be either an absolute path in the file (the links
0099  *          from the root group to the new group) or a relative path from
0100  *          \p loc_id (the link(s) from the group specified by \p loc_id
0101  *          to the new group).
0102  *
0103  *          \p lcpl_id, \p gcpl_id, and \p gapl_id are property list
0104  *          identifiers. These property lists govern how the link to the
0105  *          group is created, how the group is created, and how the group
0106  *          can be accessed in the future, respectively. #H5P_DEFAULT can
0107  *          be passed in if the default properties are appropriate for
0108  *          these property lists. Currently, there are no APIs for the
0109  *          group access property list; use #H5P_DEFAULT.
0110  *
0111  *          The group identifier should be closed by H5Gclose() when access
0112  *          is no longer required to prevent resource leaks.
0113  *
0114  * \since 1.8.0
0115  *
0116  * \see H5Gopen2()
0117  *
0118  */
0119 H5_DLL hid_t H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id);
0120 
0121 /**
0122  * --------------------------------------------------------------------------
0123  * \ingroup ASYNC
0124  * \async_variant_of{H5Gcreate}
0125  */
0126 #ifndef H5_DOXYGEN
0127 H5_DLL hid_t H5Gcreate_async(const char *app_file, const char *app_func, unsigned app_line, hid_t loc_id,
0128                              const char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id, hid_t es_id);
0129 #else
0130 H5_DLL hid_t  H5Gcreate_async(hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id,
0131                               hid_t es_id);
0132 #endif
0133 
0134 /**
0135  *-------------------------------------------------------------------------
0136  * \ingroup H5G
0137  *
0138  * \brief Creates a new empty group without linking it into the file structure
0139  *
0140  * \fgdta_loc_id
0141  * \gcpl_id
0142  * \gapl_id
0143  *
0144  * \return \hid_t{group}
0145  *
0146  * \details H5Gcreate_anon() creates a new empty group in the file
0147  *          specified by \p loc_id. With default settings, H5Gcreate_anon()
0148  *          provides similar functionality to that provided by
0149  *          H5Gcreate1(), with the differences described in the list below.
0150  *
0151  *          The new group's creation and access properties are specified
0152  *          in \p gcpl_id and \p gapl_id, respectively.
0153  *
0154  *          H5Gcreate_anon() returns a new group identifier. This identifier
0155  *          must be linked into the HDF5 file structure with H5Olink()
0156  *          or it will be deleted from the file when the file is closed.
0157  *
0158  *          The differences between this function and H5Gcreate1() are
0159  *          as follows:
0160  *
0161  *          \li H5Gcreate1() does not provide for the use of custom property
0162  *              lists; H5Gcreate1() always uses default properties.
0163  *          \li H5Gcreate_anon() neither provides the new group's name
0164  *              nor links it into the HDF5 file structure; those actions
0165  *              must be performed separately through a call to H5Olink(),
0166  *              which offers greater control over linking.
0167  *          \li H5Gcreate_anon() does not directly provide a hint mechanism
0168  *              for the group's heap size. Comparable information can be
0169  *              included in the group creation property list \p gcpl_id through
0170  *              a H5Pset_local_heap_size_hint() call.
0171  *
0172  *          A group created with this function should be closed with
0173  *          H5Gclose() when the group is no longer needed so that resource
0174  *          leaks will not develop.
0175  *
0176  * \see H5Olink(), H5Gcreate()
0177  *
0178  * \since 1.8.0
0179  *
0180  */
0181 H5_DLL hid_t H5Gcreate_anon(hid_t loc_id, hid_t gcpl_id, hid_t gapl_id);
0182 
0183 /**
0184  *-------------------------------------------------------------------------
0185  * \ingroup H5G
0186  *
0187  * \brief Opens an existing group in a file
0188  *
0189  * \fgdta_loc_id
0190  * \param[in] name      Name of the group to open
0191  * \gapl_id
0192  *
0193  * \return \hid_t{group}
0194  *
0195  * \details H5Gopen2() opens an existing group, \p name, at the location
0196  *          specified by \p loc_id.
0197  *
0198  *          With default settings, H5Gopen2() provides similar functionality
0199  *          to that provided by H5Gopen(). The only difference is that
0200  *          H5Gopen2() can provide a group access property list, \p gapl_id.
0201  *
0202  *          H5Gopen2() returns a group identifier for the group that was
0203  *          opened. This group identifier should be released by H5Gclose()
0204  *          when it is no longer needed to prevent resource leaks.
0205  *
0206  * \since 1.8.0
0207  *
0208  * \see H5Gcreate2()
0209  *
0210  */
0211 H5_DLL hid_t H5Gopen2(hid_t loc_id, const char *name, hid_t gapl_id);
0212 
0213 /**
0214  * --------------------------------------------------------------------------
0215  * \ingroup ASYNC
0216  * \async_variant_of{H5Gopen}
0217  *
0218  * \since 1.12.0
0219  *
0220  */
0221 #ifndef H5_DOXYGEN
0222 H5_DLL hid_t H5Gopen_async(const char *app_file, const char *app_func, unsigned app_line, hid_t loc_id,
0223                            const char *name, hid_t gapl_id, hid_t es_id);
0224 #else
0225 H5_DLL hid_t  H5Gopen_async(hid_t loc_id, const char *name, hid_t gapl_id, hid_t es_id);
0226 #endif
0227 
0228 /**
0229  *-------------------------------------------------------------------------
0230  * \ingroup H5G
0231  *
0232  * \brief Gets a group creation property list identifier
0233  *
0234  * \group_id
0235  *
0236  * \return \hid_t{creation property list}
0237  *
0238  * \details H5Gget_create_plist() returns an identifier for the group creation
0239  *          property list associated with the group specified by \p group_id.
0240  *
0241  *          The creation property list identifier should be released with
0242  *          H5Pclose() to prevent resource leaks.
0243  *
0244  * \since 1.8.0
0245  *
0246  */
0247 H5_DLL hid_t H5Gget_create_plist(hid_t group_id);
0248 
0249 /**
0250  *-------------------------------------------------------------------------
0251  * \ingroup H5G
0252  *
0253  * \brief Retrieves information about a group
0254  *
0255  * \fgdta_loc_id
0256  * \param[out] ginfo Struct in which group information is returned
0257  *
0258  * \return \hid_t{group}
0259  *
0260  * \details H5Gget_info() retrieves information about the group at location
0261  *          specified by \p loc_id. The information is returned in the \p ginfo.
0262  *
0263  *          \p ginfo is an H5G_info_t struct and is defined (in H5Gpublic.h)
0264  *          as follows:
0265  *
0266  * \snippet this H5G_info_t_snip
0267  * Possible values of \p storage_type are:
0268  * \storage_type
0269  *
0270  * \since 1.8.0
0271  *
0272  */
0273 H5_DLL herr_t H5Gget_info(hid_t loc_id, H5G_info_t *ginfo);
0274 
0275 /**
0276  * --------------------------------------------------------------------------
0277  * \ingroup ASYNC
0278  * \async_variant_of{H5Gget_info}
0279  *
0280  * \since 1.12.0
0281  *
0282  */
0283 #ifndef H5_DOXYGEN
0284 H5_DLL herr_t H5Gget_info_async(const char *app_file, const char *app_func, unsigned app_line, hid_t loc_id,
0285                                 H5G_info_t *ginfo /*out*/, hid_t es_id);
0286 #else
0287 H5_DLL herr_t H5Gget_info_async(hid_t loc_id, H5G_info_t *ginfo /*out*/, hid_t es_id);
0288 #endif
0289 
0290 /**
0291  *-------------------------------------------------------------------------
0292  * \ingroup H5G
0293  *
0294  * \brief Retrieves information about a group by its name
0295  *
0296  * \fgdta_loc_id
0297  * \param[in] name      Name of the group to query
0298  * \param[out] ginfo Struct in which group information is returned
0299  * \lapl_id
0300  *
0301  * \return \herr_t
0302  *
0303  * \details H5Gget_info_by_name() retrieves information about the group \p name
0304  *          at location specified by \p loc_id. The information is returned in
0305  *          the \p ginfo struct.
0306  *
0307  *          If \p loc_id specifies the group for which information is queried,
0308  *          then the group's \p name can be a dot (.).
0309  *
0310  *          \p ginfo is an H5G_info_t struct and is defined (in H5Gpublic.h)
0311  *          as follows:
0312  *
0313  * \snippet this H5G_info_t_snip
0314  * Possible values of \p storage_type are:
0315  * \storage_type
0316  *
0317  * \since 1.8.0
0318  *
0319  */
0320 H5_DLL herr_t H5Gget_info_by_name(hid_t loc_id, const char *name, H5G_info_t *ginfo, hid_t lapl_id);
0321 
0322 /**
0323  * --------------------------------------------------------------------------
0324  * \ingroup ASYNC
0325  * \async_variant_of{H5Gget_info_by_name}
0326  *
0327  * \since 1.12.0
0328  *
0329  */
0330 #ifndef H5_DOXYGEN
0331 H5_DLL herr_t H5Gget_info_by_name_async(const char *app_file, const char *app_func, unsigned app_line,
0332                                         hid_t loc_id, const char *name, H5G_info_t *ginfo /*out*/,
0333                                         hid_t lapl_id, hid_t es_id);
0334 #else
0335 H5_DLL herr_t H5Gget_info_by_name_async(hid_t loc_id, const char *name, H5G_info_t *ginfo /*out*/,
0336                                         hid_t lapl_id, hid_t es_id);
0337 #endif
0338 
0339 /**
0340  *-------------------------------------------------------------------------
0341  * \ingroup H5G
0342  *
0343  * \brief Retrieves information about a group, according to the group's
0344  *        position within an index
0345  *
0346  * \fgdta_loc_id
0347  * \param[in] group_name Name of the group to query
0348  * \param[in] idx_type   Transient index identifying object
0349  * \param[in] order      Transient index identifying object
0350  * \param[in] n          Position in the index of the group to query
0351  * \param[out] ginfo     Struct in which group information is returned
0352  * \lapl_id
0353  *
0354  * \return Returns
0355  *      \li The size of the object name if successful, or
0356  *      \li 0 if no name is associated with the group identifier, or
0357  *      \li negative value, if failure occurred
0358  *
0359  * \details H5Gget_info_by_idx() retrieves the same information
0360  *          about a group as retrieved by the function H5Gget_info(),
0361  *          but the means of identifying the group differs; the group is
0362  *          identified by position in an index rather than by name.
0363  *
0364  *          \p loc_id and \p group_name specify the group containing
0365  *          the group for which information is sought. The groups in \p
0366  *          group_name are indexed by \p idx_type; the group for which
0367  *          information is retrieved is identified in that index by index
0368  *          order, \p order, and index position, \p n.
0369  *
0370  *          If \p loc_id specifies the group containing the group for
0371  *          which information is queried, \p group_name can be a dot (.).
0372  *
0373  *          Valid values for \p index_type are as follows:
0374  * \indexes
0375  *          The order in which the index is to be examined, as specified
0376  *          by \p order, can be one of the following:
0377  * \orders
0378  *
0379  * \since 1.8.0
0380  *
0381  */
0382 H5_DLL herr_t H5Gget_info_by_idx(hid_t loc_id, const char *group_name, H5_index_t idx_type,
0383                                  H5_iter_order_t order, hsize_t n, H5G_info_t *ginfo, hid_t lapl_id);
0384 
0385 /**
0386  * --------------------------------------------------------------------------
0387  * \ingroup ASYNC
0388  * \async_variant_of{H5Gget_info_by_idx}
0389  *
0390  * \since 1.12.0
0391  *
0392  */
0393 #ifndef H5_DOXYGEN
0394 H5_DLL herr_t H5Gget_info_by_idx_async(const char *app_file, const char *app_func, unsigned app_line,
0395                                        hid_t loc_id, const char *group_name, H5_index_t idx_type,
0396                                        H5_iter_order_t order, hsize_t n, H5G_info_t *ginfo /*out*/,
0397                                        hid_t lapl_id, hid_t es_id);
0398 #else
0399 H5_DLL herr_t H5Gget_info_by_idx_async(hid_t loc_id, const char *group_name, H5_index_t idx_type,
0400                                        H5_iter_order_t order, hsize_t n, H5G_info_t *ginfo /*out*/,
0401                                        hid_t lapl_id, hid_t es_id);
0402 #endif
0403 
0404 /**
0405  *-------------------------------------------------------------------------
0406  * \ingroup H5G
0407  *
0408  * \brief Flushes all buffers associated with a group to disk
0409  *
0410  * \group_id
0411  *
0412  * \return \herr_t
0413  *
0414  * \details H5Gflush() causes all buffers associated with a group to be
0415  *          immediately flushed to the disk without removing the data from
0416  *          the cache.
0417  *
0418  * \attention
0419  *          HDF5 does not possess full control over buffering. H5G_FLUSH
0420  *          flushes the internal HDF5 buffers and then asks the operating
0421  *          system (the OS) to flush the system buffers for the open
0422  *          files. After that, the OS is responsible for ensuring that
0423  *          the data is actually flushed to the disk.
0424  *
0425  * \since 1.8.0
0426  *
0427  */
0428 H5_DLL herr_t H5Gflush(hid_t group_id);
0429 
0430 /**
0431  *-------------------------------------------------------------------------
0432  * \ingroup H5G
0433  *
0434  * \brief Refreshes all buffers associated with a group
0435  *
0436  * \group_id
0437  *
0438  * \return \herr_t
0439  *
0440  * \details H5Grefresh() causes all buffers associated with a group to be
0441  *          cleared and immediately re-loaded with updated contents from disk.
0442  *
0443  *          This function essentially closes the group, evicts all
0444  *          metadata associated with it from the cache, and then reopens
0445  *          the group. The reopened group is automatically re-registered
0446  *          with the same identifier.
0447  *
0448  * \since 1.8.0
0449  *
0450  */
0451 H5_DLL herr_t H5Grefresh(hid_t group_id);
0452 
0453 /**
0454  *-------------------------------------------------------------------------
0455  * \ingroup H5G
0456  *
0457  * \brief Closes the specified group
0458  *
0459  * \group_id
0460  *
0461  * \return \herr_t
0462  *
0463  * \details H5Gclose() releases resources used by a group that was
0464  *          opened by H5Gcreate() or H5Gopen().  After closing a group,
0465  *          \p group_id cannot be used again until another H5Gcreate()
0466  *          or H5Gopen() is called on it.
0467  *
0468  *          Failure to release a group with this call will result in
0469  *          resource leaks.
0470  *
0471  * \par Example
0472  * \snippet H5F_examples.c mount
0473  *
0474  * \since 1.0.0
0475  *
0476  */
0477 H5_DLL herr_t H5Gclose(hid_t group_id);
0478 
0479 /**
0480  * --------------------------------------------------------------------------
0481  * \ingroup ASYNC
0482  * \async_variant_of{H5Gclose}
0483  *
0484  * \since 1.12.0
0485  *
0486  */
0487 #ifndef H5_DOXYGEN
0488 H5_DLL herr_t H5Gclose_async(const char *app_file, const char *app_func, unsigned app_line, hid_t group_id,
0489                              hid_t es_id);
0490 #else
0491 H5_DLL herr_t H5Gclose_async(hid_t group_id, hid_t es_id);
0492 #endif
0493 
0494 /// \cond DEV
0495 /* API Wrappers for async routines */
0496 /* (Must be defined _after_ the function prototype) */
0497 /* (And must only defined when included in application code, not the library) */
0498 #ifndef H5G_MODULE
0499 #define H5Gcreate_async(...)           H5Gcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
0500 #define H5Gopen_async(...)             H5Gopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
0501 #define H5Gget_info_async(...)         H5Gget_info_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
0502 #define H5Gget_info_by_name_async(...) H5Gget_info_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
0503 #define H5Gget_info_by_idx_async(...)  H5Gget_info_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
0504 #define H5Gclose_async(...)            H5Gclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
0505 
0506 /* Define "wrapper" versions of function calls, to allow compile-time values to
0507  *      be passed in by language wrapper or library layer on top of HDF5.
0508  */
0509 #define H5Gcreate_async_wrap           H5_NO_EXPAND(H5Gcreate_async)
0510 #define H5Gopen_async_wrap             H5_NO_EXPAND(H5Gopen_async)
0511 #define H5Gget_info_async_wrap         H5_NO_EXPAND(H5Gget_info_async)
0512 #define H5Gget_info_by_name_async_wrap H5_NO_EXPAND(H5Gget_info_by_name_async)
0513 #define H5Gget_info_by_idx_async_wrap  H5_NO_EXPAND(H5Gget_info_by_idx_async)
0514 #define H5Gclose_async_wrap            H5_NO_EXPAND(H5Gclose_async)
0515 #endif /* H5G_MODULE */
0516 /// \endcond
0517 
0518 /* Symbols defined for compatibility with previous versions of the HDF5 API.
0519  *
0520  * Use of these symbols is deprecated.
0521  */
0522 #ifndef H5_NO_DEPRECATED_SYMBOLS
0523 
0524 /* Macros */
0525 
0526 /* Link definitions */
0527 #define H5G_SAME_LOC   H5L_SAME_LOC
0528 #define H5G_LINK_ERROR H5L_TYPE_ERROR
0529 #define H5G_LINK_HARD  H5L_TYPE_HARD
0530 #define H5G_LINK_SOFT  H5L_TYPE_SOFT
0531 #define H5G_link_t     H5L_type_t
0532 
0533 /* Macros for types of objects in a group (see H5G_obj_t definition) */
0534 #define H5G_NTYPES      256 /* Max possible number of types */
0535 #define H5G_NLIBTYPES   8   /* Number of internal types */
0536 #define H5G_NUSERTYPES  (H5G_NTYPES - H5G_NLIBTYPES)
0537 #define H5G_USERTYPE(X) (8 + (X)) /* User defined types     */
0538 
0539 /* Typedefs */
0540 
0541 //! <!-- [H5G_obj_t_snip] -->
0542 /**
0543  * An object has a certain type. The first few numbers are reserved for use
0544  * internally by HDF5. Users may add their own types with higher values.  The
0545  * values are never stored in the file -- they only exist while an application
0546  * is running.  An object may satisfy the `isa' function for more than one type.
0547  *
0548  * \deprecated
0549  */
0550 typedef enum H5G_obj_t {
0551     H5G_UNKNOWN = -1, /**< Unknown object type      */
0552     H5G_GROUP,        /**< Object is a group        */
0553     H5G_DATASET,      /**< Object is a dataset      */
0554     H5G_TYPE,         /**< Object is a named data type  */
0555     H5G_LINK,         /**< Object is a symbolic link    */
0556     H5G_UDLINK,       /**< Object is a user-defined link */
0557     H5G_RESERVED_5,   /**< Reserved for future use  */
0558     H5G_RESERVED_6,   /**< Reserved for future use  */
0559     H5G_RESERVED_7    /**< Reserved for future use  */
0560 } H5G_obj_t;
0561 //! <!-- [H5G_obj_t_snip] -->
0562 
0563 //! <!-- [H5G_iterate_t_snip] -->
0564 /**
0565  * Callback for H5Giterate()
0566  *
0567  * \deprecated
0568  */
0569 typedef herr_t (*H5G_iterate_t)(hid_t group, const char *name, void *op_data);
0570 //! <!-- [H5G_iterate_t_snip] -->
0571 
0572 //! <!-- [H5G_stat_t_snip] -->
0573 /**
0574  * Information about an object
0575  *
0576  * \deprecated
0577  */
0578 typedef struct H5G_stat_t {
0579     unsigned long fileno[2]; /**< file number           */
0580     unsigned long objno[2];  /**< object number         */
0581     unsigned      nlink;     /**< number of hard links to object*/
0582     H5G_obj_t     type;      /**< basic object type     */
0583     time_t        mtime;     /**< modification time     */
0584     size_t        linklen;   /**< symbolic link value length    */
0585     H5O_stat_t    ohdr;      /**< Object header information    */
0586 } H5G_stat_t;
0587 //! <!-- [H5G_stat_t_snip] -->
0588 
0589 /* Function prototypes */
0590 /**
0591  *-------------------------------------------------------------------------
0592  * \ingroup H5G
0593  *
0594  * \brief Creates a new group and links it into the file
0595  *
0596  * \fgdta_loc_id
0597  * \param[in] name      Name of the group to create
0598  * \param[in] size_hint The number of bytes to reserve for the names
0599  *                      that will appear in the group
0600  *
0601  * \return \hid_t{group}
0602  *
0603  * \deprecated This function is deprecated in favor of H5Gcreate2().
0604  *
0605  * \details H5Gcreate1() creates a new group with the specified name at the
0606  *          specified location, \p loc_id.  \p loc_id may be a file, group,
0607  *          dataset, named datatype or attribute.  If an attribute, dataset, or
0608  *          named datatype is specified for \p loc_id then the group will be
0609  *          created at the location where the attribute, dataset, or named
0610  *          datatype is attached. The name, name, must not already be taken by
0611  *          some other object and all parent groups must already exist.
0612  *
0613  *          \p name can be a relative path based at \p loc_id or an absolute
0614  *          path from the root of the file. Use of this function requires that
0615  *          any intermediate groups specified in the path already exist.
0616  *
0617  *          The length of a group name, or of the name of any object within a
0618  *          group, is not limited.
0619  *
0620  *          \p size_hint is a hint for the number of bytes to reserve to store
0621  *          the names which will be eventually added to the new group. This
0622  *          value must be between 0 and UINT32_MAX (inclusive). If this
0623  *          parameter is zero, a default value will be used.
0624  *
0625  *          The return value is a group identifier for the open group. This
0626  *          group identifier should be closed by calling H5Gclose() when it is
0627  *          no longer needed.
0628  *
0629  *          See H5Gcreate_anon() for a discussion of the differences between
0630  *          H5Gcreate1() and H5Gcreate_anon().
0631  *
0632  * \par Example
0633  * \snippet H5F_examples.c mount
0634  *
0635  * \version 1.8.0 Function H5Gcreate() renamed to H5Gcreate1() and deprecated
0636  *                in this release.
0637  * \since 1.0.0
0638  *
0639  */
0640 H5_DLL hid_t H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint);
0641 /**
0642  *-------------------------------------------------------------------------
0643  * \ingroup H5G
0644  *
0645  * \brief Opens an existing group for modification and returns a group
0646  *        identifier for that group
0647  *
0648  * \fgdta_loc_id
0649  * \param[in] name      Name of the group to open
0650  *
0651  * \return \hid_t{group}
0652  *
0653  * \deprecated This function is deprecated in favor of H5Gopen2().
0654  *
0655  * \details H5Gopen1() opens an existing group, \p name, at the location
0656  *          specified by \p loc_id.
0657  *
0658  *          H5Gopen1() returns a group identifier for the group that was
0659  *          opened. This group identifier should be released by calling
0660  *          H5Gclose() when it is no longer needed.
0661  *
0662  * \version 1.8.0 The function H5Gopen() was renamed to H5Gopen1()
0663  *                and deprecated in this release.
0664  * \since 1.0.0
0665  *
0666  */
0667 H5_DLL hid_t H5Gopen1(hid_t loc_id, const char *name);
0668 /**
0669  *-------------------------------------------------------------------------
0670  * \ingroup H5G
0671  *
0672  * \brief Creates a link of the specified type from \p new_name to \p
0673  *        cur_name
0674  *
0675  * \fg_loc_id{cur_loc_id}
0676  * \param[in] type Link type
0677  * \param[in] cur_name Name of the existing object
0678  * \param[in] new_name New name for the object
0679  *
0680  * \return \herr_t
0681  *
0682  * \deprecated This function is deprecated.
0683  *
0684  * \details H5Glink() creates a new name for an object that has some current
0685  *          name, possibly one of many names it currently has.
0686  *
0687  *          If \p link_type is #H5G_LINK_HARD, then \p cur_name must specify
0688  *          the name of an existing object and both names are interpreted
0689  *          relative to \p cur_loc_id, which is either a file identifier or a
0690  *          group identifier.
0691  *
0692  *          If \p link_type is #H5G_LINK_SOFT, then \p cur_name can be anything
0693  *          and is interpreted at lookup time relative to the group which
0694  *          contains the final component of \p new_name. For instance, if \p
0695  *          cur_name is \TText{./foo}, \p new_name is \TText{./x/y/bar}, and a
0696  *          request is made for \TText{./x/y/bar}, then the actual object looked
0697  *          up is \TText{./x/y/./foo}.
0698 
0699  * \version 1.8.0 Function deprecated in this release.
0700  *
0701  * \since 1.0.0
0702  *
0703  */
0704 H5_DLL herr_t H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name, const char *new_name);
0705 /**
0706  *-------------------------------------------------------------------------
0707  * \ingroup H5G
0708  *
0709  * \brief Creates a link of the specified type from \p cur_name to \p
0710  *        new_name
0711  *
0712  * \fg_loc_id{cur_loc_id}
0713  * \param[in] cur_name Name of the existing object
0714  * \param[in] type Link type
0715  * \fg_loc_id{new_loc_id}
0716  * \param[in] new_name New name for the object
0717  *
0718  * \return \herr_t
0719  *
0720  * \deprecated This function is deprecated.
0721  *
0722  * \details H5Glink2() creates a new name for an object that has some current
0723  *          name, possibly one of many names it currently has.
0724  *
0725  *          If \p link_type is #H5G_LINK_HARD, then \p cur_name must specify the
0726  *          name of an existing object and both names are interpreted relative
0727  *          to \p cur_loc_id and \p new_loc_id, respectively, which are either
0728  *          file identifiers or group identifiers.
0729  *
0730  *          If \p link_type is #H5G_LINK_SOFT, then \p cur_name can be anything
0731  *          and is interpreted at lookup time relative to the group which
0732  *          contains the final component of \p new_name. For instance, if \p
0733  *          current_name is \TText{./foo}, \p new_name is \TText{./x/y/bar}, and a
0734  *          request is made for \TText{./x/y/bar}, then the actual object looked
0735  *          up is \TText{./x/y/./foo}.
0736  *
0737  * \version 1.8.0 Function deprecated in this release.
0738  *
0739  * \since 1.6.0
0740  *
0741  */
0742 H5_DLL herr_t H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t type, hid_t new_loc_id,
0743                        const char *new_name);
0744 /**
0745  *-------------------------------------------------------------------------
0746  * \ingroup H5G
0747  *
0748  * \brief Renames an object within an HDF5 file
0749  *
0750  * \fg_loc_id{src_loc_id}
0751  * \param[in] src_name Object's original name
0752  * \param[in] dst_name Object's new name
0753  *
0754  * \return \herr_t
0755  *
0756  * \deprecated This function is deprecated.
0757  *
0758  * \details H5Gmove() renames an object within an HDF5 file. The original name,
0759  *          \p src_name, is unlinked from the group graph and the new name, \p
0760  *          dst_name, is inserted as an atomic operation. Both names are
0761  *          interpreted relative to \p loc_id, which is either a file or a group
0762  *          identifier.
0763  *
0764  * \attention Exercise care in moving groups as it is possible to render data in
0765  *            a file inaccessible with H5Gmove(). See The Group Interface in the
0766  *            \ref UG.
0767  *
0768  * \version 1.8.0 Function deprecated in this release.
0769  *
0770  * \since 1.0.0
0771  *
0772  */
0773 H5_DLL herr_t H5Gmove(hid_t src_loc_id, const char *src_name, const char *dst_name);
0774 /**
0775  *-------------------------------------------------------------------------
0776  * \ingroup H5G
0777  *
0778  * \brief Renames an object within an HDF5 file
0779  *
0780  * \fg_loc_id{src_loc_id}
0781  * \param[in] src_name Object's original name
0782  * \fg_loc_id{dst_loc_id}
0783  * \param[in] dst_name Object's new name
0784  *
0785  * \return \herr_t
0786  *
0787  * \deprecated This function is deprecated.
0788  *
0789  * \details H5Gmove2() renames an object within an HDF5 file. The original name,
0790  *          \p src_name, is unlinked from the group graph and the new name, \p
0791  *          dst_name, is inserted as an atomic operation.
0792  *
0793  *          \p src_name and \p dst_name are interpreted relative to \p
0794  *          src_loc_id and \p dst_loc_id, respectively, which are either file or
0795  *          group identifiers.
0796  *
0797  * \attention Exercise care in moving groups as it is possible to render data in
0798  *            a file inaccessible with H5Gmove2(). See The Group Interface in the
0799  *            \ref UG.
0800  *
0801  * \version 1.8.0 Function deprecated in this release.
0802  *
0803  * \since 1.6.0
0804  *
0805  */
0806 H5_DLL herr_t H5Gmove2(hid_t src_loc_id, const char *src_name, hid_t dst_loc_id, const char *dst_name);
0807 /**
0808  *-------------------------------------------------------------------------
0809  * \ingroup H5G
0810  *
0811  * \brief Removes the link to an object from a group
0812  *
0813  * \fg_loc_id{loc_id}
0814  * \param[in] name Name of the object to unlink
0815  *
0816  * \return \herr_t
0817  *
0818  * \deprecated This function is deprecated in favor of the function H5Ldelete().
0819  *
0820  * \details H5Gunlink() removes the object specified by \p name from the group
0821  *          graph and decrements the link count for the object to which \p name
0822  *          points. This action eliminates any association between name and the
0823  *          object to which name pointed.
0824  *
0825  *          Object headers keep track of how many hard links refer to an object;
0826  *          when the link count reaches zero, the object can be removed from the
0827  *          file. Objects which are open are not removed until all identifiers
0828  *          to the object are closed.
0829  *
0830  *          If the link count reaches zero, all file space associated with the
0831  *          object will be released, i.e., identified in memory as freespace. If
0832  *          any object identifier is open for the object, the space will not be
0833  *          released until after the object identifier is closed.
0834  *
0835  *          Note that space identified as freespace is available for reuse only
0836  *          as long as the file remains open; once a file has been closed, the
0837  *          HDF5 library loses track of freespace. See “Freespace Management” in
0838  *          the \ref UG for further details.
0839  *
0840  * \attention Exercise care in moving groups as it is possible to render data in
0841  *            a file inaccessible with H5Gunlink(). See The Group Interface in the
0842  *            \ref UG.
0843  *
0844  * \version 1.8.0 Function deprecated in this release.
0845  *
0846  * \since 1.0.0
0847  *
0848  */
0849 H5_DLL herr_t H5Gunlink(hid_t loc_id, const char *name);
0850 /**
0851  *-------------------------------------------------------------------------
0852  * \ingroup H5G
0853  *
0854  * \brief Returns the name of the object that the symbolic link points to
0855  *
0856  * \fg_loc_id{loc_id}
0857  * \param[in] name Symbolic link to the object whose name is to be returned
0858  * \param[in] size Maximum number of characters of value to be returned
0859  * \param[out] buf A buffer to hold the name of the object being sought
0860  *
0861  * \return \herr_t
0862  *
0863  * \deprecated This function is deprecated in favor of the function H5Lget_val().
0864  *
0865  * \details H5Gget_linkval() returns up to size characters of the name of the
0866  *          object that the symbolic link name points to.
0867  *
0868  *          The parameter \p loc_id is a file or group identifier.
0869  *
0870  *          The parameter \p name must be a symbolic link pointing to the
0871  *          desired object and must be defined relative to \p loc_id.
0872  *
0873  *          If size is smaller than the size of the returned object name, then
0874  *          the name stored in the buffer value will not be \c NULL terminated.
0875  *
0876  *          This function fails if \p name is not a symbolic link. The presence
0877  *          of a symbolic link can be tested by passing zero for \p size and \p
0878  *          NULL for value.
0879  *
0880  *          This function should be used only after H5Lget_info1() (or the
0881  *          deprecated function H5Gget_objinfo()) has been called to verify that
0882  *          name is a symbolic link.
0883  *
0884  * \version 1.8.0 Function deprecated in this release.
0885  *
0886  * \since 1.0.0
0887  *
0888  */
0889 H5_DLL herr_t H5Gget_linkval(hid_t loc_id, const char *name, size_t size, char *buf /*out*/);
0890 /**
0891  *-------------------------------------------------------------------------
0892  * \ingroup H5G
0893  *
0894  * \brief Sets comment for specified object
0895  *
0896  * \fgdt_loc_id
0897  * \param[in] name Name of the object whose comment is to be set or reset
0898  *                 name must be \TText{'.'} (dot) if \p loc_id fully specifies
0899  *                 the object for which the comment is to be set.
0900  * \param[in] comment The new comment
0901  *
0902  * \return \herr_t
0903  *
0904  * \deprecated This function is deprecated in favor of the function
0905  *             H5Oset_comment().
0906  *
0907  * \details H5Gset_comment() sets the comment for the object specified by \p
0908  *          loc_id and name to comment. Any previously existing comment is
0909  *          overwritten.
0910  *
0911  *          \p loc_id can specify any object in the file. name can be one of the
0912  *          following:
0913  *          \li The name of the object relative to \p loc_id
0914  *          \li An absolute name of the object, starting from \c /, the file's
0915  *              root group
0916  *          \li A dot (\c .), if \p loc_id fully specifies the object
0917  *
0918  *          If \p comment is the empty string or a null pointer, the comment
0919  *          message is removed from the object.
0920  *
0921  *          Comments should be relatively short, null-terminated, ASCII strings.
0922  *
0923  *          Comments can be attached to any object that has an object header,
0924  *          e.g., datasets, groups, and named datatypes, but not symbolic links.
0925  *
0926  * \version 1.8.0 Function deprecated in this release.
0927  *
0928  * \since 1.0.0
0929  *
0930  */
0931 H5_DLL herr_t H5Gset_comment(hid_t loc_id, const char *name, const char *comment);
0932 /**
0933  *-------------------------------------------------------------------------
0934  * \ingroup H5G
0935  *
0936  * \brief Retrieves comment for specified object
0937  *
0938  * \fgdt_loc_id
0939  * \param[in] name Name of the object whose comment is to be set or reset
0940  *                 name must be \TText{'.'} (dot) if \p loc_id fully specifies
0941  *                 the object for which the comment is to be set.
0942  * \param[in] bufsize Maximum number of comment characters to be returned in \p buf.
0943  * \param[in] buf The comment
0944  *
0945  * \return Returns the number of characters in the comment, counting the \c NULL
0946  *         terminator, if successful; the value returned may be larger than
0947  *         \p bufsize. Otherwise returns a negative value.
0948  *
0949  * \deprecated This function is deprecated in favor of the function
0950  *             H5Oget_comment().
0951  *
0952  * \details H5Gget_comment() retrieves the comment for the object specified
0953  *          by \p loc_id and \p name. The comment is returned in the buffer \p
0954  *          buf.
0955  *
0956  *          \p loc_id can specify any object in the file. name can be one of the
0957  *          following:
0958  *          \li The name of the object relative to \p loc_id
0959  *          \li An absolute name of the object, starting from \c /, the file's
0960  *              root group
0961  *          \li A dot (\c .), if \p loc_id fully specifies the object
0962  *
0963  *          \details_namelen{comment,H5Gget_comment}
0964  *
0965  *          If an object does not have a comment, the empty string is returned
0966  *          in comment.
0967  *
0968  * \version 1.8.0 Function deprecated in this release.
0969  *
0970  * \since 1.0.0
0971  *
0972  */
0973 H5_DLL int H5Gget_comment(hid_t loc_id, const char *name, size_t bufsize, char *buf);
0974 /**
0975  *-------------------------------------------------------------------------
0976  * \ingroup H5G
0977  *
0978  * \brief Iterates over the entries of a group invoking a callback for each
0979  *        entry encountered
0980  *
0981  * \fg_loc_id
0982  * \param[in] name Group over which the iteration is performed
0983  * \param[in,out] idx Location at which to begin the iteration
0984  * \param[in] op Operation to be performed on an object at each step of the
0985  *               iteration
0986  * \param[in,out] op_data Data associated with the operation
0987  *
0988  * \return \herr_t
0989  *
0990  * \deprecated This function is deprecated in favor of the function
0991  *             H5Literate1().
0992  *
0993  * \details H5Giterate() iterates over the members of name in the file or group
0994  *          specified with \p loc_id. For each object in the group, the \p
0995  *          op_data and some additional information, specified below, are passed
0996  *          to the operator function. The iteration begins with the \p idx
0997  *          object in the group and the next element to be processed by the
0998  *          operator is returned in \p idx. If \p idx is NULL, then the iterator
0999  *          starts at the first group member; since no stopping point is
1000  *          returned in this case, the iterator cannot be restarted if one of
1001  *          the calls to its operator returns non-zero. H5Giterate() does not
1002  *          recursively follow links into subgroups of the specified group.
1003  *
1004  *          The prototype for \ref H5G_iterate_t is:
1005  *          \snippet this H5G_iterate_t_snip
1006  *
1007  *          The operation receives the group identifier for the group being
1008  *          iterated over, \p group, the name of the current object within
1009  *          the group, \p name, and the pointer to the operator data
1010  *          passed into H5Giterate(), \p op_data.
1011  *
1012  *          The return values from an operator are:
1013  *          \li Zero causes the iterator to continue, returning zero when all
1014  *              group members have been processed.
1015  *          \li Positive causes the iterator to immediately return that positive
1016  *              value, indicating short-circuit success. The iterator can be
1017  *              restarted at the next group member.
1018  *          \li Negative causes the iterator to immediately return that value,
1019  *              indicating failure. The iterator can be restarted at the next
1020  *              group member.
1021  *
1022  *          H5Giterate() assumes that the membership of the group identified by
1023  *          \p name remains unchanged through the iteration. If the membership
1024  *          changes during the iteration, the function's behavior is undefined.
1025  *
1026  *          H5Giterate() is not recursive. In particular, if a member of \p name
1027  *          is found to be a group, call it \c subgroup_a, H5Giterate() does not
1028  *          examine the members of \c subgroup_a. When recursive iteration is
1029  *          required, the application must handle the recursion, explicitly
1030  *          calling H5Giterate() on discovered subgroups.
1031  *
1032  * \warning  Adding or removing members to the group during iteration
1033  *           will lead to undefined behavior.
1034  *
1035  * \version 1.8.0 Function deprecated in this release.
1036  *
1037  * \since 1.0.0
1038  *
1039  */
1040 H5_DLL herr_t H5Giterate(hid_t loc_id, const char *name, int *idx, H5G_iterate_t op, void *op_data);
1041 /**
1042  *-------------------------------------------------------------------------
1043  * \ingroup H5G
1044  *
1045  * \brief Returns number of objects in the group specified by its identifier
1046  *
1047  * \fg_loc_id
1048  * \param[out] num_objs Number of objects in the group
1049  *
1050  * \return \herr_t
1051  *
1052  * \deprecated This function is deprecated in favor of the function H5Gget_info().
1053  *
1054  * \details H5Gget_num_objs() returns number of objects in a group. Group is
1055  *          specified by its identifier \p loc_id. If a file identifier is
1056  *          passed in, then the number of objects in the root group is returned.
1057  *
1058  * \version 1.8.0 Function deprecated in this release.
1059  *
1060  * \since 1.6.0
1061  *
1062  */
1063 H5_DLL herr_t H5Gget_num_objs(hid_t loc_id, hsize_t *num_objs);
1064 /**
1065  *-------------------------------------------------------------------------
1066  * \ingroup H5G
1067  *
1068  * \brief Returns information about an object.
1069  *
1070  * \fgdt_loc_id
1071  * \param[in] name Name of the object for which status is being sought
1072  * \param[in] follow_link Link flag
1073  * \param[out] statbuf Buffer in which to return information about the object
1074  *
1075  * \return \herr_t
1076  *
1077  * \deprecated This function is deprecated in favor of the functions H5Oget_info()
1078  *             and H5Lget_info1().
1079  *
1080  * \details H5Gget_objinfo() returns information about the specified object
1081  *          through the \p statbuf argument.
1082  *
1083  *          A file or group identifier, \p loc_id, and an object name, \p name,
1084  *          relative to \p loc_id, are commonly used to specify the
1085  *          object. However, if the object identifier is already known to the
1086  *          application, an alternative approach is to use that identifier, \c
1087  *          obj_id, in place of \p loc_id, and a dot (\c .) in place of \p
1088  *          name. Thus, the alternative versions of the first portion of an
1089  *          H5Gget_objinfo() call would be as follows:
1090  *          \code
1091  *          H5Gget_objinfo (loc_id name  ...)
1092  *          H5Gget_objinfo (obj_id .     ...)
1093  *          \endcode
1094  *
1095  *          If the object is a symbolic link and follow_link is zero (0), then
1096  *          the information returned describes the link itself; otherwise the
1097  *          link is followed and the information returned describes the object
1098  *          to which the link points. If \p follow_link is non-zero but the
1099  *          final symbolic link is dangling (does not point to anything), then
1100  *          an error is returned. The \p statbuf fields are undefined for an
1101  *          error. The existence of an object can be tested by calling this
1102  *          function with a \c NULL \p statbuf.
1103  *
1104  *          H5Gget_objinfo() fills in the following data structure (defined in
1105  *          H5Gpublic.h):
1106  *          \snippet this H5G_stat_t_snip
1107  *
1108  *          where \ref H5O_stat_t (defined in H5Opublic.h) is:
1109  *          \snippet H5Opublic.h H5O_stat_t_snip
1110  *
1111  * \attention Some systems will be able to record the time accurately but unable
1112  *            to retrieve the correct time; such systems (e.g., Irix64) will
1113  *            report an \c mtime value of 0 (zero).
1114  *
1115  * \version 1.8.0 Function deprecated in this release.
1116  * \version 1.6.1 Two new fields were added to the \ref H5G_stat_t struct in
1117  *                this release.
1118  *
1119  * \since 1.0.0
1120  *
1121  */
1122 H5_DLL herr_t H5Gget_objinfo(hid_t loc_id, const char *name, hbool_t follow_link,
1123                              H5G_stat_t *statbuf /*out*/);
1124 /**
1125  *-------------------------------------------------------------------------
1126  * \ingroup H5G
1127  *
1128  * \brief Returns the name of an object specified by an index
1129  *
1130  * \fg_loc_id
1131  * \param[in] idx Transient index identifying object
1132  * \param[in,out] name Pointer to user-provided buffer the object name
1133  * \param[in] size Name length
1134  *
1135  * \return Returns the size of the object name if successful, or 0 if no name is
1136  *         associated with the group identifier. Otherwise returns a negative
1137  *         value.
1138  *
1139  * \deprecated This function is deprecated in favor of the function H5Lget_name_by_idx().
1140  *
1141  * \details H5Gget_objname_by_idx() returns the name of the object specified by
1142  *          the index \p idx in the group \p loc_id.
1143  *
1144  *          The group is specified by a group identifier \p loc_id. If
1145  *          preferred, a file identifier may be passed in \p loc_id; that file's
1146  *          root group will be assumed.
1147  *
1148  *          \p idx is the transient index used to iterate through the objects in
1149  *          the group. The value of \p idx is any nonnegative number less than
1150  *          the total number of objects in the group, which is returned by the
1151  *          function H5Gget_num_objs(). Note that this is a transient index; an
1152  *          object may have a different index each time a group is opened.
1153  *
1154  *          The object name is returned in the user-specified buffer \p name.
1155  *
1156  *          If the size of the provided buffer \p name is less or equal the
1157  *          actual object name length, the object name is truncated to
1158  *          \TText{max_size - 1} characters.
1159  *
1160  *          Note that if the size of the object's name is unknown, a preliminary
1161  *          call to H5Gget_objname_by_idx() with \p name set to \c NULL will
1162  *          return the length of the object's name. A second call to
1163  *          H5Gget_objname_by_idx() can then be used to retrieve the actual
1164  *          name.
1165  *
1166  * \version 1.8.0 Function deprecated in this release.
1167  * \since 1.6.0
1168  *
1169  */
1170 H5_DLL ssize_t H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size);
1171 /**
1172  *-------------------------------------------------------------------------
1173  * \ingroup H5G
1174  *
1175  * \brief Returns the type of an object specified by an index
1176  *
1177  * \fg_loc_id
1178  * \param[in] idx Transient index identifying object
1179  *
1180  * \return Returns the type of the object if successful. Otherwise returns a
1181  *         negative value.
1182  *
1183  * \deprecated This function is deprecated in favor of the function H5Oget_info().
1184  *
1185  * \details H5Gget_objtype_by_idx() returns the type of the object specified by
1186  *          the index \p idx in the group \p loc_id.
1187  *
1188  *          The group is specified by a group identifier \p loc_id. If
1189  *          preferred, a file identifier may be passed in \p loc_id; that file's
1190  *          root group will be assumed.
1191  *
1192  *          \p idx is the transient index used to iterate through the objects in
1193  *          the group. This parameter is described in more detail in the
1194  *          discussion of H5Gget_objname_by_idx().
1195  *
1196  * \note    As of 1.12.0, H5Gget_objtype_by_idx() returns the type of the object
1197  *          that the link points to, but it has been deprecated for H5Oget_info().
1198  *          Previous behavior for this function returned H5G_LINK for any link type.
1199  *          To get the link type, an application may use H5Lget_info_by_idx()
1200  *          instead.
1201  *
1202  * \version 1.8.0 Function deprecated in this release.
1203  * \version 1.6.0 The function return type changed from \c int to the enumerated
1204  *                type \ref H5G_obj_t.
1205  * \since 1.6.0
1206  *
1207  */
1208 H5_DLL H5G_obj_t H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx);
1209 
1210 #endif /* H5_NO_DEPRECATED_SYMBOLS */
1211 
1212 #ifdef __cplusplus
1213 }
1214 #endif
1215 #endif /* H5Gpublic_H */