summaryrefslogtreecommitdiffstats
path: root/src/H5Apkg.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2006-12-19 01:59:28 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2006-12-19 01:59:28 (GMT)
commit43ec5b7ef4df2d72bcde2da9366d55383b8f40e8 (patch)
tree705125a1b023c990db69abd82ae878eb90800447 /src/H5Apkg.h
parent5865018c85449e4b03bb3f5d5e7d7948e110fe17 (diff)
downloadhdf5-43ec5b7ef4df2d72bcde2da9366d55383b8f40e8.zip
hdf5-43ec5b7ef4df2d72bcde2da9366d55383b8f40e8.tar.gz
hdf5-43ec5b7ef4df2d72bcde2da9366d55383b8f40e8.tar.bz2
[svn-r13074] Description:
Add support for opening attributes in dense and/or shared storage by index. Move routines for building and operating on tables of attributes into separate source module. Fix bug where reverting from "dense" to "compact" storage would 'unshare' attributes. Minor code cleanups, etc. Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
Diffstat (limited to 'src/H5Apkg.h')
-rw-r--r--src/H5Apkg.h24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/H5Apkg.h b/src/H5Apkg.h
index 5f8d477..ca7983f 100644
--- a/src/H5Apkg.h
+++ b/src/H5Apkg.h
@@ -119,15 +119,13 @@ typedef struct H5A_bt2_ud_ins_t {
typedef struct {
size_t nattrs; /* # of attributes in table */
H5A_t *attrs; /* Pointer to array of attributes */
- uint8_t *flags; /* Pointer to array of message flags for attributes */
} H5A_attr_table_t;
/* Attribute iteration operator for internal library callbacks */
-typedef herr_t (*H5A_lib_iterate_t)(const H5A_t *attr, unsigned mesg_flags,
- void *op_data);
+typedef herr_t (*H5A_lib_iterate_t)(const H5A_t *attr, void *op_data);
/* Describe kind of callback to make for each attribute */
-typedef struct {
+struct H5A_attr_iter_op_t {
enum {
H5A_ATTR_OP_APP, /* Application callback */
H5A_ATTR_OP_LIB /* Library internal callback */
@@ -136,7 +134,7 @@ typedef struct {
H5A_operator_t app_op; /* Application callback for each attribute */
H5A_lib_iterate_t lib_op; /* Library internal callback for each attribute */
} u;
-} H5A_attr_iterate_t;
+};
/*****************************/
@@ -169,16 +167,24 @@ H5_DLL H5A_t *H5A_dense_open(H5F_t *f, hid_t dxpl_id, const H5O_t *oh,
H5_DLL herr_t H5A_dense_write(H5F_t *f, hid_t dxpl_id, const H5O_t *oh,
const H5A_t *attr);
H5_DLL herr_t H5A_dense_iterate(H5F_t *f, hid_t dxpl_id, hid_t loc_id,
- haddr_t attr_fheap_addr, haddr_t name_bt2_addr, unsigned skip,
- unsigned *last_attr, const H5A_attr_iterate_t *attr_op, void *op_data);
+ haddr_t attr_fheap_addr, haddr_t name_bt2_addr, H5_iter_order_t order,
+ unsigned skip, unsigned *last_attr, const H5A_attr_iter_op_t *attr_op,
+ void *op_data);
H5_DLL herr_t H5A_dense_remove(H5F_t *f, hid_t dxpl_id, const H5O_t *oh,
const char *name);
H5_DLL htri_t H5A_dense_exists(H5F_t *f, hid_t dxpl_id, const H5O_t *oh,
const char *name);
/* Attribute table operations */
-H5_DLL herr_t H5A_dense_build_table(H5F_t *f, hid_t dxpl_id, const H5O_t *oh,
- H5_index_t idx_type, H5_iter_order_t order, H5A_attr_table_t *atable);
+H5_DLL herr_t H5A_compact_build_table(H5F_t *f, hid_t dxpl_id, H5O_t *oh,
+ H5_index_t idx_type, H5_iter_order_t order, H5A_attr_table_t *atable,
+ unsigned *oh_flags);
+H5_DLL herr_t H5A_dense_build_table(H5F_t *f, hid_t dxpl_id, hsize_t nattrs,
+ haddr_t attr_fheap_addr, haddr_t name_bt2_addr, H5_index_t idx_type,
+ H5_iter_order_t order, H5A_attr_table_t *atable);
+H5_DLL herr_t H5A_attr_iterate_table(const H5A_attr_table_t *atable,
+ unsigned skip, unsigned *last_attr, hid_t loc_id,
+ const H5A_attr_iter_op_t *attr_op, void *op_data);
H5_DLL herr_t H5A_attr_release_table(H5A_attr_table_t *atable);
/* Attribute object header routines */