diff options
Diffstat (limited to 'src/H5Lpublic.h')
-rw-r--r-- | src/H5Lpublic.h | 58 |
1 files changed, 32 insertions, 26 deletions
diff --git a/src/H5Lpublic.h b/src/H5Lpublic.h index 2f0bf28..a351ab6 100644 --- a/src/H5Lpublic.h +++ b/src/H5Lpublic.h @@ -34,28 +34,34 @@ extern "C" { #endif -/* Link classes. +/* Maximum length of a link's name */ +/* (encoded in a 32-bit unsigned integer) */ +#define H5L_MAX_LINK_NAME_LEN ((uint32_t)(-1)) /* (4GB - 1) */ + +/* Link class types. * Values less than 64 are reserved for the HDF5 library's internal use. - * Values 64 to 255 are for "user-defined" link types; these types are + * Values 64 to 255 are for "user-defined" link class types; these types are * defined by HDF5 but their behavior can be overridden by users. * Users who want to create new classes of links should contact the HDF5 * development team at hdfhelp@ncsa.uiuc.edu . * These values can never change because they appear in HDF5 files. */ -typedef int H5L_link_t; -#define H5L_LINK_ERROR (-1) -#define H5L_LINK_HARD 0 -#define H5L_LINK_SOFT 1 -#define H5L_LINK_BUILTIN_MAX H5L_LINK_SOFT /* Maximum value link value for "built-in" link types */ -#define H5L_LINK_UD_MIN 64 /*link ids at or above this value are "user-defined" link types. */ -#define H5L_LINK_EXTERNAL 64 -#define H5L_LINK_MAX 255 /*maximum link id */ +typedef enum { + H5L_TYPE_ERROR = (-1), /* Invalid link type id */ + H5L_TYPE_HARD = 0, /* Hard link id */ + H5L_TYPE_SOFT = 1, /* Soft link id */ + H5L_TYPE_EXTERNAL = 64, /* External link id */ + H5L_TYPE_MAX = 255 /* Maximum link type id */ +} H5L_type_t; +#define H5L_TYPE_BUILTIN_MAX H5L_TYPE_SOFT /* Maximum value link value for "built-in" link types */ +#define H5L_TYPE_UD_MIN H5L_TYPE_EXTERNAL /* Link ids at or above this value are "user-defined" link types. */ /* Metadata buffer for user query function */ -typedef struct H5L_linkinfo_t { +typedef struct { H5T_cset_t cset; /* Character set of link name */ - time_t ctime; /* Creation time */ - H5L_link_t linkclass; /* Type of link */ + int64_t corder; /* Creation order */ + hbool_t corder_valid; /* Indicate if creation order is valid */ + H5L_type_t type; /* Type of link */ union { haddr_t address; /* Address hard link points to */ size_t link_size; /* Size of a soft link or UD link */ @@ -64,11 +70,11 @@ typedef struct H5L_linkinfo_t { #define H5L_SAME_LOC 0 -/* The H5L_link_class_t struct can be used to override the behavior of a +/* The H5L_class_t struct can be used to override the behavior of a * "user-defined" link class. Users should populate the struct with callback * functions defined below. */ -/* Current version of the H5L_link_class_t struct */ +/* Current version of the H5L_class_t struct */ #define H5L_LINK_CLASS_T_VERS (0) /* Callback prototypes for user-defined links */ @@ -78,11 +84,11 @@ typedef herr_t (*H5L_create_func_t)(const char * link_name, hid_t loc_group, voi /* Callback for when the link is moved */ typedef herr_t (*H5L_move_func_t)(const char * new_name, hid_t new_loc, void * udata, size_t udata_size); -/* Callback for when the link is moved */ +/* Callback for when the link is copied */ typedef herr_t (*H5L_copy_func_t)(const char * new_name, hid_t new_loc, void * udata, size_t udata_size); -/* The actual link function, called during traversal */ -typedef herr_t (*H5L_func_t)(const char * link_name, hid_t cur_group, void * udata, size_t udata_size, hid_t lapl_id); +/* Callback during link traversal */ +typedef herr_t (*H5L_traverse_func_t)(const char * link_name, hid_t cur_group, void * udata, size_t udata_size, hid_t lapl_id); /* Callback for when the link is deleted */ typedef herr_t (*H5L_delete_func_t)(const char * link_name, hid_t loc_group, void * udata, size_t udata_size); @@ -92,17 +98,17 @@ typedef herr_t (*H5L_delete_func_t)(const char * link_name, hid_t loc_group, voi typedef ssize_t (*H5L_query_func_t)(const char * link_name, void * udata, size_t udata_size, void * buf /*out*/, size_t buf_size); /* User-defined link types */ -typedef struct H5L_link_class_t { +typedef struct { int version; /* Version number of this struct */ - H5L_link_t id; /* Link type ID */ + H5L_type_t id; /* Link type ID */ const char *comment; /* Comment for debugging */ H5L_create_func_t create_func; /* Callback during link creation */ H5L_move_func_t move_func; /* Callback after moving link */ H5L_copy_func_t copy_func; /* Callback after copying link */ - H5L_func_t trav_func; /* The main traversal function */ + H5L_traverse_func_t trav_func; /* Callback during link traversal */ H5L_delete_func_t del_func; /* Callback for link deletion */ H5L_query_func_t query_func; /* Callback for queries */ -} H5L_link_class_t; +} H5L_class_t; #define H5L_ELINK_PREFIX_PROP "elink_prefix" @@ -127,11 +133,11 @@ H5_DLL herr_t H5Lget_linkinfo(hid_t loc_id, const char *name, /* UD link functions */ H5_DLL herr_t H5Lcreate_ud(hid_t link_loc_id, const char *link_name, - H5L_link_t link_type, const void * udata, size_t udata_size, + H5L_type_t link_type, const void * udata, size_t udata_size, hid_t lcpl_id, hid_t lapl_id); -H5_DLL herr_t H5Lregister(const H5L_link_class_t *cls); -H5_DLL herr_t H5Lunregister(H5L_link_t id); -H5_DLL htri_t H5Lis_registered(H5L_link_t id); +H5_DLL herr_t H5Lregister(const H5L_class_t *cls); +H5_DLL herr_t H5Lunregister(H5L_type_t id); +H5_DLL htri_t H5Lis_registered(H5L_type_t id); /* External link functions */ H5_DLL herr_t H5Lunpack_elink_val(char * ext_linkval/*in*/, |