![]() |
|
|||
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 */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |