diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2006-12-12 00:42:19 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2006-12-12 00:42:19 (GMT) |
commit | a867b8f5fd7ddf31aa23c8814a30444abb8bf6cf (patch) | |
tree | 1320ad77f30ce9cfa7a4d0409f69fe7a50ce3d38 /src/H5Apkg.h | |
parent | aa00130f300b2eb04474ff1b2e0eabbbe847b082 (diff) | |
download | hdf5-a867b8f5fd7ddf31aa23c8814a30444abb8bf6cf.zip hdf5-a867b8f5fd7ddf31aa23c8814a30444abb8bf6cf.tar.gz hdf5-a867b8f5fd7ddf31aa23c8814a30444abb8bf6cf.tar.bz2 |
[svn-r13045] Description:
Switch from using H5L_index_t/H5L_INDEX_<foo> to H5_index_t/H5_INDEX_<foo>
in order to accommodate indices on aspects of attributes as well as links.
Add basic support for deleting attributes in dense storage (needs more
support/tests for shared attributes in dense storage still).
Misc. 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.h | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/H5Apkg.h b/src/H5Apkg.h index 754c215..85be22e 100644 --- a/src/H5Apkg.h +++ b/src/H5Apkg.h @@ -114,6 +114,29 @@ typedef struct H5A_bt2_ud_ins_t { uint8_t id[H5A_DENSE_FHEAP_ID_LEN]; /* Heap ID of attribute to insert */ } H5A_bt2_ud_ins_t; +/* Data structure to hold table of attributes for an object */ +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, uint8_t mesg_flags, + void *op_data); + +/* Describe kind of callback to make for each attribute */ +typedef struct { + enum { + H5A_ATTR_OP_APP, /* Application callback */ + H5A_ATTR_OP_LIB /* Library internal callback */ + } op_type; + union { + 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; + /*****************************/ /* Package Private Variables */ @@ -146,10 +169,18 @@ 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, H5A_operator_t op, void *op_data); + unsigned *last_attr, const H5A_attr_iterate_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); + +/* 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_attr_release_table(H5A_attr_table_t *atable); /* Attribute object header routines */ H5_DLL herr_t H5O_attr_reset(void *_mesg); +H5_DLL herr_t H5O_attr_delete(H5F_t *f, hid_t dxpl_id, const void *_mesg, hbool_t adj_link); H5_DLL herr_t H5O_attr_get_share(const void *_mesg, H5O_shared_t *sh); #endif /* _H5Apkg_H */ |