H5Gpublic.h 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165
  1. /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2. * Copyright by The HDF Group. *
  3. * Copyright by the Board of Trustees of the University of Illinois. *
  4. * All rights reserved. *
  5. * *
  6. * This file is part of HDF5. The full HDF5 copyright notice, including *
  7. * terms governing use, modification, and redistribution, is contained in *
  8. * the COPYING file, which can be found at the root of the source code *
  9. * distribution tree, or in https://www.hdfgroup.org/licenses. *
  10. * If you do not have access to either file, you may request a copy from *
  11. * help@hdfgroup.org. *
  12. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  13. /*-------------------------------------------------------------------------
  14. *
  15. * Created: H5Gpublic.h
  16. * Jul 11 1997
  17. * Robb Matzke
  18. *
  19. * Purpose: Public declarations for the H5G package
  20. *
  21. *-------------------------------------------------------------------------
  22. */
  23. #ifndef H5Gpublic_H
  24. #define H5Gpublic_H
  25. /* System headers needed by this file */
  26. #include <sys/types.h>
  27. /* Public headers needed by this file */
  28. #include "H5public.h" /* Generic Functions */
  29. #include "H5Lpublic.h" /* Links */
  30. #include "H5Opublic.h" /* Object headers */
  31. #include "H5Tpublic.h" /* Datatypes */
  32. /*****************/
  33. /* Public Macros */
  34. /*****************/
  35. /*******************/
  36. /* Public Typedefs */
  37. /*******************/
  38. //! <!-- [H5G_storage_t_snip] -->
  39. /**
  40. * Types of link storage for groups
  41. */
  42. typedef enum H5G_storage_type_t {
  43. H5G_STORAGE_TYPE_UNKNOWN = -1, /**< Unknown link storage type */
  44. H5G_STORAGE_TYPE_SYMBOL_TABLE, /**< Links in group are stored with a "symbol table" */
  45. /**< (this is sometimes called "old-style" groups) */
  46. H5G_STORAGE_TYPE_COMPACT, /**< Links are stored in object header */
  47. H5G_STORAGE_TYPE_DENSE /**< Links are stored in fractal heap & indexed with v2 B-tree */
  48. } H5G_storage_type_t;
  49. //! <!-- [H5G_storage_t_snip] -->
  50. //! <!-- [H5G_info_t_snip] -->
  51. /**
  52. * Information struct for group for
  53. * H5Gget_info(), H5Gget_info_by_name(), and H5Gget_info_by_idx()
  54. */
  55. typedef struct H5G_info_t {
  56. H5G_storage_type_t storage_type; /**< Type of storage for links in group */
  57. hsize_t nlinks; /**< Number of links in group */
  58. int64_t max_corder; /**< Current max. creation order value for group */
  59. hbool_t mounted; /**< Whether group has a file mounted on it */
  60. } H5G_info_t;
  61. //! <!-- [H5G_info_t_snip] -->
  62. /********************/
  63. /* Public Variables */
  64. /********************/
  65. /*********************/
  66. /* Public Prototypes */
  67. /*********************/
  68. #ifdef __cplusplus
  69. extern "C" {
  70. #endif
  71. /**
  72. *-------------------------------------------------------------------------
  73. * \ingroup H5G
  74. *
  75. * \brief Creates a new group and links it into the file
  76. *
  77. * \fgdta_loc_id
  78. * \param[in] name Name of the group to create
  79. * \lcpl_id
  80. * \gcpl_id
  81. * \gapl_id
  82. *
  83. * \return \hid_t{group}
  84. *
  85. * \details H5Gcreate2() creates a new group in a file. After a
  86. * group has been created, links to datasets and to other groups
  87. * can be added.
  88. *
  89. * The \p loc_id and \p name parameters specify where the group
  90. * is located. \p loc_id may be a file, group, dataset, named
  91. * datatype or attribute in the file. If an attribute, dataset,
  92. * or named datatype is specified for \p loc_id then the group
  93. * will be created at the location where the attribute, dataset,
  94. * or named datatype is attached. \p name is the link to the group;
  95. * \p name may be either an absolute path in the file (the links
  96. * from the root group to the new group) or a relative path from
  97. * \p loc_id (the link(s) from the group specified by \p loc_id
  98. * to the new group).
  99. *
  100. * \p lcpl_id, \p gcpl_id, and \p gapl_id are property list
  101. * identifiers. These property lists govern how the link to the
  102. * group is created, how the group is created, and how the group
  103. * can be accessed in the future, respectively. #H5P_DEFAULT can
  104. * be passed in if the default properties are appropriate for
  105. * these property lists. Currently, there are no APIs for the
  106. * group access property list; use #H5P_DEFAULT.
  107. *
  108. * The group identifier should be closed by H5Gclose() when access
  109. * is no longer required to prevent resource leaks.
  110. *
  111. * \since 1.8.0
  112. *
  113. * \see H5Gopen2(), H5Gclose()
  114. *
  115. */
  116. H5_DLL hid_t H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id);
  117. /**
  118. * --------------------------------------------------------------------------
  119. * \ingroup ASYNC
  120. * \async_variant_of{H5Gcreate}
  121. */
  122. H5_DLL hid_t H5Gcreate_async(const char *app_file, const char *app_func, unsigned app_line, hid_t loc_id,
  123. const char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id, hid_t es_id);
  124. /**
  125. *-------------------------------------------------------------------------
  126. * \ingroup H5G
  127. *
  128. * \brief Creates a new empty group without linking it into the file structure
  129. *
  130. * \fgdta_loc_id
  131. * \gcpl_id
  132. * \gapl_id
  133. *
  134. * \return \hid_t{group}
  135. *
  136. * \details H5Gcreate_anon() creates a new empty group in the file
  137. * specified by \p loc_id. With default settings, H5Gcreate_anon()
  138. * provides similar functionality to that provided by
  139. * H5Gcreate1(), with the differences described in the list below.
  140. *
  141. * The new group’s creation and access properties are specified
  142. * in \p gcpl_id and \p gapl_id, respectively.
  143. *
  144. * H5Gcreate_anon() returns a new group identifier. This identifier
  145. * must be linked into the HDF5 file structure with H5Olink()
  146. * or it will be deleted from the file when the file is closed.
  147. *
  148. * The differences between this function and H5Gcreate1() are
  149. * as follows:
  150. *
  151. * \li H5Gcreate1() does not provide for the use of custom property
  152. * lists; H5Gcreate1() always uses default properties.
  153. * \li H5Gcreate_anon() neither provides the new group’s name
  154. * nor links it into the HDF5 file structure; those actions
  155. * must be performed separately through a call to H5Olink(),
  156. * which offers greater control over linking.
  157. * \li H5Gcreate_anon() does not directly provide a hint mechanism
  158. * for the group’s heap size. Comparable information can be
  159. * included in the group creation property list \p gcpl_id through
  160. * a H5Pset_local_heap_size_hint() call.
  161. *
  162. * A group created with this function should be closed with
  163. * H5Gclose() when the group is no longer needed so that resource
  164. * leaks will not develop.
  165. *
  166. * \see H5Olink(), H5Dcreate(), Using Identifiers
  167. *
  168. * \since 1.8.0
  169. *
  170. */
  171. H5_DLL hid_t H5Gcreate_anon(hid_t loc_id, hid_t gcpl_id, hid_t gapl_id);
  172. /**
  173. *-------------------------------------------------------------------------
  174. * \ingroup H5G
  175. *
  176. * \brief Opens an existing group in a file
  177. *
  178. * \fgdta_loc_id
  179. * \param[in] name Name of the group to open
  180. * \gapl_id
  181. *
  182. * \return \hid_t{group}
  183. *
  184. * \details H5Gopen2() opens an existing group, \p name, at the location
  185. * specified by \p loc_id.
  186. *
  187. * With default settings, H5Gopen2() provides similar functionality
  188. * to that provided by H5Gopen(). The only difference is that
  189. * H5Gopen2() can provide a group access property list, \p gapl_id.
  190. *
  191. * H5Gopen2() returns a group identifier for the group that was
  192. * opened. This group identifier should be released by H5Gclose()
  193. * when it is no longer needed to prevent resource leaks.
  194. *
  195. * \since 1.8.0
  196. *
  197. * \see H5Gcreate2(), H5Gclose()
  198. *
  199. */
  200. H5_DLL hid_t H5Gopen2(hid_t loc_id, const char *name, hid_t gapl_id);
  201. /**
  202. * --------------------------------------------------------------------------
  203. * \ingroup ASYNC
  204. * \async_variant_of{H5Gopen}
  205. */
  206. H5_DLL hid_t H5Gopen_async(const char *app_file, const char *app_func, unsigned app_line, hid_t loc_id,
  207. const char *name, hid_t gapl_id, hid_t es_id);
  208. /**
  209. *-------------------------------------------------------------------------
  210. * \ingroup H5G
  211. *
  212. * \brief Gets a group creation property list identifier
  213. *
  214. * \group_id
  215. *
  216. * \return \hid_t{creation property list}
  217. *
  218. * \details H5Gget_create_plist() returns an identifier for the group creation
  219. * property list associated with the group specified by \p group_id.
  220. *
  221. * The creation property list identifier should be released with
  222. * H5Gclose() to prevent resource leaks.
  223. *
  224. * \since 1.8.0
  225. *
  226. * \see H5Gcreate2(), H5Gclose()
  227. *
  228. */
  229. H5_DLL hid_t H5Gget_create_plist(hid_t group_id);
  230. /**
  231. *-------------------------------------------------------------------------
  232. * \ingroup H5G
  233. *
  234. * \brief Retrieves information about a group
  235. *
  236. * \fgdta_loc_id
  237. * \param[out] ginfo Struct in which group information is returned
  238. *
  239. * \return \hid_t{group}
  240. *
  241. * \details H5Gget_info() retrieves information about the group at location
  242. * specified by \p loc_id. The information is returned in the \p ginfo.
  243. *
  244. * \p ginfo is an H5G_info_t struct and is defined (in H5Gpublic.h)
  245. * as follows:
  246. *
  247. * \snippet this H5G_info_t_snip
  248. * Possible values of \p storage_type are:
  249. * \storage_type
  250. *
  251. * \since 1.8.0
  252. *
  253. * \see H5Gcreate2(), H5Gclose()
  254. *
  255. */
  256. H5_DLL herr_t H5Gget_info(hid_t loc_id, H5G_info_t *ginfo);
  257. /**
  258. * --------------------------------------------------------------------------
  259. * \ingroup ASYNC
  260. * \async_variant_of{H5Gget_info}
  261. */
  262. H5_DLL herr_t H5Gget_info_async(const char *app_file, const char *app_func, unsigned app_line, hid_t loc_id,
  263. H5G_info_t *ginfo /*out*/, hid_t es_id);
  264. /**
  265. *-------------------------------------------------------------------------
  266. * \ingroup H5G
  267. *
  268. * \brief Retrieves information about a group by its name
  269. *
  270. * \fgdta_loc_id
  271. * \param[in] name Name of the group to query
  272. * \param[out] ginfo Struct in which group information is returned
  273. * \lapl_id
  274. *
  275. * \return \herr_t
  276. *
  277. * \details H5Gget_info_by_name() retrieves information about the group \p name
  278. * at location specified by \p loc_id. The information is returned in
  279. * the \p ginfo struct.
  280. *
  281. * If \p loc_id specifies the group for which information is queried,
  282. * then the group's \p name can be a dot (.).
  283. *
  284. * \p ginfo is an H5G_info_t struct and is defined (in H5Gpublic.h)
  285. * as follows:
  286. *
  287. * \snippet this H5G_info_t_snip
  288. * Possible values of \p storage_type are:
  289. * \storage_type
  290. *
  291. * \since 1.8.0
  292. *
  293. * \see H5Gcreate2(), H5Gclose()
  294. *
  295. */
  296. H5_DLL herr_t H5Gget_info_by_name(hid_t loc_id, const char *name, H5G_info_t *ginfo, hid_t lapl_id);
  297. /**
  298. * --------------------------------------------------------------------------
  299. * \ingroup ASYNC
  300. * \async_variant_of{H5Gget_info_by_name}
  301. */
  302. H5_DLL herr_t H5Gget_info_by_name_async(const char *app_file, const char *app_func, unsigned app_line,
  303. hid_t loc_id, const char *name, H5G_info_t *ginfo /*out*/,
  304. hid_t lapl_id, hid_t es_id);
  305. /**
  306. *-------------------------------------------------------------------------
  307. * \ingroup H5G
  308. *
  309. * \brief Retrieves information about a group, according to the group’s
  310. * position within an index
  311. *
  312. * \fgdta_loc_id
  313. * \param[in] group_name Name of the group to query
  314. * \param[in] idx_type Transient index identifying object
  315. * \param[in] order Transient index identifying object
  316. * \param[in] n Position in the index of the group to query
  317. * \param[out] ginfo Struct in which group information is returned
  318. * \lapl_id
  319. *
  320. * \return Returns
  321. * \li The size of the object name if successful, or
  322. * \li 0 if no name is associated with the group identifier, or
  323. * \li negative value, if failure occurred
  324. *
  325. * \details H5Gget_info_by_idx() retrieves the same information
  326. * about a group as retrieved by the function H5Gget_info(),
  327. * but the means of identifying the group differs; the group is
  328. * identified by position in an index rather than by name.
  329. *
  330. * \p loc_id and \p group_name specify the group containing
  331. * the group for which information is sought. The groups in \p
  332. * group_name are indexed by \p idx_type; the group for which
  333. * information is retrieved is identified in that index by index
  334. * order, \p order, and index position, \p n.
  335. *
  336. * If \p loc_id specifies the group containing the group for
  337. * which information is queried, \p group_name can be a dot (.).
  338. *
  339. * Valid values for \p index_type are as follows:
  340. * \indexes
  341. * The order in which the index is to be examined, as specified
  342. * by \p order, can be one of the following:
  343. * \orders
  344. *
  345. * \since 1.8.0
  346. *
  347. * \see H5Gcreate2(), H5Gclose()
  348. *
  349. */
  350. H5_DLL herr_t H5Gget_info_by_idx(hid_t loc_id, const char *group_name, H5_index_t idx_type,
  351. H5_iter_order_t order, hsize_t n, H5G_info_t *ginfo, hid_t lapl_id);
  352. /**
  353. * --------------------------------------------------------------------------
  354. * \ingroup ASYNC
  355. * \async_variant_of{H5Gget_info_by_idx}
  356. */
  357. H5_DLL herr_t H5Gget_info_by_idx_async(const char *app_file, const char *app_func, unsigned app_line,
  358. hid_t loc_id, const char *group_name, H5_index_t idx_type,
  359. H5_iter_order_t order, hsize_t n, H5G_info_t *ginfo /*out*/,
  360. hid_t lapl_id, hid_t es_id);
  361. /**
  362. *-------------------------------------------------------------------------
  363. * \ingroup H5G
  364. *
  365. * \brief Flushes all buffers associated with a group to disk
  366. *
  367. * \group_id
  368. *
  369. * \return \herr_t
  370. *
  371. * \details H5Gflush() causes all buffers associated with a group to be
  372. * immediately flushed to disk without removing the data from
  373. * the cache.
  374. *
  375. * \attention
  376. * HDF5 does not possess full control over buffering. H5G_FLUSH
  377. * flushes the internal HDF5 buffers and then asks the operating
  378. * system (the OS) to flush the system buffers for the open
  379. * files. After that, the OS is responsible for ensuring that
  380. * the data is actually flushed to disk.
  381. *
  382. * \since 1.8.0
  383. *
  384. * \see H5Gcreate2(), H5Gclose()
  385. *
  386. */
  387. H5_DLL herr_t H5Gflush(hid_t group_id);
  388. /**
  389. *-------------------------------------------------------------------------
  390. * \ingroup H5G
  391. *
  392. * \brief Refreshes all buffers associated with a group
  393. *
  394. * \group_id
  395. *
  396. * \return \herr_t
  397. *
  398. * \details H5Grefresh() causes all buffers associated with a group to be
  399. * cleared and immediately re-loaded with updated contents from disk.
  400. *
  401. * This function essentially closes the group, evicts all
  402. * metadata associated with it from the cache, and then re-opens
  403. * the group. The reopened group is automatically re-registered
  404. * with the same identifier.
  405. *
  406. * \since 1.8.0
  407. *
  408. * \see H5Gcreate2(), H5Gclose()
  409. *
  410. */
  411. H5_DLL herr_t H5Grefresh(hid_t group_id);
  412. /**
  413. *-------------------------------------------------------------------------
  414. * \ingroup H5G
  415. *
  416. * \brief Closes the specified group
  417. *
  418. * \group_id
  419. *
  420. * \return \herr_t
  421. *
  422. * \details H5Gclose() releases resources used by a group which was
  423. * opened by H5Gcreate() or H5Gopen(). After closing a group,
  424. * \p group_id cannot be used again until another H5Gcreate()
  425. * or H5Gopen() is called on it.
  426. *
  427. * Failure to release a group with this call will result in
  428. * resource leaks.
  429. *
  430. * \par Example
  431. * \snippet H5F_examples.c mount
  432. *
  433. * \since 1.0.0
  434. *
  435. */
  436. H5_DLL herr_t H5Gclose(hid_t group_id);
  437. /**
  438. * --------------------------------------------------------------------------
  439. * \ingroup ASYNC
  440. * \async_variant_of{H5Gclose}
  441. */
  442. H5_DLL herr_t H5Gclose_async(const char *app_file, const char *app_func, unsigned app_line, hid_t group_id,
  443. hid_t es_id);
  444. /// \cond DEV
  445. /* API Wrappers for async routines */
  446. /* (Must be defined _after_ the function prototype) */
  447. /* (And must only defined when included in application code, not the library) */
  448. #ifndef H5G_MODULE
  449. #define H5Gcreate_async(...) H5Gcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  450. #define H5Gopen_async(...) H5Gopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  451. #define H5Gget_info_async(...) H5Gget_info_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  452. #define H5Gget_info_by_name_async(...) H5Gget_info_by_name_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  453. #define H5Gget_info_by_idx_async(...) H5Gget_info_by_idx_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  454. #define H5Gclose_async(...) H5Gclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
  455. /* Define "wrapper" versions of function calls, to allow compile-time values to
  456. * be passed in by language wrapper or library layer on top of HDF5.
  457. */
  458. #define H5Gcreate_async_wrap H5_NO_EXPAND(H5Gcreate_async)
  459. #define H5Gopen_async_wrap H5_NO_EXPAND(H5Gopen_async)
  460. #define H5Gget_info_async_wrap H5_NO_EXPAND(H5Gget_info_async)
  461. #define H5Gget_info_by_name_async_wrap H5_NO_EXPAND(H5Gget_info_by_name_async)
  462. #define H5Gget_info_by_idx_async_wrap H5_NO_EXPAND(H5Gget_info_by_idx_async)
  463. #define H5Gclose_async_wrap H5_NO_EXPAND(H5Gclose_async)
  464. #endif /* H5G_MODULE */
  465. /// \endcond
  466. /* Symbols defined for compatibility with previous versions of the HDF5 API.
  467. *
  468. * Use of these symbols is deprecated.
  469. */
  470. #ifndef H5_NO_DEPRECATED_SYMBOLS
  471. /* Macros */
  472. /* Link definitions */
  473. #define H5G_SAME_LOC H5L_SAME_LOC
  474. #define H5G_LINK_ERROR H5L_TYPE_ERROR
  475. #define H5G_LINK_HARD H5L_TYPE_HARD
  476. #define H5G_LINK_SOFT H5L_TYPE_SOFT
  477. #define H5G_link_t H5L_type_t
  478. /* Macros for types of objects in a group (see H5G_obj_t definition) */
  479. #define H5G_NTYPES 256 /* Max possible number of types */
  480. #define H5G_NLIBTYPES 8 /* Number of internal types */
  481. #define H5G_NUSERTYPES (H5G_NTYPES - H5G_NLIBTYPES)
  482. #define H5G_USERTYPE(X) (8 + (X)) /* User defined types */
  483. /* Typedefs */
  484. //! <!-- [H5G_obj_t_snip] -->
  485. /**
  486. * An object has a certain type. The first few numbers are reserved for use
  487. * internally by HDF5. Users may add their own types with higher values. The
  488. * values are never stored in the file -- they only exist while an application
  489. * is running. An object may satisfy the `isa' function for more than one type.
  490. *
  491. * \deprecated
  492. */
  493. typedef enum H5G_obj_t {
  494. H5G_UNKNOWN = -1, /**< Unknown object type */
  495. H5G_GROUP, /**< Object is a group */
  496. H5G_DATASET, /**< Object is a dataset */
  497. H5G_TYPE, /**< Object is a named data type */
  498. H5G_LINK, /**< Object is a symbolic link */
  499. H5G_UDLINK, /**< Object is a user-defined link */
  500. H5G_RESERVED_5, /**< Reserved for future use */
  501. H5G_RESERVED_6, /**< Reserved for future use */
  502. H5G_RESERVED_7 /**< Reserved for future use */
  503. } H5G_obj_t;
  504. //! <!-- [H5G_obj_t_snip] -->
  505. //! <!-- [H5G_iterate_t_snip] -->
  506. /**
  507. * Callback for H5Giterate()
  508. *
  509. * \deprecated
  510. */
  511. typedef herr_t (*H5G_iterate_t)(hid_t group, const char *name, void *op_data);
  512. //! <!-- [H5G_iterate_t_snip] -->
  513. //! <!-- [H5G_stat_t_snip] -->
  514. /**
  515. * Information about an object
  516. *
  517. * \deprecated
  518. */
  519. typedef struct H5G_stat_t {
  520. unsigned long fileno[2]; /**< file number */
  521. unsigned long objno[2]; /**< object number */
  522. unsigned nlink; /**< number of hard links to object*/
  523. H5G_obj_t type; /**< basic object type */
  524. time_t mtime; /**< modification time */
  525. size_t linklen; /**< symbolic link value length */
  526. H5O_stat_t ohdr; /**< Object header information */
  527. } H5G_stat_t;
  528. //! <!-- [H5G_stat_t_snip] -->
  529. /* Function prototypes */
  530. /**
  531. *-------------------------------------------------------------------------
  532. * \ingroup H5G
  533. *
  534. * \brief Creates a new group and links it into the file
  535. *
  536. * \fgdta_loc_id
  537. * \param[in] name Name of the group to create
  538. * \param[in] size_hint The number of bytes to reserve for the names
  539. * that will appear in the group
  540. *
  541. * \return \hid_t{group}
  542. *
  543. * \deprecated This function is deprecated in favor of H5Gcreate2().
  544. *
  545. * \details H5Gcreate1() creates a new group with the specified name at the
  546. * specified location, \p loc_id. \p loc_id may be a file, group,
  547. * dataset, named datatype or attribute. If an attribute, dataset, or
  548. * named datatype is specified for \p loc_id then the group will be
  549. * created at the location where the attribute, dataset, or named
  550. * datatype is attached. The name, name, must not already be taken by
  551. * some other object and all parent groups must already exist.
  552. *
  553. * \p name can be a relative path based at \p loc_id or an absolute
  554. * path from the root of the file. Use of this function requires that
  555. * any intermediate groups specified in the path already exist.
  556. *
  557. * The length of a group name, or of the name of any object within a
  558. * group, is not limited.
  559. *
  560. * \p size_hint is a hint for the number of bytes to reserve to store
  561. * the names which will be eventually added to the new group. This
  562. * value must be between 0 and UINT32_MAX (inclusive). If this
  563. * parameter is zero, a default value will be used.
  564. *
  565. * The return value is a group identifier for the open group. This
  566. * group identifier should be closed by calling H5Gclose() when it is
  567. * no longer needed.
  568. *
  569. * See H5Gcreate_anon() for a discussion of the differences between
  570. * H5Gcreate1() and H5Gcreate_anon().
  571. *
  572. * \par Example
  573. * \snippet H5F_examples.c mount
  574. *
  575. * \version 1.8.0 Function H5Gcreate() renamed to H5Gcreate1() and deprecated
  576. * in this release.
  577. * \since 1.0.0
  578. *
  579. */
  580. H5_DLL hid_t H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint);
  581. /**
  582. *-------------------------------------------------------------------------
  583. * \ingroup H5G
  584. *
  585. * \brief Opens an existing group for modification and returns a group
  586. * identifier for that group
  587. *
  588. * \fgdta_loc_id
  589. * \param[in] name Name of the group to open
  590. *
  591. * \return \hid_t{group}
  592. *
  593. * \deprecated This function is deprecated in favor of H5Gopen2().
  594. *
  595. * \details H5Gopen1() opens an existing group, \p name, at the location
  596. * specified by \p loc_id.
  597. *
  598. * H5Gopen1() returns a group identifier for the group that was
  599. * opened. This group identifier should be released by calling
  600. * H5Gclose() when it is no longer needed.
  601. *
  602. * \version 1.8.0 The function H5Gopen() was renamed to H5Gopen1()
  603. * and deprecated in this release.
  604. * \since 1.0.0
  605. *
  606. */
  607. H5_DLL hid_t H5Gopen1(hid_t loc_id, const char *name);
  608. /**
  609. *-------------------------------------------------------------------------
  610. * \ingroup H5G
  611. *
  612. * \brief Creates a link of the specified type from \p new_name to \p
  613. * cur_name
  614. *
  615. * \fg_loc_id{cur_loc_id}
  616. * \param[in] type Link type
  617. * \param[in] cur_name Name of the existing object
  618. * \param[in] new_name New name for the object
  619. *
  620. * \return \herr_t
  621. *
  622. * \deprecated This function is deprecated.
  623. *
  624. * \details H5Glink() creates a new name for an object that has some current
  625. * name, possibly one of many names it currently has.
  626. *
  627. * If \p link_type is #H5G_LINK_HARD, then \p cur_name must specify
  628. * the name of an existing object and both names are interpreted
  629. * relative to \p cur_loc_id, which is either a file identifier or a
  630. * group identifier.
  631. *
  632. * If \p link_type is #H5G_LINK_SOFT, then \p cur_name can be anything
  633. * and is interpreted at lookup time relative to the group which
  634. * contains the final component of \p new_name. For instance, if \p
  635. * cur_name is \Code{./foo}, \p new_name is \Code{./x/y/bar}, and a
  636. * request is made for \Code{./x/y/bar}, then the actual object looked
  637. * up is \Code{./x/y/./foo}.
  638. * \version 1.8.0 Function deprecated in this release.
  639. *
  640. */
  641. H5_DLL herr_t H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name, const char *new_name);
  642. /**
  643. *-------------------------------------------------------------------------
  644. * \ingroup H5G
  645. *
  646. * \brief Creates a link of the specified type from \p cur_name to \p
  647. * new_name
  648. *
  649. * \fg_loc_id{cur_loc_id}
  650. * \param[in] cur_name Name of the existing object
  651. * \param[in] type Link type
  652. * \fg_loc_id{new_loc_id}
  653. * \param[in] new_name New name for the object
  654. *
  655. * \return \herr_t
  656. *
  657. * \deprecated This function is deprecated.
  658. *
  659. * \details H5Glink2() creates a new name for an object that has some current
  660. * name, possibly one of many names it currently has.
  661. *
  662. * If \p link_type is #H5G_LINK_HARD, then \p cur_name must specify the
  663. * name of an existing object and both names are interpreted relative
  664. * to \p cur_loc_id and \p new_loc_id, respectively, which are either
  665. * file identifiers or group identifiers.
  666. *
  667. * If \p link_type is #H5G_LINK_SOFT, then \p cur_name can be anything
  668. * and is interpreted at lookup time relative to the group which
  669. * contains the final component of \p new_name. For instance, if \p
  670. * current_name is \Code{./foo}, \p new_name is \Code{./x/y/bar}, and a
  671. * request is made for \Code{./x/y/bar}, then the actual object looked
  672. * up is \Code{./x/y/./foo}.
  673. * \version 1.8.0 Function deprecated in this release.
  674. *
  675. */
  676. H5_DLL herr_t H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t type, hid_t new_loc_id,
  677. const char *new_name);
  678. /**
  679. *-------------------------------------------------------------------------
  680. * \ingroup H5G
  681. *
  682. * \brief Renames an object within an HDF5 file
  683. *
  684. * \fg_loc_id{src_loc_id}
  685. * \param[in] src_name Object's original name
  686. * \param[in] dst_name Object's new name
  687. *
  688. * \return \herr_t
  689. *
  690. * \deprecated This function is deprecated.
  691. *
  692. * \details H5Gmove() renames an object within an HDF5 file. The original name,
  693. * \p src_name, is unlinked from the group graph and the new name, \p
  694. * dst_name, is inserted as an atomic operation. Both names are
  695. * interpreted relative to \p loc_id, which is either a file or a group
  696. * identifier.
  697. *
  698. * \attention Exercise care in moving groups as it is possible to render data in
  699. * a file inaccessible with H5Gmove(). See The Group Interface in the
  700. * HDF5 User's Guide.
  701. *
  702. * \version 1.8.0 Function deprecated in this release.
  703. *
  704. */
  705. H5_DLL herr_t H5Gmove(hid_t src_loc_id, const char *src_name, const char *dst_name);
  706. /**
  707. *-------------------------------------------------------------------------
  708. * \ingroup H5G
  709. *
  710. * \brief Renames an object within an HDF5 file
  711. *
  712. * \fg_loc_id{src_loc_id}
  713. * \param[in] src_name Object's original name
  714. * \fg_loc_id{dst_loc_id}
  715. * \param[in] dst_name Object's new name
  716. *
  717. * \return \herr_t
  718. *
  719. * \deprecated This function is deprecated.
  720. *
  721. * \details H5Gmove2() renames an object within an HDF5 file. The original name,
  722. * \p src_name, is unlinked from the group graph and the new name, \p
  723. * dst_name, is inserted as an atomic operation.
  724. *
  725. * \p src_name and \p dst_name are interpreted relative to \p
  726. * src_loc_id and \p dst_loc_id, respectively, which are either file or
  727. * group identifiers.
  728. *
  729. * \attention Exercise care in moving groups as it is possible to render data in
  730. * a file inaccessible with H5Gmove2(). See The Group Interface in the
  731. * HDF5 User's Guide.
  732. *
  733. * \version 1.8.0 Function deprecated in this release.
  734. *
  735. */
  736. H5_DLL herr_t H5Gmove2(hid_t src_loc_id, const char *src_name, hid_t dst_loc_id, const char *dst_name);
  737. /**
  738. *-------------------------------------------------------------------------
  739. * \ingroup H5G
  740. *
  741. * \brief Removes the link to an object from a group
  742. *
  743. * \fg_loc_id{loc_id}
  744. * \param[in] name Name of the object to unlink
  745. *
  746. * \return \herr_t
  747. *
  748. * \deprecated This function is deprecated in favor of the function H5Ldelete().
  749. *
  750. * \details H5Gunlink() removes the object specified by \p name from the group
  751. * graph and decrements the link count for the object to which \p name
  752. * points. This action eliminates any association between name and the
  753. * object to which name pointed.
  754. *
  755. * Object headers keep track of how many hard links refer to an object;
  756. * when the link count reaches zero, the object can be removed from the
  757. * file. Objects which are open are not removed until all identifiers
  758. * to the object are closed.
  759. *
  760. * If the link count reaches zero, all file space associated with the
  761. * object will be released, i.e., identified in memory as freespace. If
  762. * any object identifier is open for the object, the space will not be
  763. * released until after the object identifier is closed.
  764. *
  765. * Note that space identified as freespace is available for re-use only
  766. * as long as the file remains open; once a file has been closed, the
  767. * HDF5 library loses track of freespace. See “Freespace Management” in
  768. * the HDF5 User's Guide for further details.
  769. *
  770. * \attention Exercise care in moving groups as it is possible to render data in
  771. * a file inaccessible with H5Gunlink(). See The Group Interface in the
  772. * HDF5 User's Guide.
  773. *
  774. * \version 1.8.0 Function deprecated in this release.
  775. *
  776. */
  777. H5_DLL herr_t H5Gunlink(hid_t loc_id, const char *name);
  778. /**
  779. *-------------------------------------------------------------------------
  780. * \ingroup H5G
  781. *
  782. * \brief Returns the name of the object that the symbolic link points to
  783. *
  784. * \fg_loc_id{loc_id}
  785. * \param[in] name Symbolic link to the object whose name is to be returned
  786. * \param[in] size Maximum number of characters of value to be returned
  787. * \param[out] buf A buffer to hold the name of the object being sought
  788. *
  789. * \return \herr_t
  790. *
  791. * \deprecated This function is deprecated in favor of the function H5Lget_val().
  792. *
  793. * \details H5Gget_linkval() returns up to size characters of the name of the
  794. * object that the symbolic link name points to.
  795. *
  796. * The parameter \p loc_id is a file or group identifier.
  797. *
  798. * The parameter \p name must be a symbolic link pointing to the
  799. * desired object and must be defined relative to \p loc_id.
  800. *
  801. * If size is smaller than the size of the returned object name, then
  802. * the name stored in the buffer value will not be \c NULL terminated.
  803. *
  804. * This function fails if \p name is not a symbolic link. The presence
  805. * of a symbolic link can be tested by passing zero for \p size and \p
  806. * NULL for value.
  807. *
  808. * This function should be used only after H5Lget_info1() (or the
  809. * deprecated function H5Gget_objinfo()) has been called to verify that
  810. * name is a symbolic link.
  811. *
  812. * \version 1.8.0 Function deprecated in this release.
  813. *
  814. */
  815. H5_DLL herr_t H5Gget_linkval(hid_t loc_id, const char *name, size_t size, char *buf /*out*/);
  816. /**
  817. *-------------------------------------------------------------------------
  818. * \ingroup H5G
  819. *
  820. * \brief Sets comment for specified object
  821. *
  822. * \fgdt_loc_id
  823. * \param[in] name Name of the object whose comment is to be set or reset
  824. * name must be \Code{'.'} (dot) if \p loc_id fully specifies
  825. * the object for which the comment is to be set.
  826. * \param[in] comment The new comment
  827. *
  828. * \return \herr_t
  829. *
  830. * \deprecated This function is deprecated in favor of the function
  831. * H5Oset_comment().
  832. *
  833. * \details H5Gset_comment() sets the comment for the object specified by \p
  834. * loc_id and name to comment. Any previously existing comment is
  835. * overwritten.
  836. *
  837. * \p loc_id can specify any object in the file. name can be one of the
  838. * following:
  839. * \li The name of the object relative to \p loc_id
  840. * \li An absolute name of the object, starting from \c /, the file’s
  841. * root group
  842. * \li A dot (\c .), if \p loc_id fully specifies the object
  843. *
  844. * If \p comment is the empty string or a null pointer, the comment
  845. * message is removed from the object.
  846. *
  847. * Comments should be relatively short, null-terminated, ASCII strings.
  848. *
  849. * Comments can be attached to any object that has an object header,
  850. * e.g., datasets, groups, and named datatypes, but not symbolic links.
  851. *
  852. * \version 1.8.0 Function deprecated in this release.
  853. *
  854. */
  855. H5_DLL herr_t H5Gset_comment(hid_t loc_id, const char *name, const char *comment);
  856. /**
  857. *-------------------------------------------------------------------------
  858. * \ingroup H5G
  859. *
  860. * \brief Retrieves comment for specified object
  861. *
  862. * \fgdt_loc_id
  863. * \param[in] name Name of the object whose comment is to be set or reset
  864. * name must be \Code{'.'} (dot) if \p loc_id fully specifies
  865. * the object for which the comment is to be set.
  866. * \param[in] bufsize Maximum number of comment characters to be returned in \p buf.
  867. * \param[in] buf The comment
  868. *
  869. * \return Returns the number of characters in the comment, counting the \c NULL
  870. * terminator, if successful; the value returned may be larger than
  871. * \p bufsize. Otherwise returns a negative value.
  872. *
  873. * \deprecated This function is deprecated in favor of the function
  874. * H5Oget_comment().
  875. *
  876. * \details H5Gget_comment() retrieves the comment for the the object specified
  877. * by \p loc_id and \p name. The comment is returned in the buffer \p
  878. * buf.
  879. *
  880. * \p loc_id can specify any object in the file. name can be one of the
  881. * following:
  882. * \li The name of the object relative to \p loc_id
  883. * \li An absolute name of the object, starting from \c /, the file’s
  884. * root group
  885. * \li A dot (\c .), if \p loc_id fully specifies the object
  886. *
  887. * At most bufsize characters, including a null-terminator, are
  888. * returned in \p buf. The returned value is not null-terminated if the
  889. * comment is longer than the supplied buffer. If the size of the
  890. * comment is unknown, a preliminary \p H5Gget_comment() call will
  891. * return the size of the comment, including space for the
  892. * null-terminator.
  893. *
  894. * If an object does not have a comment, the empty string is returned
  895. * in comment.
  896. *
  897. * \version 1.8.0 Function deprecated in this release.
  898. *
  899. */
  900. H5_DLL int H5Gget_comment(hid_t loc_id, const char *name, size_t bufsize, char *buf);
  901. /**
  902. *-------------------------------------------------------------------------
  903. * \ingroup H5G
  904. *
  905. * \brief Iterates over the entries of a group invoking a callback for each
  906. * entry encountered
  907. *
  908. * \fg_loc_id
  909. * \param[in] name Group over which the iteration is performed
  910. * \param[in,out] idx Location at which to begin the iteration
  911. * \param[in] op Operation to be performed on an object at each step of the
  912. * iteration
  913. * \param[in,out] op_data Data associated with the operation
  914. *
  915. * \return \herr_t
  916. *
  917. * \deprecated This function is deprecated in favor of the function
  918. * H5Literate1().
  919. *
  920. * \details H5Giterate() iterates over the members of name in the file or group
  921. * specified with \p loc_id. For each object in the group, the \p
  922. * op_data and some additional information, specified below, are passed
  923. * to the operator function. The iteration begins with the \p idx
  924. * object in the group and the next element to be processed by the
  925. * operator is returned in \p idx. If \p idx is NULL, then the iterator
  926. * starts at the first group member; since no stopping point is
  927. * returned in this case, the iterator cannot be restarted if one of
  928. * the calls to its operator returns non-zero. H5Giterate() does not
  929. * recursively follow links into subgroups of the specified group.
  930. *
  931. * The prototype for \ref H5G_iterate_t is:
  932. * \snippet this H5G_iterate_t_snip
  933. *
  934. * The operation receives the group identifier for the group being
  935. * iterated over, \p group, the name of the current object within
  936. * the group, \p name, and the pointer to the operator data
  937. * passed in to H5Giterate(), \p op_data.
  938. *
  939. * The return values from an operator are:
  940. * \li Zero causes the iterator to continue, returning zero when all
  941. * group members have been processed.
  942. * \li Positive causes the iterator to immediately return that positive
  943. * value, indicating short-circuit success. The iterator can be
  944. * restarted at the next group member.
  945. * \li Negative causes the iterator to immediately return that value,
  946. * indicating failure. The iterator can be restarted at the next
  947. * group member.
  948. *
  949. * H5Giterate() assumes that the membership of the group identified by
  950. * \p name remains unchanged through the iteration. If the membership
  951. * changes during the iteration, the function's behavior is undefined.
  952. *
  953. * H5Giterate() is not recursive. In particular, if a member of \p name
  954. * is found to be a group, call it \c subgroup_a, H5Giterate() does not
  955. * examine the members of \c subgroup_a. When recursive iteration is
  956. * required, the application must handle the recursion, explicitly
  957. * calling H5Giterate() on discovered subgroups.
  958. * \version 1.8.0 Function deprecated in this release.
  959. *
  960. */
  961. H5_DLL herr_t H5Giterate(hid_t loc_id, const char *name, int *idx, H5G_iterate_t op, void *op_data);
  962. /**
  963. *-------------------------------------------------------------------------
  964. * \ingroup H5G
  965. *
  966. * \brief Returns number of objects in the group specified by its identifier
  967. *
  968. * \fg_loc_id
  969. * \param[out] num_objs Number of objects in the group
  970. *
  971. * \return \herr_t
  972. *
  973. * \deprecated This function is deprecated in favor of the function H5Gget_info().
  974. *
  975. * \details H5Gget_num_objs() returns number of objects in a group. Group is
  976. * specified by its identifier \p loc_id. If a file identifier is
  977. * passed in, then the number of objects in the root group is returned.
  978. *
  979. * \version 1.8.0 Function deprecated in this release.
  980. *
  981. */
  982. H5_DLL herr_t H5Gget_num_objs(hid_t loc_id, hsize_t *num_objs);
  983. /**
  984. *-------------------------------------------------------------------------
  985. * \ingroup H5G
  986. *
  987. * \brief Returns information about an object.
  988. *
  989. * \fgdt_loc_id
  990. * \param[in] name Name of the object for which status is being sought
  991. * \param[in] follow_link Link flag
  992. * \param[out] statbuf Buffer in which to return information about the object
  993. *
  994. * \return \herr_t
  995. *
  996. * \deprecated This function is deprecated in favor of the functions H5Oget_info()
  997. * and H5Lget_info1().
  998. *
  999. * \details H5Gget_objinfo() returns information about the specified object
  1000. * through the \p statbuf argument.
  1001. *
  1002. * A file or group identifier, \p loc_id, and an object name, \p name,
  1003. * relative to \p loc_id, are commonly used to specify the
  1004. * object. However, if the object identifier is already known to the
  1005. * application, an alternative approach is to use that identifier, \c
  1006. * obj_id, in place of \p loc_id, and a dot (\c .) in place of \p
  1007. * name. Thus, the alternative versions of the first portion of an
  1008. * H5Gget_objinfo() call would be as follows:
  1009. * \code
  1010. * H5Gget_objinfo (loc_id name ...)
  1011. * H5Gget_objinfo (obj_id . ...)
  1012. * \endcode
  1013. *
  1014. * If the object is a symbolic link and follow_link is zero (0), then
  1015. * the information returned describes the link itself; otherwise the
  1016. * link is followed and the information returned describes the object
  1017. * to which the link points. If \p follow_link is non-zero but the
  1018. * final symbolic link is dangling (does not point to anything), then
  1019. * an error is returned. The \p statbuf fields are undefined for an
  1020. * error. The existence of an object can be tested by calling this
  1021. * function with a \c NULL \p statbuf.
  1022. *
  1023. * H5Gget_objinfo() fills in the following data structure (defined in
  1024. * H5Gpublic.h):
  1025. * \snippet this H5G_stat_t_snip
  1026. *
  1027. * where \ref H5O_stat_t (defined in H5Opublic.h) is:
  1028. * \snippet H5Opublic.h H5O_stat_t_snip
  1029. *
  1030. * \attention Some systems will be able to record the time accurately but unable
  1031. * to retrieve the correct time; such systems (e.g., Irix64) will
  1032. * report an \c mtime value of 0 (zero).
  1033. *
  1034. * \version 1.8.0 Function deprecated in this release.
  1035. * \version 1.6.1 Two new fields were added to the \ref H5G_stat_t struct in
  1036. * this release.
  1037. *
  1038. */
  1039. H5_DLL herr_t H5Gget_objinfo(hid_t loc_id, const char *name, hbool_t follow_link,
  1040. H5G_stat_t *statbuf /*out*/);
  1041. /**
  1042. *-------------------------------------------------------------------------
  1043. * \ingroup H5G
  1044. *
  1045. * \brief Returns a name of an object specified by an index
  1046. *
  1047. * \fg_loc_id
  1048. * \param[in] idx Transient index identifying object
  1049. * \param[in,out] name Pointer to user-provided buffer the object name
  1050. * \param[in] size Name length
  1051. *
  1052. * \return Returns the size of the object name if successful, or 0 if no name is
  1053. * associated with the group identifier. Otherwise returns a negative
  1054. * value.
  1055. *
  1056. * \deprecated This function is deprecated in favor of the function H5Lget_name_by_idx().
  1057. *
  1058. * \details H5Gget_objname_by_idx() returns a name of the object specified by
  1059. * the index \p idx in the group \p loc_id.
  1060. *
  1061. * The group is specified by a group identifier \p loc_id. If
  1062. * preferred, a file identifier may be passed in \p loc_id; that file's
  1063. * root group will be assumed.
  1064. *
  1065. * \p idx is the transient index used to iterate through the objects in
  1066. * the group. The value of \p idx is any nonnegative number less than
  1067. * the total number of objects in the group, which is returned by the
  1068. * function H5Gget_num_objs(). Note that this is a transient index; an
  1069. * object may have a different index each time a group is opened.
  1070. *
  1071. * The object name is returned in the user-specified buffer \p name.
  1072. *
  1073. * If the size of the provided buffer \p name is less or equal the
  1074. * actual object name length, the object name is truncated to
  1075. * \Code{max_size - 1} characters.
  1076. *
  1077. * Note that if the size of the object's name is unknown, a preliminary
  1078. * call to H5Gget_objname_by_idx() with \p name set to \c NULL will
  1079. * return the length of the object's name. A second call to
  1080. * H5Gget_objname_by_idx() can then be used to retrieve the actual
  1081. * name.
  1082. *
  1083. * \version 1.8.0 Function deprecated in this release.
  1084. * \since 1.6.0
  1085. *
  1086. */
  1087. H5_DLL ssize_t H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size);
  1088. /**
  1089. *-------------------------------------------------------------------------
  1090. * \ingroup H5G
  1091. *
  1092. * \brief Returns the type of an object specified by an index
  1093. *
  1094. * \fg_loc_id
  1095. * \param[in] idx Transient index identifying object
  1096. *
  1097. * \return Returns the type of the object if successful. Otherwise returns a
  1098. * negative value.
  1099. *
  1100. * \deprecated This function is deprecated in favor of the function H5Oget_info().
  1101. *
  1102. * \details H5Gget_objtype_by_idx() returns the type of the object specified by
  1103. * the index \p idx in the group \p loc_id.
  1104. *
  1105. * The group is specified by a group identifier \p loc_id. If
  1106. * preferred, a file identifier may be passed in \p loc_id; that file's
  1107. * root group will be assumed.
  1108. *
  1109. * \p idx is the transient index used to iterate through the objects in
  1110. * the group. This parameter is described in more detail in the
  1111. * discussion of H5Gget_objname_by_idx().
  1112. *
  1113. * \version 1.8.0 Function deprecated in this release.
  1114. * \version 1.6.0 The function return type changed from \c int to the enumerated
  1115. * type \ref H5G_obj_t.
  1116. * \since 1.6.0
  1117. *
  1118. */
  1119. H5_DLL H5G_obj_t H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx);
  1120. #endif /* H5_NO_DEPRECATED_SYMBOLS */
  1121. #ifdef __cplusplus
  1122. }
  1123. #endif
  1124. #endif /* H5Gpublic_H */