hdf5-1.8.9: src/Bindings/HDF5/Raw/H5A.hsc
module Bindings.HDF5.Raw.H5A where
#include <bindings.h>
#include <H5Apublic.h>
import Foreign.C.String
import Foreign.C.Types
import Foreign.Ptr
import Foreign.Storable
import Bindings.HDF5.Raw.H5
import Bindings.HDF5.Raw.H5I -- IDs
import Bindings.HDF5.Raw.H5O -- Object Headers
import Bindings.HDF5.Raw.H5T -- Datatypes
import Foreign.Ptr.Conventions
-- |Information struct for attribute (for 'h5a_get_info'/'h5a_get_info_by_idx')
#starttype H5A_info_t
-- |Indicate if creation order is valid
#field corder_valid, <hbool_t>
-- |Creation order
#field corder, <H5O_msg_crt_idx_t>
-- |Character set of attribute name
#field cset, <H5T_cset_t>
-- |Size of raw data
#field data_size, <hsize_t>
#stoptype
-- | Typedef for 'h5a_iterate2' callbacks.
--
-- @
-- typedef herr_t (*H5A_operator2_t)(hid_t location_id/*in*/,
-- const char *attr_name/*in*/, const H5A_info_t *ainfo/*in*/, void *op_data/*in,out*/);
-- @
type H5A_operator2_t a = FunPtr (HId_t -> CString -> In H5A_info_t -> InOut a -> IO HErr_t)
-- * Public function prototypes
-- |Creates an attribute on an object
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object (dataset or group) to be attached to
--
-- [@ attr_name :: CString @] Name of attribute to locate and open
--
-- [@ type_id :: HId_t @] ID of datatype for attribute
--
-- [@ space_id :: HId_t @] ID of dataspace for attribute
--
-- [@ acpl_id :: HId_t @] ID of creation property list (currently not used)
--
-- [@ aapl_id :: HId_t @] Attribute access property list
--
-- Returns non-negative on success / negative on failure
--
-- This function creates an attribute which is attached to the object
-- specified with 'loc_id'. The name specified with 'attr_name' for
-- each attribute for an object must be unique for that object. The 'type_id'
-- and 'space_id' are created with the H5T and H5S interfaces respectively.
-- The 'aapl_id' property list is currently unused, but will be used in the
-- future for optional attribute access properties. The attribute ID returned
-- from this function must be released with 'h5a_close' or resource leaks will
-- develop.
--
-- > hid_t H5Acreate2(hid_t loc_id, const char *attr_name, hid_t type_id,
-- > hid_t space_id, hid_t acpl_id, hid_t aapl_id);
#ccall H5Acreate2, <hid_t> -> CString -> <hid_t> -> <hid_t> -> <hid_t> -> <hid_t> -> IO <hid_t>
-- |Creates an attribute on an object
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object (dataset or group) to be attached to
-- [@ obj_name :: CString @] Name of object relative to location
-- [@ attr_name :: CString @] Name of attribute to locate and open
-- [@ type_id :: HId_t @] ID of datatype for attribute
-- [@ space_id :: HId_t @] ID of dataspace for attribute
-- [@ acpl_id :: HId_t @] ID of creation property list (currently not used)
-- [@ aapl_id :: HId_t @] Attribute access property list
-- [@ lapl_id :: HId_t @] Link access property list
--
-- Returns non-negative on success / negative on failure
--
-- This function creates an attribute which is attached to the object
-- specified with 'loc_id/obj_name'. The name specified with 'attr_name' for
-- each attribute for an object must be unique for that object. The 'type_id'
-- and 'space_id' are created with the H5T and H5S interfaces respectively.
-- The 'aapl_id' property list is currently unused, but will be used in the
-- future for optional attribute access properties. The attribute ID returned
-- from this function must be released with h5a_close or resource leaks will
-- develop.
--
-- > hid_t H5Acreate_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
-- > hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id);
#ccall H5Acreate_by_name, <hid_t> -> CString -> CString -> <hid_t> -> <hid_t> -> <hid_t> -> <hid_t> -> <hid_t> -> IO <hid_t>
-- |Opens an attribute for an object by looking up the attribute name
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object that attribute is attached to
--
-- [@ attr_name :: CString @] Name of attribute to locate and open
--
-- [@ aapl_id :: HId_t @] Attribute access property list
--
-- Returns ID of attribute on success, negative on failure
--
-- This function opens an existing attribute for access. The attribute
-- name specified is used to look up the corresponding attribute for the
-- object. The attribute ID returned from this function must be released with
-- 'h5a_close' or resource leaks will develop.
--
-- > hid_t H5Aopen(hid_t obj_id, const char *attr_name, hid_t aapl_id);
#ccall H5Aopen, <hid_t> -> CString -> <hid_t> -> IO <hid_t>
-- |Opens an attribute for an object by looking up the attribute name
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object that attribute is attached to
--
-- [@ obj_name :: CString @] Name of object relative to location
--
-- [@ attr_name :: CString @] Name of attribute to locate and open
--
-- [@ aapl_id :: HId_t @] Attribute access property list
--
-- [@ lapl_id :: HId_t @] Link access property list
--
-- Returns ID of attribute on success, negative on failure
--
-- This function opens an existing attribute for access. The attribute
-- name specified is used to look up the corresponding attribute for the
-- object. The attribute ID returned from this function must be released with
-- 'h5a_close' or resource leaks will develop.
--
-- > hid_t H5Aopen_by_name(hid_t loc_id, const char *obj_name,
-- > const char *attr_name, hid_t aapl_id, hid_t lapl_id);
#ccall H5Aopen_by_name, <hid_t> -> CString -> CString -> <hid_t> -> <hid_t> -> IO <hid_t>
-- hid_t H5Aopen_by_idx(hid_t loc_id, const char *obj_name,
-- H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id,
-- hid_t lapl_id);
#ccall H5Aopen_by_idx, <hid_t> -> CString -> <H5_index_t> -> <H5_iter_order_t> -> <hsize_t> -> <hid_t> -> <hid_t> -> IO <hid_t>
-- TODO: Figure out how many elements elements 'buf' is expected to contain, and why
-- |Write out data to an attribute
--
-- Parameters:
--
-- [@ attr_id :: HId_t @] Attribute to write
--
-- [@ dtype_id :: HId_t @] Memory datatype of buffer
--
-- [@ buf :: InArray a @] Buffer of data to write
--
-- Returns non-negative on success / negative on failure
--
-- This function writes a complete attribute to disk.
--
-- > herr_t H5Awrite(hid_t attr_id, hid_t type_id, const void *buf);
#ccall H5Awrite, <hid_t> -> <hid_t> -> InArray a -> IO <herr_t>
-- |Read in data from an attribute
--
-- Parameters:
--
-- [@ attr_id :: HId_t @] Attribute to read
--
-- [@ dtype_id :: HId_t @] Memory datatype of buffer
--
-- [@ buf :: OutArray a @] Buffer for data to read
--
-- Returns non-negative on success / negative on failure
--
-- This function reads a complete attribute from disk.
--
-- > herr_t H5Aread(hid_t attr_id, hid_t type_id, void *buf);
#ccall H5Aread, <hid_t> -> <hid_t> -> OutArray a -> IO <herr_t>
-- |Close an attribute ID
--
-- Parameters:
--
-- [@ attr_id :: HId_t @] Attribute to release access to
--
-- Returns non-negative on success / negative on failure
--
-- This function releases an attribute from use. Further use of the
-- attribute ID will result in undefined behavior.
--
-- > herr_t H5Aclose(hid_t attr_id);
#ccall H5Aclose, <hid_t> -> IO <herr_t>
-- |Gets a copy of the dataspace for an attribute
--
-- Parameters:
--
-- [@ attr_id :: HId_t @] Attribute to get dataspace of
--
-- Returns a dataspace ID on success, negative on failure
--
-- This function retrieves a copy of the dataspace for an attribute.
-- The dataspace ID returned from this function must be released with
-- 'h5s_close' or resource leaks will develop.
--
-- > hid_t H5Aget_space(hid_t attr_id);
#ccall H5Aget_space, <hid_t> -> IO <hid_t>
-- |Gets a copy of the datatype for an attribute
--
-- Parameters:
--
-- [@ attr_id :: HId_t @] Attribute to get datatype of
--
-- Returns a datatype ID on success, negative on failure
--
-- This function retrieves a copy of the datatype for an attribute.
-- The datatype ID returned from this function must be released with
-- 'h5t_close' or resource leaks will develop.
--
-- > hid_t H5Aget_type(hid_t attr_id);
#ccall H5Aget_type, <hid_t> -> IO <hid_t>
-- |Gets a copy of the creation property list for an attribute
--
-- Parameters:
--
-- [@ attr_id :: HId_t @] Attribute to get name of
--
-- This function returns the ID of a copy of the attribute's creation
-- property list, or negative on failure. The resulting ID must be closed
-- with 'h5p_close' or resource leaks will occur.
--
-- > hid_t H5Aget_create_plist(hid_t attr_id);
#ccall H5Aget_create_plist, <hid_t> -> IO <hid_t>
-- TODO: check semantics of returned strings (null terminated and/or returns size?)
-- |Gets a copy of the name for an attribute
--
-- Parameters:
--
-- [@ attr_id :: HId_t @] Attribute to get name of
--
-- [@ buf_size :: CSize @] The size of the buffer to store the string in.
--
-- [@ buf :: OutArray CChar @] Buffer to store name in
--
-- This function returns the length of the attribute's name (which may be
-- longer than 'buf_size') on success or negative for failure.
--
-- This function retrieves the name of an attribute for an attribute ID.
-- Up to 'buf_size' characters are stored in 'buf' followed by a '\0' string
-- terminator. If the name of the attribute is longer than 'buf_size'-1,
-- the string terminator is stored in the last position of the buffer to
-- properly terminate the string.
--
-- > ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf);
#ccall H5Aget_name, <hid_t> -> <size_t> -> OutArray CChar -> IO <ssize_t>
-- |Retrieve name of an attribute, according to the order within an index.
--
-- Same pattern of behavior as 'h5i_get_name'
--
-- Returns non-negative length of name, with information in @name@ buffer
-- on success / negative on failure
--
-- > ssize_t H5Aget_name_by_idx(hid_t loc_id, const char *obj_name,
-- > H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
-- > char *name /*out*/, size_t size, hid_t lapl_id);
#ccall H5Aget_name_by_idx, <hid_t> -> CString -> <H5_index_t> -> <H5_iter_order_t> -> <hsize_t> -> OutArray CChar -> <size_t> -> <hid_t> -> IO <ssize_t>
-- |Returns the amount of storage size that is allocated for this attribute.
-- The return value may be zero if no data has been stored.
--
-- > hsize_t H5Aget_storage_size(hid_t attr_id);
#ccall H5Aget_storage_size, <hid_t> -> IO <hsize_t>
-- |Retrieve information about an attribute.
--
-- Returns non-negative on success / negative on failure
--
-- > herr_t H5Aget_info(hid_t attr_id, H5A_info_t *ainfo /*out*/);
#ccall H5Aget_info, <hid_t> -> Out <H5A_info_t> -> IO <herr_t>
-- |Retrieve information about an attribute by name.
--
-- Returns non-negative on success / negative on failure
--
-- > herr_t H5Aget_info_by_name(hid_t loc_id, const char *obj_name,
-- > const char *attr_name, H5A_info_t *ainfo /*out*/, hid_t lapl_id);
#ccall H5Aget_info_by_name, <hid_t> -> CString -> CString -> Out H5A_info_t -> <hid_t> -> IO <herr_t>
-- |Retrieve information about an attribute, according to the order within an index.
--
-- Returns non-negative on success / negative on failure
--
-- > herr_t H5Aget_info_by_idx(hid_t loc_id, const char *obj_name,
-- > H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
-- > H5A_info_t *ainfo /*out*/, hid_t lapl_id);
#ccall H5Aget_info_by_idx, <hid_t> -> CString -> <H5_index_t> -> <H5_iter_order_t> -> <hsize_t> -> Out <H5A_info_t> -> <hid_t> -> IO <herr_t>
-- |Rename an attribute
--
-- Returns non-negative on success / negative on failure
--
-- > herr_t H5Arename(hid_t loc_id, const char *old_name, const char *new_name);
#ccall H5Arename, <hid_t> -> CString -> CString -> IO <herr_t>
-- |Rename an attribute
--
-- Returns non-negative on success / negative on failure
--
-- > herr_t H5Arename_by_name(hid_t loc_id, const char *obj_name,
-- > const char *old_attr_name, const char *new_attr_name, hid_t lapl_id);
#ccall H5Arename_by_name, <hid_t> -> CString -> CString -> CString -> <hid_t> -> IO <herr_t>
-- |Calls a user's function for each attribute on an object.
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Base location for object
--
-- [@ idx_type :: H5_index_t @] Type of index to use
--
-- [@ order :: H5_iter_order_t @] Order to iterate over index
--
-- [@ idx :: InOut HSize_t @] Starting (IN) & Ending (OUT) attribute in index & order
--
-- [@ op :: H5A_operator2_t a @] User's function to pass each attribute to
--
-- [@ op_data :: InOut a @] User's data to pass through to iterator operator function
--
-- Returns a negative value if an error occurs, the return value of the
-- last operator if it was non-zero (which can be a negative value), or zero
-- if all attributes were processed.
--
-- This function interates over the attributes of dataset or group
-- specified with 'loc_id' & 'obj_name'. For each attribute of the object,
-- the 'op_data' and some additional information (specified below) are passed
-- to the 'op' function. The iteration begins with the '*idx'
-- object in the group and the next attribute to be processed by the operator
-- is returned in '*idx'.
--
-- The operation receives the ID for the group or dataset being iterated
-- over ('loc_id'), the name of the current attribute about the object
-- ('attr_name'), the attribute's \"info\" struct ('ainfo') and the pointer to
-- the operator data passed in to H5Aiterate2 ('op_data'). The return values
-- from an operator are:
--
-- * Zero causes the iterator to continue, returning zero when all
-- attributes have been processed.
--
-- * Positive causes the iterator to immediately return that positive
-- value, indicating short-circuit success. The iterator can be
-- restarted at the next attribute.
--
-- * Negative causes the iterator to immediately return that value,
-- indicating failure. The iterator can be restarted at the next
-- attribute.
--
-- > herr_t H5Aiterate2(hid_t loc_id, H5_index_t idx_type,
-- > H5_iter_order_t order, hsize_t *idx, H5A_operator2_t op, void *op_data);
#ccall H5Aiterate2, <hid_t> -> <H5_index_t> -> <H5_iter_order_t> -> InOut <hsize_t> -> H5A_operator2_t a -> InOut a -> IO <herr_t>
-- |Calls a user's function for each attribute on an object
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Base location for object
--
-- [@ obj_name :: CString @] Name of object relative to location
--
-- [@ idx_type :: H5_index_t @] Type of index to use
--
-- [@ order :: H5_iter_order_t @] Order to iterate over index
--
-- [@ idx :: InOut HSize_t @] Starting (IN) & Ending (OUT) attribute in index & order
--
-- [@ op :: H5A_operator2_t a @] H5A_operator2_t IN: User's function to pass each attribute to
--
-- [@ op_data :: InOut a @] User's data to pass through to iterator operator function
--
-- [@ lapl_id :: HId_t @] Link access property list
--
-- Returns a negative value if an error occurs, the return value of the
-- last operator if it was non-zero (which can be a negative value), or zero
-- if all attributes were processed.
--
-- This function interates over the attributes of dataset or group
-- specified with 'loc_id' & 'obj_name'. For each attribute of the object,
-- the 'op_data' and some additional information (specified below) are passed
-- to the 'op' function. The iteration begins with the '*idx'
-- object in the group and the next attribute to be processed by the operator
-- is returned in '*idx'.
--
-- The operation receives the ID for the group or dataset being iterated
-- over ('loc_id'), the name of the current attribute about the object
-- ('attr_name'), the attribute's \"info\" struct ('ainfo') and the pointer to
-- the operator data passed in to H5Aiterate_by_name ('op_data'). The return values
-- from an operator are:
--
-- * Zero causes the iterator to continue, returning zero when all
-- attributes have been processed.
--
-- * Positive causes the iterator to immediately return that positive
-- value, indicating short-circuit success. The iterator can be
-- restarted at the next attribute.
--
-- * Negative causes the iterator to immediately return that value,
-- indicating failure. The iterator can be restarted at the next
-- attribute.
--
-- > herr_t H5Aiterate_by_name(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
-- > H5_iter_order_t order, hsize_t *idx, H5A_operator2_t op, void *op_data,
-- > hid_t lapd_id);
#ccall H5Aiterate_by_name, <hid_t> -> CString -> <H5_index_t> -> <H5_iter_order_t> -> InOut <hsize_t> -> H5A_operator2_t a -> InOut a -> <hid_t> -> IO <herr_t>
-- |Deletes an attribute from a location
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object (dataset or group) to have attribute deleted from
--
-- [@ name :: CString @] Name of attribute to delete
--
-- Returns non-negative on success / negative on failure
--
-- This function removes the named attribute from a dataset or group.
--
-- > herr_t H5Adelete(hid_t loc_id, const char *name);
#ccall H5Adelete, <hid_t> -> CString -> IO <herr_t>
-- |Deletes an attribute from a location
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object (dataset or group) to have attribute deleted from
--
-- [@ obj_name :: CString @] Name of object relative to location
--
-- [@ attr_name :: CString @] Name of attribute to delete
--
-- [@ lapl_id :: HId_t @] Link access property list
--
-- Returns non-negative on success / negative on failure
--
-- This function removes the named attribute from a dataset or group.
--
-- > herr_t H5Adelete_by_name(hid_t loc_id, const char *obj_name,
-- > const char *attr_name, hid_t lapl_id);
#ccall H5Adelete_by_name, <hid_t> -> CString -> CString -> <hid_t> -> IO <herr_t>
-- |Deletes an attribute from a location, according to the order within an index
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Base location for object
--
-- [@ obj_name :: CString @] Name of object relative to location
--
-- [@ idx_type :: H5_index_t @] Type of index to use
--
-- [@ order :: H5_iter_order_t @] Order to iterate over index
--
-- [@ n :: HSize_t @] Offset within index
--
-- [@ lapl_id :: HId_t @] Link access property list
--
-- Returns non-negative on success / negative on failure
--
-- This function removes an attribute from an object, using the 'idx_type'
-- index to delete the 'n'th attribute in 'order' direction in the index. The
-- object is specified relative to the 'loc_id' with the 'obj_name' path. To
-- remove an attribute on the object specified by 'loc_id', pass in @"."@ for
-- 'obj_name'. The link access property list, 'lapl_id', controls aspects of
-- the group hierarchy traversal when using the 'obj_name' to locate the final
-- object to operate on.
--
-- > herr_t H5Adelete_by_idx(hid_t loc_id, const char *obj_name,
-- > H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id);
#ccall H5Adelete_by_idx, <hid_t> -> CString -> <H5_index_t> -> <H5_iter_order_t> -> <hsize_t> -> <hid_t> -> IO <herr_t>
-- |Checks if an attribute with a given name exists on an opened object.
--
-- > htri_t H5Aexists(hid_t obj_id, const char *attr_name);
#ccall H5Aexists, <hid_t> -> CString -> IO <htri_t>
-- |Checks if an attribute with a given name exists on an object.
--
-- > htri_t H5Aexists_by_name(hid_t obj_id, const char *obj_name,
-- > const char *attr_name, hid_t lapl_id);
#ccall H5Aexists_by_name, <hid_t> -> CString -> CString -> <hid_t> -> IO <htri_t>
#ifndef H5_NO_DEPRECATED_SYMBOLS
-- |Typedef for 'h5a_iterate1' callbacks
--
-- > typedef herr_t (*H5A_operator1_t)(hid_t location_id/*in*/,
-- > const char *attr_name/*in*/, void *operator_data/*in,out*/);
type H5A_operator1_t a = FunPtr (HId_t -> CString -> InOut a -> IO HErr_t)
-- |Creates an attribute on an object
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object (dataset or group) to be attached to
--
-- [@ name :: CString @] Name of attribute to create
--
-- [@ type_id :: HId_t @] ID of datatype for attribute
--
-- [@ space_id :: HId_t @] ID of dataspace for attribute
--
-- [@ plist_id :: HId_t @] ID of creation property list (currently not used)
--
-- Returns non-negative on success / negative on failure
--
-- This function creates an attribute which is attached to the object
-- specified with 'location_id'. The name specified with 'name' for each
-- attribute for an object must be unique for that object. The 'type_id'
-- and 'space_id' are created with the H5T and H5S interfaces respectively.
-- The attribute ID returned from this function must be released with
-- 'h5a_close' or resource leaks will develop.
--
-- Note: Deprecated in favor of 'h5a_create2'
--
-- > hid_t H5Acreate1(hid_t loc_id, const char *name, hid_t type_id,
-- > hid_t space_id, hid_t acpl_id);
#ccall H5Acreate1, <hid_t> -> CString -> <hid_t> -> <hid_t> -> <hid_t> -> IO <hid_t>
-- |Opens an attribute for an object by looking up the attribute name
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object (dataset or group) to be attached to
--
-- [@ name :: CString @] Name of attribute to locate and open
--
-- Returns ID of attribute on success, negative on failure
--
-- This function opens an existing attribute for access. The attribute
-- name specified is used to look up the corresponding attribute for the
-- object. The attribute ID returned from this function must be released with
-- H5Aclose or resource leaks will develop.
--
-- The location object may be either a group or a dataset, both of
-- which may have any sort of attribute.
--
-- Note: Deprecated in favor of 'h5a_open'
--
-- > hid_t H5Aopen_name(hid_t loc_id, const char *name);
#ccall H5Aopen_name, <hid_t> -> CString -> IO <hid_t>
-- |Opens the n'th attribute for an object
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object that attribute is attached to
--
-- [@ idx :: CUInt @] Index (0-based) attribute to open
--
-- Returns ID of attribute on success, negative on failure
--
-- This function opens an existing attribute for access. The attribute
-- index specified is used to look up the corresponding attribute for the
-- object. The attribute ID returned from this function must be released with
-- 'h5a_close' or resource leaks will develop.
--
-- The location object may be either a group or a dataset, both of
-- which may have any sort of attribute.
--
-- Note: Deprecated in favor of 'h5a_open_by_idx'
--
-- > hid_t H5Aopen_idx(hid_t loc_id, unsigned idx);
#ccall H5Aopen_idx, <hid_t> -> CUInt -> IO <hid_t>
-- |Determines the number of attributes attached to an object
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object (dataset or group) to be queried
--
-- Returns number of attributes on success, negative on failure
--
-- This function returns the number of attributes attached to a dataset or
-- group, 'location_id'.
--
-- Note: Deprecated in favor of 'h5o_get_info'
--
-- > int H5Aget_num_attrs(hid_t loc_id);
#ccall H5Aget_num_attrs, <hid_t> -> IO CInt
-- |Calls a user's function for each attribute on an object
--
-- Parameters:
--
-- [@ loc_id :: HId_t @] Object (dataset or group) to be iterated over
--
-- [@ attr_num :: InOut CUInt @] Starting (IN) & Ending (OUT) attribute number
--
-- [@ op :: H5A_operator1_t a @] User's function to pass each attribute to
--
-- [@ op_data :: InOut a @] User's data to pass through to iterator operator function
--
-- Returns a negative value if something is wrong, the return value of the
-- last operator if it was non-zero, or zero if all attributes were processed.
--
-- This function interates over the attributes of dataset or group
-- specified with 'loc_id'. For each attribute of the object, the
-- 'op_data' and some additional information (specified below) are passed
-- to the 'op' function. The iteration begins with the 'attr_num'
-- object in the group and the next attribute to be processed by the operator
-- is returned in 'attr_num'.
--
-- The operation receives the ID for the group or dataset being iterated
-- over ('loc_id'), the name of the current attribute about the object
-- ('attr_name') and the pointer to the operator data passed in to 'h5a_iterate1'
-- ('op_data'). The return values from an operator are:
--
-- * Zero causes the iterator to continue, returning zero when all
-- attributes have been processed.
--
-- * Positive causes the iterator to immediately return that positive
-- value, indicating short-circuit success. The iterator can be
-- restarted at the next attribute.
--
-- * Negative causes the iterator to immediately return that value,
-- indicating failure. The iterator can be restarted at the next
-- attribute.
--
-- Note: Deprecated in favor of 'h5a_iterate2'
--
-- > herr_t H5Aiterate1(hid_t loc_id, unsigned *attr_num, H5A_operator1_t op,
-- > void *op_data);
#ccall H5Aiterate1, <hid_t> -> InOut CUInt -> H5A_operator1_t a -> InOut a -> IO <herr_t>
#endif /* H5_NO_DEPRECATED_SYMBOLS */