HDF5  1.12.0
H5Apkg.h
Go to the documentation of this file.
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://support.hdfgroup.org/ftp/HDF5/releases. *
10  * If you do not have access to either file, you may request a copy from *
11  * help@hdfgroup.org. *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13 
14 /*
15  * Programmer: Quincey Koziol
16  * Monday, Apr 20
17  *
18  * Purpose: This file contains declarations which are visible only within
19  * the H5A package. Source files outside the H5A package should
20  * include H5Aprivate.h instead.
21  */
22 #if !(defined H5A_FRIEND || defined H5A_MODULE)
23 #error "Do not include this file outside the H5A package!"
24 #endif
25 
26 #ifndef _H5Apkg_H
27 #define _H5Apkg_H
28 
29 /*
30  * Define this to enable debugging.
31  */
32 #ifdef NDEBUG
33 # undef H5A_DEBUG
34 #endif
35 
36 /* Get package's private header */
37 #include "H5Aprivate.h"
38 
39 /* Other private headers needed by this file */
40 #include "H5B2private.h" /* v2 B-trees */
41 #include "H5FLprivate.h" /* Free Lists */
42 #include "H5HFprivate.h" /* Fractal heaps */
43 #include "H5Oprivate.h" /* Object headers */
44 #include "H5Sprivate.h" /* Dataspace */
45 #include "H5Tprivate.h" /* Datatype functions */
46 
47 
48 /**************************/
49 /* Package Private Macros */
50 /**************************/
51 
52 /* This is the initial version, which does not have support for shared datatypes */
53 #define H5O_ATTR_VERSION_1 1
54 
55 /* This version allows support for shared datatypes & dataspaces by adding a
56  * 'flag' byte indicating when those components are shared. This version
57  * also dropped the alignment on all the components.
58  */
59 #define H5O_ATTR_VERSION_2 2
60 
61 /* Add support for different character encodings of attribute names */
62 #define H5O_ATTR_VERSION_3 3
63 
64 /* The latest version of the format. Look through the 'encode', 'decode'
65  * and 'size' message callbacks for places to change when updating this.
66  */
67 #define H5O_ATTR_VERSION_LATEST H5O_ATTR_VERSION_3
68 
69 
70 /****************************/
71 /* Package Private Typedefs */
72 /****************************/
73 /* Define the shared attribute structure */
74 typedef struct H5A_shared_t {
75  uint8_t version; /* Version to encode attribute with */
76 
77  char *name; /* Attribute's name */
78  H5T_cset_t encoding; /* Character encoding of attribute name */
79 
80  H5T_t *dt; /* Attribute's datatype */
81  size_t dt_size; /* Size of datatype on disk */
82 
83  H5S_t *ds; /* Attribute's dataspace */
84  size_t ds_size; /* Size of dataspace on disk */
85 
86  void *data; /* Attribute data (on a temporary basis) */
87  size_t data_size; /* Size of data on disk */
88  H5O_msg_crt_idx_t crt_idx; /* Attribute's creation index in the object header */
89  unsigned nrefs; /* Ref count for times this object is referred */
91 
92 /* Define the main attribute structure */
93 struct H5A_t {
94  H5O_shared_t sh_loc; /* Shared message info (must be first) */
95  H5O_loc_t oloc; /* Object location for object attribute is on */
96  hbool_t obj_opened; /* Object header entry opened? */
97  H5G_name_t path; /* Group hierarchy path */
98  H5A_shared_t *shared; /* Shared attribute information */
99 };
100 
101 /* Typedefs for "dense" attribute storage */
102 /* (fractal heap & v2 B-tree info) */
103 
104 /* Typedef for native 'name' field index records in the v2 B-tree */
105 /* (Keep 'id' field first so generic record handling in callbacks works) */
106 typedef struct H5A_dense_bt2_name_rec_t {
107  H5O_fheap_id_t id; /* Heap ID for attribute */
108  uint8_t flags; /* Object header message flags for attribute */
109  H5O_msg_crt_idx_t corder; /* 'creation order' field value */
110  uint32_t hash; /* Hash of 'name' field value */
112 
113 /* Typedef for native 'creation order' field index records in the v2 B-tree */
114 /* (Keep 'id' field first so generic record handling in callbacks works) */
116  H5O_fheap_id_t id; /* Heap ID for attribute */
117  uint8_t flags; /* Object header message flags for attribute */
118  H5O_msg_crt_idx_t corder; /* 'creation order' field value */
120 
121 /* Define the 'found' callback function pointer for matching an attribute record in a v2 B-tree */
122 typedef herr_t (*H5A_bt2_found_t)(const H5A_t *attr, hbool_t *took_ownership, void *op_data);
123 
124 /*
125  * Common data exchange structure for dense attribute storage. This structure
126  * is passed through the v2 B-tree layer to the methods for the objects
127  * to which the v2 B-tree points.
128  */
129 typedef struct H5A_bt2_ud_common_t {
130  /* downward */
131  H5F_t *f; /* Pointer to file that fractal heap is in */
132  H5HF_t *fheap; /* Fractal heap handle */
133  H5HF_t *shared_fheap; /* Fractal heap handle for shared messages */
134  const char *name; /* Name of attribute to compare */
135  uint32_t name_hash; /* Hash of name of attribute to compare */
136  uint8_t flags; /* Flags for attribute storage location */
137  H5O_msg_crt_idx_t corder; /* Creation order value of attribute to compare */
138  H5A_bt2_found_t found_op; /* Callback when correct attribute is found */
139  void *found_op_data; /* Callback data when correct attribute is found */
141 
142 /*
143  * Data exchange structure for dense attribute storage. This structure is
144  * passed through the v2 B-tree layer when inserting attributes.
145  */
146 typedef struct H5A_bt2_ud_ins_t {
147  /* downward */
148  H5A_bt2_ud_common_t common; /* Common info for B-tree user data (must be first) */
149  H5O_fheap_id_t id; /* Heap ID of attribute to insert */
151 
152 /* Data structure to hold table of attributes for an object */
153 typedef struct {
154  size_t nattrs; /* # of attributes in table */
155  H5A_t **attrs; /* Pointer to array of attribute pointers */
157 
158 
159 /*****************************/
160 /* Package Private Variables */
161 /*****************************/
162 
163 /* Declare extern the free list for H5A_t's */
165 
166 /* Declare the external free lists for H5A_shared_t's */
168 
169 /* Declare extern a free list to manage blocks of type conversion data */
170 H5FL_BLK_EXTERN(attr_buf);
171 
172 /* The v2 B-tree class for indexing 'name' field on attributes */
174 
175 /* The v2 B-tree class for indexing 'creation order' field on attributes */
177 
178 
179 /******************************/
180 /* Package Private Prototypes */
181 /******************************/
182 
183 /* Function prototypes for H5A package scope */
184 H5_DLL H5A_t *H5A__create(const H5G_loc_t *loc, const char *attr_name,
185  const H5T_t *type, const H5S_t *space, hid_t acpl_id);
186 H5_DLL H5A_t *H5A__create_by_name(const H5G_loc_t *loc, const char *obj_name,
187  const char *attr_name, const H5T_t *type, const H5S_t *space,
188  hid_t acpl_id);
189 H5_DLL H5A_t *H5A__open(const H5G_loc_t *loc, const char *attr_name);
190 H5_DLL H5A_t *H5A__open_by_name(const H5G_loc_t *loc, const char *obj_name,
191  const char *attr_name);
192 H5_DLL H5A_t *H5A__open_by_idx(const H5G_loc_t *loc, const char *obj_name,
193  H5_index_t idx_type, H5_iter_order_t order, hsize_t n);
194 H5_DLL herr_t H5A__open_common(const H5G_loc_t *loc, H5A_t *attr);
195 H5_DLL H5A_t *H5A__copy(H5A_t *new_attr, const H5A_t *old_attr);
197 H5_DLL herr_t H5A__get_info(const H5A_t *attr, H5A_info_t *ainfo);
203 H5_DLL herr_t H5A__set_version(const H5F_t *f, H5A_t *attr);
204 H5_DLL herr_t H5A__rename_by_name(H5G_loc_t loc, const char *obj_name, const char *old_attr_name,
205  const char *new_attr_name);
206 H5_DLL herr_t H5A__iterate(const H5G_loc_t *loc, const char *obj_name,H5_index_t idx_type, H5_iter_order_t order,
207  hsize_t *idx, H5A_operator2_t op, void *op_data);
208 #ifndef H5_NO_DEPRECATED_SYMBOLS
209 H5_DLL herr_t H5A__iterate_old(hid_t loc_id, unsigned *attr_num,
210  H5A_operator1_t op, void *op_data);
211 #endif /* H5_NO_DEPRECATED_SYMBOLS */
212 H5_DLL herr_t H5A__delete_by_name(const H5G_loc_t *loc, const char *obj_name,
213  const char *attr_name);
214 H5_DLL herr_t H5A__delete_by_idx(const H5G_loc_t *loc, const char *obj_name,
215  H5_index_t idx_type, H5_iter_order_t order, hsize_t n);
216 H5_DLL htri_t H5A__exists_by_name(H5G_loc_t loc, const char *obj_name, const char *attr_name);
217 H5_DLL herr_t H5A__write(H5A_t *attr, const H5T_t *mem_type, const void *buf);
218 H5_DLL herr_t H5A__read(const H5A_t *attr, const H5T_t *mem_type, void *buf);
219 H5_DLL ssize_t H5A__get_name(H5A_t *attr, size_t buf_size, char *buf);
220 
221 /* Attribute "dense" storage routines */
223 H5_DLL H5A_t *H5A__dense_open(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name);
224 H5_DLL herr_t H5A__dense_insert(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr);
225 H5_DLL herr_t H5A__dense_write(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr);
227  const char *old_name, const char *new_name);
228 H5_DLL herr_t H5A__dense_iterate(H5F_t *f, hid_t loc_id, const H5O_ainfo_t *ainfo,
229  H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_attr,
230  const H5A_attr_iter_op_t *attr_op, void *op_data);
232  const char *name);
234  H5_index_t idx_type, H5_iter_order_t order, hsize_t n);
236  const char *name);
238 
239 /* Attribute table operations */
241  H5_iter_order_t order, H5A_attr_table_t *atable);
243  H5_index_t idx_type, H5_iter_order_t order, H5A_attr_table_t *atable);
245  hsize_t skip, hsize_t *last_attr, hid_t loc_id,
246  const H5A_attr_iter_op_t *attr_op, void *op_data);
248 
249 /* Attribute operations */
250 H5_DLL herr_t H5O__attr_create(const H5O_loc_t *loc, H5A_t *attr);
251 H5_DLL H5A_t *H5O__attr_open_by_name(const H5O_loc_t *loc, const char *name);
253  H5_iter_order_t order, hsize_t n);
255  H5O_shared_t *sh_mesg);
256 H5_DLL herr_t H5O__attr_write(const H5O_loc_t *loc, H5A_t *attr);
257 H5_DLL herr_t H5O__attr_rename(const H5O_loc_t *loc, const char *old_name,
258  const char *new_name);
260  H5_iter_order_t order, hsize_t skip, hsize_t *last_attr,
261  const H5A_attr_iter_op_t *op, void *op_data);
262 H5_DLL herr_t H5O__attr_remove(const H5O_loc_t *loc, const char *name);
264  H5_iter_order_t order, hsize_t n);
265 H5_DLL htri_t H5O__attr_exists(const H5O_loc_t *loc, const char *name);
266 #ifndef H5_NO_DEPRECATED_SYMBOLS
267 H5_DLL int H5O__attr_count(const H5O_loc_t *loc);
268 #endif /* H5_NO_DEPRECATED_SYMBOLS */
269 H5_DLL H5A_t *H5A__attr_copy_file(const H5A_t *attr_src, H5F_t *file_dst, hbool_t *recompute_size,
270  H5O_copy_t *cpy_info);
271 H5_DLL herr_t H5A__attr_post_copy_file(const H5O_loc_t *src_oloc, const H5A_t *mesg_src,
272  H5O_loc_t *dst_oloc, const H5A_t *mesg_dst, H5O_copy_t *cpy_info);
273 H5_DLL herr_t H5A__dense_post_copy_file_all(const H5O_loc_t *src_oloc, const H5O_ainfo_t * ainfo_src,
274  H5O_loc_t *dst_oloc, H5O_ainfo_t *ainfo_dst, H5O_copy_t *cpy_info);
275 
276 /* Testing functions */
277 #ifdef H5A_TESTING
279 H5_DLL herr_t H5A__get_shared_rc_test(hid_t attr_id, hsize_t *ref_count);
280 #endif /* H5A_TESTING */
281 
282 #endif /* _H5Apkg_H */
283 
H5O_loc_t
Definition: H5Oprivate.h:152
ssize_t
int ssize_t
Definition: H5public.h:167
H5O_ainfo_t
Definition: H5Oprivate.h:782
H5A_bt2_ud_ins_t::id
H5O_fheap_id_t id
Definition: H5Apkg.h:149
H5A__get_type
H5_DLL hid_t H5A__get_type(H5A_t *attr)
Definition: H5Aint.c:894
H5A__set_version
H5_DLL herr_t H5A__set_version(const H5F_t *f, H5A_t *attr)
Definition: H5Aint.c:1997
H5A_t::sh_loc
H5O_shared_t sh_loc
Definition: H5Apkg.h:94
H5O__attr_write
H5_DLL herr_t H5O__attr_write(const H5O_loc_t *loc, H5A_t *attr)
Definition: H5Oattribute.c:892
H5A_t::obj_opened
hbool_t obj_opened
Definition: H5Apkg.h:96
H5A_dense_bt2_name_rec_t::id
H5O_fheap_id_t id
Definition: H5Apkg.h:107
f
hdr f
Definition: H5EA.c:755
H5A__iterate
H5_DLL herr_t H5A__iterate(const H5G_loc_t *loc, const char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5A_operator2_t op, void *op_data)
Definition: H5Aint.c:2619
H5O_shared_t
Definition: H5Oprivate.h:268
H5A_operator2_t
herr_t(* H5A_operator2_t)(hid_t location_id, const char *attr_name, const H5A_info_t *ainfo, void *op_data)
Definition: H5Apublic.h:34
H5A__open_by_name
H5_DLL H5A_t * H5A__open_by_name(const H5G_loc_t *loc, const char *obj_name, const char *attr_name)
Definition: H5Aint.c:531
H5A_bt2_ud_common_t
Definition: H5Apkg.h:129
H5A__dense_rename
H5_DLL herr_t H5A__dense_rename(H5F_t *f, const H5O_ainfo_t *ainfo, const char *old_name, const char *new_name)
Definition: H5Adense.c:893
H5FL_BLK_EXTERN
H5FL_BLK_EXTERN(attr_buf)
H5A_t::shared
H5A_shared_t * shared
Definition: H5Apkg.h:98
H5A_shared_t::dt
H5T_t * dt
Definition: H5Apkg.h:80
H5A__dense_create
H5_DLL herr_t H5A__dense_create(H5F_t *f, H5O_ainfo_t *ainfo)
Definition: H5Adense.c:180
H5A_shared_t::name
char * name
Definition: H5Apkg.h:77
H5A_shared_t::version
uint8_t version
Definition: H5Apkg.h:75
H5VL_object_t
Definition: H5VLprivate.h:39
H5A__get_shared_rc_test
herr_t H5A__get_shared_rc_test(hid_t attr_id, hsize_t *ref_count)
Definition: H5Atest.c:124
H5Sprivate.h
uint32_t
uint32_t
Definition: H5overflow.txt:38
H5O__attr_remove_by_idx
H5_DLL herr_t H5O__attr_remove_by_idx(const H5O_loc_t *loc, H5_index_t idx_type, H5_iter_order_t order, hsize_t n)
Definition: H5Oattribute.c:1606
H5A__get_name
H5_DLL ssize_t H5A__get_name(H5A_t *attr, size_t buf_size, char *buf)
Definition: H5Aint.c:816
H5A__iterate_old
H5_DLL herr_t H5A__iterate_old(hid_t loc_id, unsigned *attr_num, H5A_operator1_t op, void *op_data)
Definition: H5Aint.c:2687
H5A__open_by_idx
H5_DLL H5A_t * H5A__open_by_idx(const H5G_loc_t *loc, const char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n)
Definition: H5Aint.c:467
H5A_shared_t::crt_idx
H5O_msg_crt_idx_t crt_idx
Definition: H5Apkg.h:88
H5A_bt2_ud_common_t::corder
H5O_msg_crt_idx_t corder
Definition: H5Apkg.h:137
H5A_shared_t::ds_size
size_t ds_size
Definition: H5Apkg.h:84
H5A_dense_bt2_name_rec_t
struct H5A_dense_bt2_name_rec_t H5A_dense_bt2_name_rec_t
H5_DLLVAR
#define H5_DLLVAR
Definition: H5api_adpt.h:235
H5A__dense_post_copy_file_all
H5_DLL herr_t H5A__dense_post_copy_file_all(const H5O_loc_t *src_oloc, const H5O_ainfo_t *ainfo_src, H5O_loc_t *dst_oloc, H5O_ainfo_t *ainfo_dst, H5O_copy_t *cpy_info)
Definition: H5Aint.c:2491
H5A__get_ainfo
H5_DLL htri_t H5A__get_ainfo(H5F_t *f, H5O_t *oh, H5O_ainfo_t *ainfo)
Definition: H5Aint.c:1933
H5A_shared_t::dt_size
size_t dt_size
Definition: H5Apkg.h:81
H5A__rename_by_name
H5_DLL herr_t H5A__rename_by_name(H5G_loc_t loc, const char *obj_name, const char *old_attr_name, const char *new_attr_name)
Definition: H5Aint.c:2537
H5O__attr_create
H5_DLL herr_t H5O__attr_create(const H5O_loc_t *loc, H5A_t *attr)
Definition: H5Oattribute.c:205
H5O__attr_open_by_name
H5_DLL H5A_t * H5O__attr_open_by_name(const H5O_loc_t *loc, const char *name)
Definition: H5Oattribute.c:449
H5A__delete_by_name
H5_DLL herr_t H5A__delete_by_name(const H5G_loc_t *loc, const char *obj_name, const char *attr_name)
Definition: H5Aint.c:2729
H5G_loc_t
Definition: H5Gprivate.h:144
uint8_t
unsigned char uint8_t
Definition: H5private.h:429
H5A_bt2_ud_common_t
struct H5A_bt2_ud_common_t H5A_bt2_ud_common_t
H5A_bt2_ud_common_t::flags
uint8_t flags
Definition: H5Apkg.h:136
H5Aprivate.h
H5A_bt2_ud_common_t::f
H5F_t * f
Definition: H5Apkg.h:131
htri_t
int htri_t
Definition: H5public.h:160
H5A__dense_iterate
H5_DLL herr_t H5A__dense_iterate(H5F_t *f, hid_t loc_id, const H5O_ainfo_t *ainfo, H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_attr, const H5A_attr_iter_op_t *attr_op, void *op_data)
Definition: H5Adense.c:1171
H5A_shared_t::ds
H5S_t * ds
Definition: H5Apkg.h:83
H5_iter_order_t
H5_iter_order_t
Definition: H5public.h:295
H5A__close
H5_DLL herr_t H5A__close(H5A_t *attr)
Definition: H5Aint.c:1192
H5A_bt2_found_t
herr_t(* H5A_bt2_found_t)(const H5A_t *attr, hbool_t *took_ownership, void *op_data)
Definition: H5Apkg.h:122
H5A__compact_build_table
H5_DLL herr_t H5A__compact_build_table(H5F_t *f, H5O_t *oh, H5_index_t idx_type, H5_iter_order_t order, H5A_attr_table_t *atable)
Definition: H5Aint.c:1448
H5O__attr_remove
H5_DLL herr_t H5O__attr_remove(const H5O_loc_t *loc, const char *name)
Definition: H5Oattribute.c:1524
H5O_t
Definition: H5Opkg.h:279
H5A__attr_release_table
H5_DLL herr_t H5A__attr_release_table(H5A_attr_table_t *atable)
Definition: H5Aint.c:1889
hid_t
int64_t hid_t
Definition: H5Ipublic.h:55
H5A_bt2_ud_ins_t
Definition: H5Apkg.h:146
H5A_shared_t::encoding
H5T_cset_t encoding
Definition: H5Apkg.h:78
H5A_shared_t::data_size
size_t data_size
Definition: H5Apkg.h:87
H5A_bt2_ud_common_t::shared_fheap
H5HF_t * shared_fheap
Definition: H5Apkg.h:133
H5O__attr_exists
H5_DLL htri_t H5O__attr_exists(const H5O_loc_t *loc, const char *name)
Definition: H5Oattribute.c:1792
H5A__attr_copy_file
H5_DLL H5A_t * H5A__attr_copy_file(const H5A_t *attr_src, H5F_t *file_dst, hbool_t *recompute_size, H5O_copy_t *cpy_info)
H5T_t
Definition: H5Tpkg.h:350
H5A_dense_bt2_name_rec_t::flags
uint8_t flags
Definition: H5Apkg.h:108
H5A_shared_t::data
void * data
Definition: H5Apkg.h:86
H5A_BT2_CORDER
H5_DLLVAR const H5B2_class_t H5A_BT2_CORDER[1]
Definition: H5Apkg.h:176
H5A__dense_delete
H5_DLL herr_t H5A__dense_delete(H5F_t *f, H5O_ainfo_t *ainfo)
Definition: H5Adense.c:1862
H5A_info_t
Definition: H5Apublic.h:26
H5O_copy_t
Definition: H5Oprivate.h:172
H5A__create
H5_DLL H5A_t * H5A__create(const H5G_loc_t *loc, const char *attr_name, const H5T_t *type, const H5S_t *space, hid_t acpl_id)
Definition: H5Aint.c:141
H5Oprivate.h
H5A_bt2_ud_common_t::name_hash
uint32_t name_hash
Definition: H5Apkg.h:135
H5A_dense_bt2_name_rec_t::corder
H5O_msg_crt_idx_t corder
Definition: H5Apkg.h:109
H5A_BT2_NAME
H5_DLLVAR const H5B2_class_t H5A_BT2_NAME[1]
Definition: H5Apkg.h:173
H5A__dense_insert
H5_DLL herr_t H5A__dense_insert(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr)
Definition: H5Adense.c:450
H5A_attr_table_t::nattrs
size_t nattrs
Definition: H5Apkg.h:154
H5A__dense_remove
H5_DLL herr_t H5A__dense_remove(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name)
Definition: H5Adense.c:1370
H5S_t
Definition: H5Spkg.h:317
H5O_msg_crt_idx_t
uint32_t H5O_msg_crt_idx_t
Definition: H5Opublic.h:155
H5A__dense_exists
H5_DLL htri_t H5A__dense_exists(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name)
Definition: H5Adense.c:1712
H5T_cset_t
H5T_cset_t
Definition: H5Tpublic.h:78
H5FL_EXTERN
H5FL_EXTERN(H5A_t)
H5O__attr_update_shared
H5_DLL herr_t H5O__attr_update_shared(H5F_t *f, H5O_t *oh, H5A_t *attr, H5O_shared_t *sh_mesg)
Definition: H5Oattribute.c:736
H5A_t::path
H5G_name_t path
Definition: H5Apkg.h:97
H5A__copy
H5_DLL H5A_t * H5A__copy(H5A_t *new_attr, const H5A_t *old_attr)
Definition: H5Aint.c:1047
H5A__write
H5_DLL herr_t H5A__write(H5A_t *attr, const H5T_t *mem_type, const void *buf)
Definition: H5Aint.c:702
H5A_dense_bt2_name_rec_t
Definition: H5Apkg.h:106
H5A_attr_table_t::attrs
H5A_t ** attrs
Definition: H5Apkg.h:155
H5G_name_t
Definition: H5Gprivate.h:130
H5A__open
H5_DLL H5A_t * H5A__open(const H5G_loc_t *loc, const char *attr_name)
Definition: H5Aint.c:422
H5A__exists_by_name
H5_DLL htri_t H5A__exists_by_name(H5G_loc_t loc, const char *obj_name, const char *attr_name)
Definition: H5Aint.c:1337
H5A__dense_build_table
H5_DLL herr_t H5A__dense_build_table(H5F_t *f, const H5O_ainfo_t *ainfo, H5_index_t idx_type, H5_iter_order_t order, H5A_attr_table_t *atable)
Definition: H5Aint.c:1556
H5A_bt2_ud_common_t::found_op
H5A_bt2_found_t found_op
Definition: H5Apkg.h:138
H5A__get_info
H5_DLL herr_t H5A__get_info(const H5A_t *attr, H5A_info_t *ainfo)
Definition: H5Aint.c:1005
H5_DLL
#define H5_DLL
Definition: H5api_adpt.h:234
H5O_fheap_id_t
Definition: H5Oprivate.h:146
H5A__get_create_plist
H5_DLL hid_t H5A__get_create_plist(H5A_t *attr)
Definition: H5Aint.c:962
H5A__shared_free
H5_DLL herr_t H5A__shared_free(H5A_t *attr)
Definition: H5Aint.c:1111
H5Tprivate.h
H5O__attr_open_by_idx
H5_DLL H5A_t * H5O__attr_open_by_idx(const H5O_loc_t *loc, H5_index_t idx_type, H5_iter_order_t order, hsize_t n)
Definition: H5Oattribute.c:584
H5A__is_shared_test
htri_t H5A__is_shared_test(hid_t attr_id)
Definition: H5Atest.c:92
H5A_dense_bt2_corder_rec_t
struct H5A_dense_bt2_corder_rec_t H5A_dense_bt2_corder_rec_t
H5A__create_by_name
H5_DLL H5A_t * H5A__create_by_name(const H5G_loc_t *loc, const char *obj_name, const char *attr_name, const H5T_t *type, const H5S_t *space, hid_t acpl_id)
Definition: H5Aint.c:304
H5A_shared_t::nrefs
unsigned nrefs
Definition: H5Apkg.h:89
H5A_bt2_ud_ins_t::common
H5A_bt2_ud_common_t common
Definition: H5Apkg.h:148
H5A__delete_by_idx
H5_DLL herr_t H5A__delete_by_idx(const H5G_loc_t *loc, const char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n)
Definition: H5Aint.c:2775
H5A_t
Definition: H5Apkg.h:93
H5A__attr_iterate_table
H5_DLL herr_t H5A__attr_iterate_table(const H5A_attr_table_t *atable, hsize_t skip, hsize_t *last_attr, hid_t loc_id, const H5A_attr_iter_op_t *attr_op, void *op_data)
Definition: H5Aint.c:1808
H5A_operator1_t
herr_t(* H5A_operator1_t)(hid_t location_id, const char *attr_name, void *operator_data)
Definition: H5Apublic.h:106
H5O__attr_iterate
H5_DLL herr_t H5O__attr_iterate(hid_t loc_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_attr, const H5A_attr_iter_op_t *op, void *op_data)
Definition: H5Oattribute.c:1312
H5F_t
Definition: H5Fpkg.h:374
n
*s *s n
Definition: H5HLdbg.c:111
H5O__attr_rename
H5_DLL herr_t H5O__attr_rename(const H5O_loc_t *loc, const char *old_name, const char *new_name)
Definition: H5Oattribute.c:1137
H5A__read
H5_DLL herr_t H5A__read(const H5A_t *attr, const H5T_t *mem_type, void *buf)
Definition: H5Aint.c:599
H5FLprivate.h
herr_t
int herr_t
Definition: H5public.h:128
H5A__dense_open
H5_DLL H5A_t * H5A__dense_open(H5F_t *f, const H5O_ainfo_t *ainfo, const char *name)
Definition: H5Adense.c:361
H5A_bt2_ud_common_t::found_op_data
void * found_op_data
Definition: H5Apkg.h:139
hbool_t
bool hbool_t
Definition: H5public.h:159
H5A__open_common
H5_DLL herr_t H5A__open_common(const H5G_loc_t *loc, H5A_t *attr)
Definition: H5Aint.c:371
H5A_shared_t
struct H5A_shared_t H5A_shared_t
H5A__attr_post_copy_file
H5_DLL herr_t H5A__attr_post_copy_file(const H5O_loc_t *src_oloc, const H5A_t *mesg_src, H5O_loc_t *dst_oloc, const H5A_t *mesg_dst, H5O_copy_t *cpy_info)
Definition: H5Aint.c:2343
H5A__dense_remove_by_idx
H5_DLL herr_t H5A__dense_remove_by_idx(H5F_t *f, const H5O_ainfo_t *ainfo, H5_index_t idx_type, H5_iter_order_t order, hsize_t n)
Definition: H5Adense.c:1584
H5A_dense_bt2_corder_rec_t::flags
uint8_t flags
Definition: H5Apkg.h:117
H5HF_t
Definition: H5HFpkg.h:459
H5A_bt2_ud_common_t::fheap
H5HF_t * fheap
Definition: H5Apkg.h:132
H5A_dense_bt2_corder_rec_t::id
H5O_fheap_id_t id
Definition: H5Apkg.h:116
H5A_dense_bt2_corder_rec_t
Definition: H5Apkg.h:115
hsize_t
hsize_t
Definition: H5overflow.txt:44
H5A_attr_iter_op_t
Definition: H5Aprivate.h:54
H5B2_class_t
Definition: H5B2private.h:82
H5A_dense_bt2_name_rec_t::hash
uint32_t hash
Definition: H5Apkg.h:110
H5A_bt2_ud_ins_t
struct H5A_bt2_ud_ins_t H5A_bt2_ud_ins_t
H5HFprivate.h
H5_index_t
H5_index_t
Definition: H5public.h:316
H5A_t::oloc
H5O_loc_t oloc
Definition: H5Apkg.h:95
H5B2private.h
H5O__attr_count
H5_DLL int H5O__attr_count(const H5O_loc_t *loc)
Definition: H5Oattribute.c:1946
H5A_attr_table_t
Definition: H5Apkg.h:153
H5A_shared_t
Definition: H5Apkg.h:74
H5A_bt2_ud_common_t::name
const char * name
Definition: H5Apkg.h:134
H5A_dense_bt2_corder_rec_t::corder
H5O_msg_crt_idx_t corder
Definition: H5Apkg.h:118
H5A__close_cb
H5_DLL herr_t H5A__close_cb(H5VL_object_t *attr_vol_obj)
Definition: H5Aint.c:1157
H5A__dense_write
H5_DLL herr_t H5A__dense_write(H5F_t *f, const H5O_ainfo_t *ainfo, H5A_t *attr)
Definition: H5Adense.c:753