# This file is autogenerated by HDF5.jl's `gen/gen_wrappers.jl` and should not be editted.
#
# To add new bindings, define the binding in `gen/api_defs.jl`, re-run
# `gen/gen_wrappers.jl`, and commit the updated `src/api.jl`.

_libhdf5_build_ver = let
        (majnum, minnum, relnum) = (Ref{Cuint}(), Ref{Cuint}(), Ref{Cuint}())
        r = ccall((:H5get_libversion, libhdf5), herr_t, (Ref{Cuint}, Ref{Cuint}, Ref{Cuint}), majnum, minnum, relnum)
        r < 0 && error("Error getting HDF5 library version")
        VersionNumber(majnum[], minnum[], relnum[])
    end

"""
    h5_close()

See `libhdf5` documentation for [`H5close`](https://portal.hdfgroup.org/display/HDF5/H5_CLOSE).
"""
function h5_close()
    var"#status#" = ccall((:H5close, libhdf5), herr_t, ())
    var"#status#" < 0 && error("Error closing the HDF5 resources")
    return nothing
end

"""
    h5_dont_atexit()

See `libhdf5` documentation for [`H5dont_atexit`](https://portal.hdfgroup.org/display/HDF5/H5_DONT_ATEXIT).
"""
function h5_dont_atexit()
    var"#status#" = ccall((:H5dont_atexit, libhdf5), herr_t, ())
    var"#status#" < 0 && error("Error calling dont_atexit")
    return nothing
end

"""
    h5_free_memory(buf::Ptr{Cvoid})

See `libhdf5` documentation for [`H5free_memory`](https://portal.hdfgroup.org/display/HDF5/H5_FREE_MEMORY).
"""
function h5_free_memory(buf)
    var"#status#" = ccall((:H5free_memory, libhdf5), herr_t, (Ptr{Cvoid},), buf)
    var"#status#" < 0 && error("Error freeing memory")
    return nothing
end

"""
    h5_garbage_collect()

See `libhdf5` documentation for [`H5garbage_collect`](https://portal.hdfgroup.org/display/HDF5/H5_GARBAGE_COLLECT).
"""
function h5_garbage_collect()
    var"#status#" = ccall((:H5garbage_collect, libhdf5), herr_t, ())
    var"#status#" < 0 && error("Error on garbage collect")
    return nothing
end

"""
    h5_get_libversion(majnum::Ref{Cuint}, minnum::Ref{Cuint}, relnum::Ref{Cuint})

See `libhdf5` documentation for [`H5get_libversion`](https://portal.hdfgroup.org/display/HDF5/H5_GET_LIBVERSION).
"""
function h5_get_libversion(majnum, minnum, relnum)
    var"#status#" = ccall((:H5get_libversion, libhdf5), herr_t, (Ref{Cuint}, Ref{Cuint}, Ref{Cuint}), majnum, minnum, relnum)
    var"#status#" < 0 && error("Error getting HDF5 library version")
    return nothing
end

"""
    h5_is_library_threadsafe(is_ts::Ref{Cuint})

See `libhdf5` documentation for [`H5is_library_threadsafe`](https://portal.hdfgroup.org/display/HDF5/H5_IS_LIBRARY_THREADSAFE).
"""
function h5_is_library_threadsafe(is_ts)
    var"#status#" = ccall((:H5is_library_threadsafe, libhdf5), herr_t, (Ref{Cuint},), is_ts)
    var"#status#" < 0 && error("Error determining thread safety")
    return nothing
end

"""
    h5_open()

See `libhdf5` documentation for [`H5open`](https://portal.hdfgroup.org/display/HDF5/H5_OPEN).
"""
function h5_open()
    var"#status#" = ccall((:H5open, libhdf5), herr_t, ())
    var"#status#" < 0 && error("Error initializing the HDF5 library")
    return nothing
end

"""
    h5_set_free_list_limits(reg_global_lim::Cint, reg_list_lim::Cint, arr_global_lim::Cint, arr_list_lim::Cint, blk_global_lim::Cint, blk_list_lim::Cint)

See `libhdf5` documentation for [`H5set_free_list_limits`](https://portal.hdfgroup.org/display/HDF5/H5_SET_FREE_LIST_LIMITS).
"""
function h5_set_free_list_limits(reg_global_lim, reg_list_lim, arr_global_lim, arr_list_lim, blk_global_lim, blk_list_lim)
    var"#status#" = ccall((:H5set_free_list_limits, libhdf5), herr_t, (Cint, Cint, Cint, Cint, Cint, Cint), reg_global_lim, reg_list_lim, arr_global_lim, arr_list_lim, blk_global_lim, blk_list_lim)
    var"#status#" < 0 && error("Error setting limits on free lists")
    return nothing
end

"""
    h5a_close(id::hid_t)

See `libhdf5` documentation for [`H5Aclose`](https://portal.hdfgroup.org/display/HDF5/H5A_CLOSE).
"""
function h5a_close(id)
    var"#status#" = ccall((:H5Aclose, libhdf5), herr_t, (hid_t,), id)
    var"#status#" < 0 && error("Error closing attribute")
    return nothing
end

"""
    h5a_create(loc_id::hid_t, pathname::Ptr{UInt8}, type_id::hid_t, space_id::hid_t, acpl_id::hid_t, aapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Acreate2`](https://portal.hdfgroup.org/display/HDF5/H5A_CREATE2).
"""
function h5a_create(loc_id, pathname, type_id, space_id, acpl_id, aapl_id)
    var"#status#" = ccall((:H5Acreate2, libhdf5), hid_t, (hid_t, Ptr{UInt8}, hid_t, hid_t, hid_t, hid_t), loc_id, pathname, type_id, space_id, acpl_id, aapl_id)
    var"#status#" < 0 && error("Error creating attribute ", h5a_get_name(loc_id), "/", pathname)
    return var"#status#"
end

"""
    h5a_create_by_name(loc_id::hid_t, obj_name::Ptr{UInt8}, attr_name::Ptr{UInt8}, type_id::hid_t, space_id::hid_t, acpl_id::hid_t, aapl_id::hid_t, lapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Acreate_by_name`](https://portal.hdfgroup.org/display/HDF5/H5A_CREATE_BY_NAME).
"""
function h5a_create_by_name(loc_id, obj_name, attr_name, type_id, space_id, acpl_id, aapl_id, lapl_id)
    var"#status#" = ccall((:H5Acreate_by_name, libhdf5), hid_t, (hid_t, Ptr{UInt8}, Ptr{UInt8}, hid_t, hid_t, hid_t, hid_t, hid_t), loc_id, obj_name, attr_name, type_id, space_id, acpl_id, aapl_id, lapl_id)
    var"#status#" < 0 && error("Error creating attribute ", attr_name, " for object ", obj_name)
    return var"#status#"
end

"""
    h5a_delete(loc_id::hid_t, attr_name::Ptr{UInt8})

See `libhdf5` documentation for [`H5Adelete`](https://portal.hdfgroup.org/display/HDF5/H5A_DELETE).
"""
function h5a_delete(loc_id, attr_name)
    var"#status#" = ccall((:H5Adelete, libhdf5), herr_t, (hid_t, Ptr{UInt8}), loc_id, attr_name)
    var"#status#" < 0 && error("Error deleting attribute ", attr_name)
    return nothing
end

"""
    h5a_delete_by_idx(loc_id::hid_t, obj_name::Ptr{UInt8}, idx_type::Cint, order::Cint, n::hsize_t, lapl_id::hid_t)

See `libhdf5` documentation for [`H5Adelete_by_idx`](https://portal.hdfgroup.org/display/HDF5/H5A_DELETE_BY_IDX).
"""
function h5a_delete_by_idx(loc_id, obj_name, idx_type, order, n, lapl_id)
    var"#status#" = ccall((:H5Adelete_by_idx, libhdf5), herr_t, (hid_t, Ptr{UInt8}, Cint, Cint, hsize_t, hid_t), loc_id, obj_name, idx_type, order, n, lapl_id)
    var"#status#" < 0 && error("Error deleting attribute ", n, " from object ", obj_name)
    return nothing
end

"""
    h5a_delete_by_name(loc_id::hid_t, obj_name::Ptr{UInt8}, attr_name::Ptr{UInt8}, lapl_id::hid_t)

See `libhdf5` documentation for [`H5Adelete_by_name`](https://portal.hdfgroup.org/display/HDF5/H5A_DELETE_BY_NAME).
"""
function h5a_delete_by_name(loc_id, obj_name, attr_name, lapl_id)
    var"#status#" = ccall((:H5Adelete_by_name, libhdf5), herr_t, (hid_t, Ptr{UInt8}, Ptr{UInt8}, hid_t), loc_id, obj_name, attr_name, lapl_id)
    var"#status#" < 0 && error("Error removing attribute ", attr_name, " from object ", obj_name)
    return nothing
end

"""
    h5a_exists(obj_id::hid_t, attr_name::Ptr{UInt8}) -> Bool

See `libhdf5` documentation for [`H5Aexists`](https://portal.hdfgroup.org/display/HDF5/H5A_EXISTS).
"""
function h5a_exists(obj_id, attr_name)
    var"#status#" = ccall((:H5Aexists, libhdf5), htri_t, (hid_t, Ptr{UInt8}), obj_id, attr_name)
    var"#status#" < 0 && error("Error checking whether attribute ", attr_name, " exists")
    return var"#status#" > 0
end

"""
    h5a_exists_by_name(loc_id::hid_t, obj_name::Ptr{UInt8}, attr_name::Ptr{UInt8}, lapl_id::hid_t) -> Bool

See `libhdf5` documentation for [`H5Aexists_by_name`](https://portal.hdfgroup.org/display/HDF5/H5A_EXISTS_BY_NAME).
"""
function h5a_exists_by_name(loc_id, obj_name, attr_name, lapl_id)
    var"#status#" = ccall((:H5Aexists_by_name, libhdf5), htri_t, (hid_t, Ptr{UInt8}, Ptr{UInt8}, hid_t), loc_id, obj_name, attr_name, lapl_id)
    var"#status#" < 0 && error("Error checking whether object ", obj_name, " has attribute ", attr_name)
    return var"#status#" > 0
end

"""
    h5a_get_create_plist(attr_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Aget_create_plist`](https://portal.hdfgroup.org/display/HDF5/H5A_GET_CREATE_PLIST).
"""
function h5a_get_create_plist(attr_id)
    var"#status#" = ccall((:H5Aget_create_plist, libhdf5), hid_t, (hid_t,), attr_id)
    var"#status#" < 0 && error("Cannot get creation property list")
    return var"#status#"
end

"""
    h5a_get_name(attr_id::hid_t, buf_size::Csize_t, buf::Ptr{UInt8}) -> Cssize_t

See `libhdf5` documentation for [`H5Aget_name`](https://portal.hdfgroup.org/display/HDF5/H5A_GET_NAME).
"""
function h5a_get_name(attr_id, buf_size, buf)
    var"#status#" = ccall((:H5Aget_name, libhdf5), Cssize_t, (hid_t, Csize_t, Ptr{UInt8}), attr_id, buf_size, buf)
    var"#status#" < 0 && error("Error getting attribute name")
    return var"#status#"
end

"""
    h5a_get_name_by_idx(loc_id::hid_t, obj_name::Cstring, index_type::Cint, order::Cint, idx::hsize_t, name::Ptr{UInt8}, size::Csize_t, lapl_id::hid_t) -> Cssize_t

See `libhdf5` documentation for [`H5Aget_name_by_idx`](https://portal.hdfgroup.org/display/HDF5/H5A_GET_NAME_BY_IDX).
"""
function h5a_get_name_by_idx(loc_id, obj_name, index_type, order, idx, name, size, lapl_id)
    var"#status#" = ccall((:H5Aget_name_by_idx, libhdf5), Cssize_t, (hid_t, Cstring, Cint, Cint, hsize_t, Ptr{UInt8}, Csize_t, hid_t), loc_id, obj_name, index_type, order, idx, name, size, lapl_id)
    var"#status#" < 0 && error("Error getting attribute name")
    return var"#status#"
end

"""
    h5a_get_space(attr_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Aget_space`](https://portal.hdfgroup.org/display/HDF5/H5A_GET_SPACE).
"""
function h5a_get_space(attr_id)
    var"#status#" = ccall((:H5Aget_space, libhdf5), hid_t, (hid_t,), attr_id)
    var"#status#" < 0 && error("Error getting attribute dataspace")
    return var"#status#"
end

"""
    h5a_get_type(attr_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Aget_type`](https://portal.hdfgroup.org/display/HDF5/H5A_GET_TYPE).
"""
function h5a_get_type(attr_id)
    var"#status#" = ccall((:H5Aget_type, libhdf5), hid_t, (hid_t,), attr_id)
    var"#status#" < 0 && error("Error getting attribute type")
    return var"#status#"
end

"""
    h5a_iterate(obj_id::hid_t, idx_type::Cint, order::Cint, n::Ptr{hsize_t}, op::Ptr{Cvoid}, op_data::Any)

See `libhdf5` documentation for [`H5Aiterate2`](https://portal.hdfgroup.org/display/HDF5/H5A_ITERATE2).
"""
function h5a_iterate(obj_id, idx_type, order, n, op, op_data)
    var"#status#" = ccall((:H5Aiterate2, libhdf5), herr_t, (hid_t, Cint, Cint, Ptr{hsize_t}, Ptr{Cvoid}, Any), obj_id, idx_type, order, n, op, op_data)
    var"#status#" < 0 && error("Error iterating attributes in object ", h5i_get_name(obj_id))
    return nothing
end

"""
    h5a_open(obj_id::hid_t, pathname::Ptr{UInt8}, aapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Aopen`](https://portal.hdfgroup.org/display/HDF5/H5A_OPEN).
"""
function h5a_open(obj_id, pathname, aapl_id)
    var"#status#" = ccall((:H5Aopen, libhdf5), hid_t, (hid_t, Ptr{UInt8}, hid_t), obj_id, pathname, aapl_id)
    var"#status#" < 0 && error("Error opening attribute ", h5i_get_name(obj_id), "/", pathname)
    return var"#status#"
end

"""
    h5a_read(attr_id::hid_t, mem_type_id::hid_t, buf::Ptr{Cvoid})

See `libhdf5` documentation for [`H5Aread`](https://portal.hdfgroup.org/display/HDF5/H5A_READ).
"""
function h5a_read(attr_id, mem_type_id, buf)
    var"#status#" = ccall((:H5Aread, libhdf5), herr_t, (hid_t, hid_t, Ptr{Cvoid}), attr_id, mem_type_id, buf)
    var"#status#" < 0 && error("Error reading attribute ", h5a_get_name(attr_id))
    return nothing
end

"""
    h5a_write(attr_hid::hid_t, mem_type_id::hid_t, buf::Ptr{Cvoid})

See `libhdf5` documentation for [`H5Awrite`](https://portal.hdfgroup.org/display/HDF5/H5A_WRITE).
"""
function h5a_write(attr_hid, mem_type_id, buf)
    var"#status#" = ccall((:H5Awrite, libhdf5), herr_t, (hid_t, hid_t, Ptr{Cvoid}), attr_hid, mem_type_id, buf)
    var"#status#" < 0 && error("Error writing attribute data")
    return nothing
end

"""
    h5d_close(dataset_id::hid_t)

See `libhdf5` documentation for [`H5Dclose`](https://portal.hdfgroup.org/display/HDF5/H5D_CLOSE).
"""
function h5d_close(dataset_id)
    var"#status#" = ccall((:H5Dclose, libhdf5), herr_t, (hid_t,), dataset_id)
    var"#status#" < 0 && error("Error closing dataset")
    return nothing
end

"""
    h5d_create(loc_id::hid_t, pathname::Ptr{UInt8}, dtype_id::hid_t, space_id::hid_t, lcpl_id::hid_t, dcpl_id::hid_t, dapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Dcreate2`](https://portal.hdfgroup.org/display/HDF5/H5D_CREATE2).
"""
function h5d_create(loc_id, pathname, dtype_id, space_id, lcpl_id, dcpl_id, dapl_id)
    var"#status#" = ccall((:H5Dcreate2, libhdf5), hid_t, (hid_t, Ptr{UInt8}, hid_t, hid_t, hid_t, hid_t, hid_t), loc_id, pathname, dtype_id, space_id, lcpl_id, dcpl_id, dapl_id)
    var"#status#" < 0 && error("Error creating dataset ", h5i_get_name(loc_id), "/", pathname)
    return var"#status#"
end

"""
    h5d_flush(dataset_id::hid_t)

See `libhdf5` documentation for [`H5Dflush`](https://portal.hdfgroup.org/display/HDF5/H5D_FLUSH).
"""
function h5d_flush(dataset_id)
    var"#status#" = ccall((:H5Dflush, libhdf5), herr_t, (hid_t,), dataset_id)
    var"#status#" < 0 && error("Error flushing dataset")
    return nothing
end

"""
    h5d_get_access_plist(dataset_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Dget_access_plist`](https://portal.hdfgroup.org/display/HDF5/H5D_GET_ACCESS_PLIST).
"""
function h5d_get_access_plist(dataset_id)
    var"#status#" = ccall((:H5Dget_access_plist, libhdf5), hid_t, (hid_t,), dataset_id)
    var"#status#" < 0 && error("Error getting dataset access property list")
    return var"#status#"
end

"""
    h5d_get_create_plist(dataset_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Dget_create_plist`](https://portal.hdfgroup.org/display/HDF5/H5D_GET_CREATE_PLIST).
"""
function h5d_get_create_plist(dataset_id)
    var"#status#" = ccall((:H5Dget_create_plist, libhdf5), hid_t, (hid_t,), dataset_id)
    var"#status#" < 0 && error("Error getting dataset create property list")
    return var"#status#"
end

"""
    h5d_get_offset(dataset_id::hid_t) -> haddr_t

See `libhdf5` documentation for [`H5Dget_offset`](https://portal.hdfgroup.org/display/HDF5/H5D_GET_OFFSET).
"""
function h5d_get_offset(dataset_id)
    var"#status#" = ccall((:H5Dget_offset, libhdf5), haddr_t, (hid_t,), dataset_id)
    var"#status#" == -1 % haddr_t && error("Error getting offset")
    return var"#status#"
end

"""
    h5d_get_space(dataset_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Dget_space`](https://portal.hdfgroup.org/display/HDF5/H5D_GET_SPACE).
"""
function h5d_get_space(dataset_id)
    var"#status#" = ccall((:H5Dget_space, libhdf5), hid_t, (hid_t,), dataset_id)
    var"#status#" < 0 && error("Error getting dataspace")
    return var"#status#"
end

"""
    h5d_get_type(dataset_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Dget_type`](https://portal.hdfgroup.org/display/HDF5/H5D_GET_TYPE).
"""
function h5d_get_type(dataset_id)
    var"#status#" = ccall((:H5Dget_type, libhdf5), hid_t, (hid_t,), dataset_id)
    var"#status#" < 0 && error("Error getting dataspace type")
    return var"#status#"
end

"""
    h5d_open(loc_id::hid_t, pathname::Ptr{UInt8}, dapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Dopen2`](https://portal.hdfgroup.org/display/HDF5/H5D_OPEN2).
"""
function h5d_open(loc_id, pathname, dapl_id)
    var"#status#" = ccall((:H5Dopen2, libhdf5), hid_t, (hid_t, Ptr{UInt8}, hid_t), loc_id, pathname, dapl_id)
    var"#status#" < 0 && error("Error opening dataset ", h5i_get_name(loc_id), "/", pathname)
    return var"#status#"
end

"""
    h5d_read(dataset_id::hid_t, mem_type_id::hid_t, mem_space_id::hid_t, file_space_id::hid_t, xfer_plist_id::hid_t, buf::Ptr{Cvoid})

See `libhdf5` documentation for [`H5Dread`](https://portal.hdfgroup.org/display/HDF5/H5D_READ).
"""
function h5d_read(dataset_id, mem_type_id, mem_space_id, file_space_id, xfer_plist_id, buf)
    var"#status#" = ccall((:H5Dread, libhdf5), herr_t, (hid_t, hid_t, hid_t, hid_t, hid_t, Ptr{Cvoid}), dataset_id, mem_type_id, mem_space_id, file_space_id, xfer_plist_id, buf)
    var"#status#" < 0 && error("Error reading dataset ", h5i_get_name(dataset_id))
    return nothing
end

"""
    h5d_refresh(dataset_id::hid_t)

See `libhdf5` documentation for [`H5Drefresh`](https://portal.hdfgroup.org/display/HDF5/H5D_REFRESH).
"""
function h5d_refresh(dataset_id)
    var"#status#" = ccall((:H5Drefresh, libhdf5), herr_t, (hid_t,), dataset_id)
    var"#status#" < 0 && error("Error refreshing dataset")
    return nothing
end

"""
    h5d_set_extent(dataset_id::hid_t, new_dims::Ptr{hsize_t})

See `libhdf5` documentation for [`H5Dset_extent`](https://portal.hdfgroup.org/display/HDF5/H5D_SET_EXTENT).
"""
function h5d_set_extent(dataset_id, new_dims)
    var"#status#" = ccall((:H5Dset_extent, libhdf5), herr_t, (hid_t, Ptr{hsize_t}), dataset_id, new_dims)
    var"#status#" < 0 && error("Error extending dataset dimensions")
    return nothing
end

"""
    h5d_vlen_get_buf_size(dset_id::hid_t, type_id::hid_t, space_id::hid_t, buf::Ptr{hsize_t})

See `libhdf5` documentation for [`H5Dvlen_get_buf_size`](https://portal.hdfgroup.org/display/HDF5/H5D_VLEN_GET_BUF_SIZE).
"""
function h5d_vlen_get_buf_size(dset_id, type_id, space_id, buf)
    var"#status#" = ccall((:H5Dvlen_get_buf_size, libhdf5), herr_t, (hid_t, hid_t, hid_t, Ptr{hsize_t}), dset_id, type_id, space_id, buf)
    var"#status#" < 0 && error("Error getting vlen buffer size")
    return nothing
end

"""
    h5d_vlen_reclaim(type_id::hid_t, space_id::hid_t, plist_id::hid_t, buf::Ptr{Cvoid})

See `libhdf5` documentation for [`H5Dvlen_reclaim`](https://portal.hdfgroup.org/display/HDF5/H5D_VLEN_RECLAIM).
"""
function h5d_vlen_reclaim(type_id, space_id, plist_id, buf)
    var"#status#" = ccall((:H5Dvlen_reclaim, libhdf5), herr_t, (hid_t, hid_t, hid_t, Ptr{Cvoid}), type_id, space_id, plist_id, buf)
    var"#status#" < 0 && error("Error reclaiming vlen buffer")
    return nothing
end

"""
    h5d_write(dataset_id::hid_t, mem_type_id::hid_t, mem_space_id::hid_t, file_space_id::hid_t, xfer_plist_id::hid_t, buf::Ptr{Cvoid})

See `libhdf5` documentation for [`H5Dwrite`](https://portal.hdfgroup.org/display/HDF5/H5D_WRITE).
"""
function h5d_write(dataset_id, mem_type_id, mem_space_id, file_space_id, xfer_plist_id, buf)
    var"#status#" = ccall((:H5Dwrite, libhdf5), herr_t, (hid_t, hid_t, hid_t, hid_t, hid_t, Ptr{Cvoid}), dataset_id, mem_type_id, mem_space_id, file_space_id, xfer_plist_id, buf)
    var"#status#" < 0 && error("Error writing dataset")
    return nothing
end

"""
    h5e_get_auto(estack_id::hid_t, func::Ref{Ptr{Cvoid}}, client_data::Ref{Ptr{Cvoid}})

See `libhdf5` documentation for [`H5Eget_auto2`](https://portal.hdfgroup.org/display/HDF5/H5E_GET_AUTO2).
"""
function h5e_get_auto(estack_id, func, client_data)
    var"#status#" = ccall((:H5Eget_auto2, libhdf5), herr_t, (hid_t, Ref{Ptr{Cvoid}}, Ref{Ptr{Cvoid}}), estack_id, func, client_data)
    var"#status#" < 0 && error("Error getting error reporting behavior")
    return nothing
end

"""
    h5e_set_auto(estack_id::hid_t, func::Ptr{Cvoid}, client_data::Ptr{Cvoid})

See `libhdf5` documentation for [`H5Eset_auto2`](https://portal.hdfgroup.org/display/HDF5/H5E_SET_AUTO2).
"""
function h5e_set_auto(estack_id, func, client_data)
    var"#status#" = ccall((:H5Eset_auto2, libhdf5), herr_t, (hid_t, Ptr{Cvoid}, Ptr{Cvoid}), estack_id, func, client_data)
    var"#status#" < 0 && error("Error setting error reporting behavior")
    return nothing
end

"""
    h5e_get_current_stack() -> hid_t

See `libhdf5` documentation for [`H5Eget_current_stack`](https://portal.hdfgroup.org/display/HDF5/H5E_GET_CURRENT_STACK).
"""
function h5e_get_current_stack()
    var"#status#" = ccall((:H5Eget_current_stack, libhdf5), hid_t, ())
    var"#status#" < 0 && error("Unable to return current error stack")
    return var"#status#"
end

"""
    h5f_close(file_id::hid_t)

See `libhdf5` documentation for [`H5Fclose`](https://portal.hdfgroup.org/display/HDF5/H5F_CLOSE).
"""
function h5f_close(file_id)
    var"#status#" = ccall((:H5Fclose, libhdf5), herr_t, (hid_t,), file_id)
    var"#status#" < 0 && error("Error closing file")
    return nothing
end

"""
    h5f_create(pathname::Ptr{UInt8}, flags::Cuint, fcpl_id::hid_t, fapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Fcreate`](https://portal.hdfgroup.org/display/HDF5/H5F_CREATE).
"""
function h5f_create(pathname, flags, fcpl_id, fapl_id)
    var"#status#" = ccall((:H5Fcreate, libhdf5), hid_t, (Ptr{UInt8}, Cuint, hid_t, hid_t), pathname, flags, fcpl_id, fapl_id)
    var"#status#" < 0 && error("Error creating file ", pathname)
    return var"#status#"
end

"""
    h5f_flush(object_id::hid_t, scope::Cint)

See `libhdf5` documentation for [`H5Fflush`](https://portal.hdfgroup.org/display/HDF5/H5F_FLUSH).
"""
function h5f_flush(object_id, scope)
    var"#status#" = ccall((:H5Fflush, libhdf5), herr_t, (hid_t, Cint), object_id, scope)
    var"#status#" < 0 && error("Error flushing object to file")
    return nothing
end

"""
    h5f_get_access_plist(file_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Fget_access_plist`](https://portal.hdfgroup.org/display/HDF5/H5F_GET_ACCESS_PLIST).
"""
function h5f_get_access_plist(file_id)
    var"#status#" = ccall((:H5Fget_access_plist, libhdf5), hid_t, (hid_t,), file_id)
    var"#status#" < 0 && error("Error getting file access property list")
    return var"#status#"
end

"""
    h5f_get_create_plist(file_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Fget_create_plist`](https://portal.hdfgroup.org/display/HDF5/H5F_GET_CREATE_PLIST).
"""
function h5f_get_create_plist(file_id)
    var"#status#" = ccall((:H5Fget_create_plist, libhdf5), hid_t, (hid_t,), file_id)
    var"#status#" < 0 && error("Error getting file create property list")
    return var"#status#"
end

"""
    h5f_get_intent(file_id::hid_t, intent::Ptr{Cuint})

See `libhdf5` documentation for [`H5Fget_intent`](https://portal.hdfgroup.org/display/HDF5/H5F_GET_INTENT).
"""
function h5f_get_intent(file_id, intent)
    var"#status#" = ccall((:H5Fget_intent, libhdf5), herr_t, (hid_t, Ptr{Cuint}), file_id, intent)
    var"#status#" < 0 && error("Error getting file intent")
    return nothing
end

"""
    h5f_get_name(obj_id::hid_t, buf::Ptr{UInt8}, buf_size::Csize_t) -> Cssize_t

See `libhdf5` documentation for [`H5Fget_name`](https://portal.hdfgroup.org/display/HDF5/H5F_GET_NAME).
"""
function h5f_get_name(obj_id, buf, buf_size)
    var"#status#" = ccall((:H5Fget_name, libhdf5), Cssize_t, (hid_t, Ptr{UInt8}, Csize_t), obj_id, buf, buf_size)
    var"#status#" < 0 && error("Error getting file name")
    return var"#status#"
end

"""
    h5f_get_obj_count(file_id::hid_t, types::Cuint) -> Cssize_t

See `libhdf5` documentation for [`H5Fget_obj_count`](https://portal.hdfgroup.org/display/HDF5/H5F_GET_OBJ_COUNT).
"""
function h5f_get_obj_count(file_id, types)
    var"#status#" = ccall((:H5Fget_obj_count, libhdf5), Cssize_t, (hid_t, Cuint), file_id, types)
    var"#status#" < 0 && error("Error getting object count")
    return var"#status#"
end

"""
    h5f_get_obj_ids(file_id::hid_t, types::Cuint, max_objs::Csize_t, obj_id_list::Ptr{hid_t}) -> Cssize_t

See `libhdf5` documentation for [`H5Fget_obj_ids`](https://portal.hdfgroup.org/display/HDF5/H5F_GET_OBJ_IDS).
"""
function h5f_get_obj_ids(file_id, types, max_objs, obj_id_list)
    var"#status#" = ccall((:H5Fget_obj_ids, libhdf5), Cssize_t, (hid_t, Cuint, Csize_t, Ptr{hid_t}), file_id, types, max_objs, obj_id_list)
    var"#status#" < 0 && error("Error getting objects")
    return var"#status#"
end

"""
    h5f_get_vfd_handle(file_id::hid_t, fapl_id::hid_t, file_handle::Ref{Ptr{Cvoid}})

See `libhdf5` documentation for [`H5Fget_vfd_handle`](https://portal.hdfgroup.org/display/HDF5/H5F_GET_VFD_HANDLE).
"""
function h5f_get_vfd_handle(file_id, fapl_id, file_handle)
    var"#status#" = ccall((:H5Fget_vfd_handle, libhdf5), herr_t, (hid_t, hid_t, Ref{Ptr{Cvoid}}), file_id, fapl_id, file_handle)
    var"#status#" < 0 && error("Error getting VFD handle")
    return nothing
end

"""
    h5f_is_hdf5(pathname::Cstring) -> Bool

See `libhdf5` documentation for [`H5Fis_hdf5`](https://portal.hdfgroup.org/display/HDF5/H5F_IS_HDF5).
"""
function h5f_is_hdf5(pathname)
    var"#status#" = ccall((:H5Fis_hdf5, libhdf5), htri_t, (Cstring,), pathname)
    var"#status#" < 0 && error("Unable to access file ", pathname)
    return var"#status#" > 0
end

"""
    h5f_open(pathname::Cstring, flags::Cuint, fapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Fopen`](https://portal.hdfgroup.org/display/HDF5/H5F_OPEN).
"""
function h5f_open(pathname, flags, fapl_id)
    var"#status#" = ccall((:H5Fopen, libhdf5), hid_t, (Cstring, Cuint, hid_t), pathname, flags, fapl_id)
    var"#status#" < 0 && error("Error opening file ", pathname)
    return var"#status#"
end

"""
    h5f_start_swmr_write(id::hid_t)

See `libhdf5` documentation for [`H5Fstart_swmr_write`](https://portal.hdfgroup.org/display/HDF5/H5F_START_SWMR_WRITE).
"""
function h5f_start_swmr_write(id)
    var"#status#" = ccall((:H5Fstart_swmr_write, libhdf5), herr_t, (hid_t,), id)
    var"#status#" < 0 && error("Error starting SWMR write")
    return nothing
end

"""
    h5g_close(group_id::hid_t)

See `libhdf5` documentation for [`H5Gclose`](https://portal.hdfgroup.org/display/HDF5/H5G_CLOSE).
"""
function h5g_close(group_id)
    var"#status#" = ccall((:H5Gclose, libhdf5), herr_t, (hid_t,), group_id)
    var"#status#" < 0 && error("Error closing group")
    return nothing
end

"""
    h5g_create(loc_id::hid_t, pathname::Ptr{UInt8}, lcpl_id::hid_t, gcpl_id::hid_t, gapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Gcreate2`](https://portal.hdfgroup.org/display/HDF5/H5G_CREATE2).
"""
function h5g_create(loc_id, pathname, lcpl_id, gcpl_id, gapl_id)
    var"#status#" = ccall((:H5Gcreate2, libhdf5), hid_t, (hid_t, Ptr{UInt8}, hid_t, hid_t, hid_t), loc_id, pathname, lcpl_id, gcpl_id, gapl_id)
    var"#status#" < 0 && error("Error creating group ", h5i_get_name(loc_id), "/", pathname)
    return var"#status#"
end

"""
    h5g_get_create_plist(group_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Gget_create_plist`](https://portal.hdfgroup.org/display/HDF5/H5G_GET_CREATE_PLIST).
"""
function h5g_get_create_plist(group_id)
    var"#status#" = ccall((:H5Gget_create_plist, libhdf5), hid_t, (hid_t,), group_id)
    var"#status#" < 0 && error("Error getting group create property list")
    return var"#status#"
end

"""
    h5g_get_info(group_id::hid_t, buf::Ptr{H5G_info_t})

See `libhdf5` documentation for [`H5Gget_info`](https://portal.hdfgroup.org/display/HDF5/H5G_GET_INFO).
"""
function h5g_get_info(group_id, buf)
    var"#status#" = ccall((:H5Gget_info, libhdf5), herr_t, (hid_t, Ptr{H5G_info_t}), group_id, buf)
    var"#status#" < 0 && error("Error getting group info")
    return nothing
end

"""
    h5g_get_num_objs(loc_id::hid_t, num_obj::Ptr{hsize_t}) -> hid_t

See `libhdf5` documentation for [`H5Gget_num_objs`](https://portal.hdfgroup.org/display/HDF5/H5G_GET_NUM_OBJS).
"""
function h5g_get_num_objs(loc_id, num_obj)
    var"#status#" = ccall((:H5Gget_num_objs, libhdf5), hid_t, (hid_t, Ptr{hsize_t}), loc_id, num_obj)
    var"#status#" < 0 && error("Error getting group length")
    return var"#status#"
end

"""
    h5g_get_objname_by_idx(loc_id::hid_t, idx::hsize_t, pathname::Ptr{UInt8}, size::Csize_t) -> Cssize_t

See `libhdf5` documentation for [`H5Gget_objname_by_idx`](https://portal.hdfgroup.org/display/HDF5/H5G_GET_OBJNAME_BY_IDX).
"""
function h5g_get_objname_by_idx(loc_id, idx, pathname, size)
    var"#status#" = ccall((:H5Gget_objname_by_idx, libhdf5), Cssize_t, (hid_t, hsize_t, Ptr{UInt8}, Csize_t), loc_id, idx, pathname, size)
    var"#status#" < 0 && error("Error getting group object name ", h5i_get_name(loc_id), "/", pathname)
    return var"#status#"
end

"""
    h5g_open(loc_id::hid_t, pathname::Ptr{UInt8}, gapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Gopen2`](https://portal.hdfgroup.org/display/HDF5/H5G_OPEN2).
"""
function h5g_open(loc_id, pathname, gapl_id)
    var"#status#" = ccall((:H5Gopen2, libhdf5), hid_t, (hid_t, Ptr{UInt8}, hid_t), loc_id, pathname, gapl_id)
    var"#status#" < 0 && error("Error opening group ", h5i_get_name(loc_id), "/", pathname)
    return var"#status#"
end

"""
    h5i_dec_ref(obj_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Idec_ref`](https://portal.hdfgroup.org/display/HDF5/H5I_DEC_REF).
"""
function h5i_dec_ref(obj_id)
    var"#status#" = ccall((:H5Idec_ref, libhdf5), Cint, (hid_t,), obj_id)
    var"#status#" < 0 && error("Error decementing reference")
    return Int(var"#status#")
end

"""
    h5i_get_file_id(obj_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Iget_file_id`](https://portal.hdfgroup.org/display/HDF5/H5I_GET_FILE_ID).
"""
function h5i_get_file_id(obj_id)
    var"#status#" = ccall((:H5Iget_file_id, libhdf5), hid_t, (hid_t,), obj_id)
    var"#status#" < 0 && error("Error getting file identifier")
    return var"#status#"
end

"""
    h5i_get_name(obj_id::hid_t, buf::Ptr{UInt8}, buf_size::Csize_t) -> Cssize_t

See `libhdf5` documentation for [`H5Iget_name`](https://portal.hdfgroup.org/display/HDF5/H5I_GET_NAME).
"""
function h5i_get_name(obj_id, buf, buf_size)
    var"#status#" = ccall((:H5Iget_name, libhdf5), Cssize_t, (hid_t, Ptr{UInt8}, Csize_t), obj_id, buf, buf_size)
    var"#status#" < 0 && error("Error getting object name")
    return var"#status#"
end

"""
    h5i_get_ref(obj_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Iget_ref`](https://portal.hdfgroup.org/display/HDF5/H5I_GET_REF).
"""
function h5i_get_ref(obj_id)
    var"#status#" = ccall((:H5Iget_ref, libhdf5), Cint, (hid_t,), obj_id)
    var"#status#" < 0 && error("Error getting reference count")
    return Int(var"#status#")
end

"""
    h5i_get_type(obj_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Iget_type`](https://portal.hdfgroup.org/display/HDF5/H5I_GET_TYPE).
"""
function h5i_get_type(obj_id)
    var"#status#" = ccall((:H5Iget_type, libhdf5), Cint, (hid_t,), obj_id)
    var"#status#" < 0 && error("Error getting type")
    return Int(var"#status#")
end

"""
    h5i_inc_ref(obj_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Iinc_ref`](https://portal.hdfgroup.org/display/HDF5/H5I_INC_REF).
"""
function h5i_inc_ref(obj_id)
    var"#status#" = ccall((:H5Iinc_ref, libhdf5), Cint, (hid_t,), obj_id)
    var"#status#" < 0 && error("Error incrementing identifier refcount")
    return Int(var"#status#")
end

"""
    h5i_is_valid(obj_id::hid_t) -> Bool

See `libhdf5` documentation for [`H5Iis_valid`](https://portal.hdfgroup.org/display/HDF5/H5I_IS_VALID).
"""
function h5i_is_valid(obj_id)
    var"#status#" = ccall((:H5Iis_valid, libhdf5), htri_t, (hid_t,), obj_id)
    var"#status#" < 0 && error("Cannot determine whether object is valid")
    return var"#status#" > 0
end

"""
    h5l_create_external(target_file_name::Ptr{UInt8}, target_obj_name::Ptr{UInt8}, link_loc_id::hid_t, link_name::Ptr{UInt8}, lcpl_id::hid_t, lapl_id::hid_t)

See `libhdf5` documentation for [`H5Lcreate_external`](https://portal.hdfgroup.org/display/HDF5/H5L_CREATE_EXTERNAL).
"""
function h5l_create_external(target_file_name, target_obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
    var"#status#" = ccall((:H5Lcreate_external, libhdf5), herr_t, (Ptr{UInt8}, Ptr{UInt8}, hid_t, Ptr{UInt8}, hid_t, hid_t), target_file_name, target_obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
    var"#status#" < 0 && error("Error creating external link ", link_name, " pointing to ", target_obj_name, " in file ", target_file_name)
    return nothing
end

"""
    h5l_create_hard(obj_loc_id::hid_t, obj_name::Ptr{UInt8}, link_loc_id::hid_t, link_name::Ptr{UInt8}, lcpl_id::hid_t, lapl_id::hid_t)

See `libhdf5` documentation for [`H5Lcreate_hard`](https://portal.hdfgroup.org/display/HDF5/H5L_CREATE_HARD).
"""
function h5l_create_hard(obj_loc_id, obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
    var"#status#" = ccall((:H5Lcreate_hard, libhdf5), herr_t, (hid_t, Ptr{UInt8}, hid_t, Ptr{UInt8}, hid_t, hid_t), obj_loc_id, obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
    var"#status#" < 0 && error("Error creating hard link ", link_name, " pointing to ", obj_name)
    return nothing
end

"""
    h5l_create_soft(target_path::Ptr{UInt8}, link_loc_id::hid_t, link_name::Ptr{UInt8}, lcpl_id::hid_t, lapl_id::hid_t)

See `libhdf5` documentation for [`H5Lcreate_soft`](https://portal.hdfgroup.org/display/HDF5/H5L_CREATE_SOFT).
"""
function h5l_create_soft(target_path, link_loc_id, link_name, lcpl_id, lapl_id)
    var"#status#" = ccall((:H5Lcreate_soft, libhdf5), herr_t, (Ptr{UInt8}, hid_t, Ptr{UInt8}, hid_t, hid_t), target_path, link_loc_id, link_name, lcpl_id, lapl_id)
    var"#status#" < 0 && error("Error creating soft link ", link_name, " pointing to ", target_path)
    return nothing
end

"""
    h5l_delete(obj_id::hid_t, pathname::Ptr{UInt8}, lapl_id::hid_t)

See `libhdf5` documentation for [`H5Ldelete`](https://portal.hdfgroup.org/display/HDF5/H5L_DELETE).
"""
function h5l_delete(obj_id, pathname, lapl_id)
    var"#status#" = ccall((:H5Ldelete, libhdf5), herr_t, (hid_t, Ptr{UInt8}, hid_t), obj_id, pathname, lapl_id)
    var"#status#" < 0 && error("Error deleting ", h5i_get_name(obj_id), "/", pathname)
    return nothing
end

"""
    h5l_exists(loc_id::hid_t, pathname::Ptr{UInt8}, lapl_id::hid_t) -> Bool

See `libhdf5` documentation for [`H5Lexists`](https://portal.hdfgroup.org/display/HDF5/H5L_EXISTS).
"""
function h5l_exists(loc_id, pathname, lapl_id)
    var"#status#" = ccall((:H5Lexists, libhdf5), htri_t, (hid_t, Ptr{UInt8}, hid_t), loc_id, pathname, lapl_id)
    var"#status#" < 0 && error("Cannot determine whether ", pathname, " exists")
    return var"#status#" > 0
end

"""
    h5l_get_info(link_loc_id::hid_t, link_name::Ptr{UInt8}, link_buf::Ptr{H5L_info_t}, lapl_id::hid_t)

See `libhdf5` documentation for [`H5Lget_info`](https://portal.hdfgroup.org/display/HDF5/H5L_GET_INFO).
"""
function h5l_get_info(link_loc_id, link_name, link_buf, lapl_id)
    var"#status#" = ccall((:H5Lget_info, libhdf5), herr_t, (hid_t, Ptr{UInt8}, Ptr{H5L_info_t}, hid_t), link_loc_id, link_name, link_buf, lapl_id)
    var"#status#" < 0 && error("Error getting info for link ", link_name)
    return nothing
end

"""
    h5l_get_name_by_idx(loc_id::hid_t, group_name::Ptr{UInt8}, index_field::Cint, order::Cint, n::hsize_t, name::Ptr{UInt8}, size::Csize_t, lapl_id::hid_t) -> Cssize_t

See `libhdf5` documentation for [`H5Lget_name_by_idx`](https://portal.hdfgroup.org/display/HDF5/H5L_GET_NAME_BY_IDX).
"""
function h5l_get_name_by_idx(loc_id, group_name, index_field, order, n, name, size, lapl_id)
    var"#status#" = ccall((:H5Lget_name_by_idx, libhdf5), Cssize_t, (hid_t, Ptr{UInt8}, Cint, Cint, hsize_t, Ptr{UInt8}, Csize_t, hid_t), loc_id, group_name, index_field, order, n, name, size, lapl_id)
    var"#status#" < 0 && error("Error getting object name")
    return var"#status#"
end

@static if _libhdf5_build_ver < v"1.12"
    @doc """
        h5l_iterate(group_id::hid_t, idx_type::Cint, order::Cint, idx::Ptr{hsize_t}, op::Ptr{Cvoid}, op_data::Any)

    See `libhdf5` documentation for [`H5Literate`](https://portal.hdfgroup.org/display/HDF5/H5L_ITERATE).
    """
    function h5l_iterate(group_id, idx_type, order, idx, op, op_data)
        var"#status#" = ccall((:H5Literate, libhdf5), herr_t, (hid_t, Cint, Cint, Ptr{hsize_t}, Ptr{Cvoid}, Any), group_id, idx_type, order, idx, op, op_data)
        var"#status#" < 0 && error("Error iterating through links in group ", h5i_get_name(group_id))
        return nothing
    end
end

@static if v"1.12" ≤ _libhdf5_build_ver
    @doc """
        h5l_iterate(group_id::hid_t, idx_type::Cint, order::Cint, idx::Ptr{hsize_t}, op::Ptr{Cvoid}, op_data::Any)

    See `libhdf5` documentation for [`H5Literate1`](https://portal.hdfgroup.org/display/HDF5/H5L_ITERATE1).
    """
    function h5l_iterate(group_id, idx_type, order, idx, op, op_data)
        var"#status#" = ccall((:H5Literate1, libhdf5), herr_t, (hid_t, Cint, Cint, Ptr{hsize_t}, Ptr{Cvoid}, Any), group_id, idx_type, order, idx, op, op_data)
        var"#status#" < 0 && error("Error iterating through links in group ", h5i_get_name(group_id))
        return nothing
    end
end

"""
    h5o_close(object_id::hid_t)

See `libhdf5` documentation for [`H5Oclose`](https://portal.hdfgroup.org/display/HDF5/H5O_CLOSE).
"""
function h5o_close(object_id)
    var"#status#" = ccall((:H5Oclose, libhdf5), herr_t, (hid_t,), object_id)
    var"#status#" < 0 && error("Error closing object")
    return nothing
end

"""
    h5o_copy(src_loc_id::hid_t, src_name::Ptr{UInt8}, dst_loc_id::hid_t, dst_name::Ptr{UInt8}, ocpypl_id::hid_t, lcpl_id::hid_t)

See `libhdf5` documentation for [`H5Ocopy`](https://portal.hdfgroup.org/display/HDF5/H5O_COPY).
"""
function h5o_copy(src_loc_id, src_name, dst_loc_id, dst_name, ocpypl_id, lcpl_id)
    var"#status#" = ccall((:H5Ocopy, libhdf5), herr_t, (hid_t, Ptr{UInt8}, hid_t, Ptr{UInt8}, hid_t, hid_t), src_loc_id, src_name, dst_loc_id, dst_name, ocpypl_id, lcpl_id)
    var"#status#" < 0 && error("Error copying object ", h5i_get_name(src_loc_id), "/", src_name, " to ", h5i_get_name(dst_loc_id), "/", dst_name)
    return nothing
end

"""
    h5o_get_info(object_id::hid_t, buf::Ptr{H5O_info_t})

See `libhdf5` documentation for [`H5Oget_info1`](https://portal.hdfgroup.org/display/HDF5/H5O_GET_INFO1).
"""
function h5o_get_info(object_id, buf)
    var"#status#" = ccall((:H5Oget_info1, libhdf5), herr_t, (hid_t, Ptr{H5O_info_t}), object_id, buf)
    var"#status#" < 0 && error("Error getting object info")
    return nothing
end

"""
    h5o_open(loc_id::hid_t, pathname::Ptr{UInt8}, lapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Oopen`](https://portal.hdfgroup.org/display/HDF5/H5O_OPEN).
"""
function h5o_open(loc_id, pathname, lapl_id)
    var"#status#" = ccall((:H5Oopen, libhdf5), hid_t, (hid_t, Ptr{UInt8}, hid_t), loc_id, pathname, lapl_id)
    var"#status#" < 0 && error("Error opening object ", h5i_get_name(loc_id), "/", pathname)
    return var"#status#"
end

"""
    h5o_open_by_addr(loc_id::hid_t, addr::haddr_t) -> hid_t

See `libhdf5` documentation for [`H5Oopen_by_addr`](https://portal.hdfgroup.org/display/HDF5/H5O_OPEN_BY_ADDR).
"""
function h5o_open_by_addr(loc_id, addr)
    var"#status#" = ccall((:H5Oopen_by_addr, libhdf5), hid_t, (hid_t, haddr_t), loc_id, addr)
    var"#status#" < 0 && error("Error opening object by address")
    return var"#status#"
end

"""
    h5o_open_by_idx(loc_id::hid_t, group_name::Ptr{UInt8}, index_type::Cint, order::Cint, n::hsize_t, lapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Oopen_by_idx`](https://portal.hdfgroup.org/display/HDF5/H5O_OPEN_BY_IDX).
"""
function h5o_open_by_idx(loc_id, group_name, index_type, order, n, lapl_id)
    var"#status#" = ccall((:H5Oopen_by_idx, libhdf5), hid_t, (hid_t, Ptr{UInt8}, Cint, Cint, hsize_t, hid_t), loc_id, group_name, index_type, order, n, lapl_id)
    var"#status#" < 0 && error("Error opening object of index ", n)
    return var"#status#"
end

"""
    h5p_close(id::hid_t)

See `libhdf5` documentation for [`H5Pclose`](https://portal.hdfgroup.org/display/HDF5/H5P_CLOSE).
"""
function h5p_close(id)
    var"#status#" = ccall((:H5Pclose, libhdf5), herr_t, (hid_t,), id)
    var"#status#" < 0 && error("Error closing property list")
    return nothing
end

"""
    h5p_create(cls_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Pcreate`](https://portal.hdfgroup.org/display/HDF5/H5P_CREATE).
"""
function h5p_create(cls_id)
    var"#status#" = ccall((:H5Pcreate, libhdf5), hid_t, (hid_t,), cls_id)
    var"#status#" < 0 && error("Error creating property list")
    return var"#status#"
end

"""
    h5p_get_alignment(fapl_id::hid_t, threshold::Ref{hsize_t}, alignment::Ref{hsize_t})

See `libhdf5` documentation for [`H5Pget_alignment`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_ALIGNMENT).
"""
function h5p_get_alignment(fapl_id, threshold, alignment)
    var"#status#" = ccall((:H5Pget_alignment, libhdf5), herr_t, (hid_t, Ref{hsize_t}, Ref{hsize_t}), fapl_id, threshold, alignment)
    var"#status#" < 0 && error("Error getting alignment")
    return nothing
end

"""
    h5p_get_alloc_time(plist_id::hid_t, alloc_time::Ptr{Cint})

See `libhdf5` documentation for [`H5Pget_alloc_time`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_ALLOC_TIME).
"""
function h5p_get_alloc_time(plist_id, alloc_time)
    var"#status#" = ccall((:H5Pget_alloc_time, libhdf5), herr_t, (hid_t, Ptr{Cint}), plist_id, alloc_time)
    var"#status#" < 0 && error("Error getting allocation timing")
    return nothing
end

"""
    h5p_get_char_encoding(plist_id::hid_t, encoding::Ref{Cint})

See `libhdf5` documentation for [`H5Pget_char_encoding`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_CHAR_ENCODING).
"""
function h5p_get_char_encoding(plist_id, encoding)
    var"#status#" = ccall((:H5Pget_char_encoding, libhdf5), herr_t, (hid_t, Ref{Cint}), plist_id, encoding)
    var"#status#" < 0 && error("Error getting char encoding")
    return nothing
end

"""
    h5p_get_chunk(plist_id::hid_t, n_dims::Cint, dims::Ptr{hsize_t}) -> Int

See `libhdf5` documentation for [`H5Pget_chunk`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_CHUNK).
"""
function h5p_get_chunk(plist_id, n_dims, dims)
    var"#status#" = ccall((:H5Pget_chunk, libhdf5), Cint, (hid_t, Cint, Ptr{hsize_t}), plist_id, n_dims, dims)
    var"#status#" < 0 && error("Error getting chunk size")
    return Int(var"#status#")
end

"""
    h5p_get_create_intermediate_group(lcpl_id::hid_t, crt_intermed_group::Ref{Cuint})

See `libhdf5` documentation for [`H5Pget_create_intermediate_group`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_CREATE_INTERMEDIATE_GROUP).
"""
function h5p_get_create_intermediate_group(lcpl_id, crt_intermed_group)
    var"#status#" = ccall((:H5Pget_create_intermediate_group, libhdf5), herr_t, (hid_t, Ref{Cuint}), lcpl_id, crt_intermed_group)
    var"#status#" < 0 && error("Error getting create intermediate group property")
    return nothing
end

"""
    h5p_get_driver(plist_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Pget_driver`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_DRIVER).
"""
function h5p_get_driver(plist_id)
    var"#status#" = ccall((:H5Pget_driver, libhdf5), hid_t, (hid_t,), plist_id)
    var"#status#" < 0 && error("Error getting driver identifier")
    return var"#status#"
end

"""
    h5p_get_driver_info(plist_id::hid_t) -> Ptr{Cvoid}

See `libhdf5` documentation for [`H5Pget_driver_info`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_DRIVER_INFO).
"""
function h5p_get_driver_info(plist_id)
    var"#status#" = ccall((:H5Pget_driver_info, libhdf5), Ptr{Cvoid}, (hid_t,), plist_id)
    return var"#status#"
end

"""
    h5p_get_dxpl_mpio(dxpl_id::hid_t, xfer_mode::Ptr{Cint})

See `libhdf5` documentation for [`H5Pget_dxpl_mpio`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_DXPL_MPIO).
"""
function h5p_get_dxpl_mpio(dxpl_id, xfer_mode)
    var"#status#" = ccall((:H5Pget_dxpl_mpio, libhdf5), herr_t, (hid_t, Ptr{Cint}), dxpl_id, xfer_mode)
    var"#status#" < 0 && error("Error getting MPIO transfer mode")
    return nothing
end

"""
    h5p_get_fapl_mpio32(fapl_id::hid_t, comm::Ptr{Hmpih32}, info::Ptr{Hmpih32})

See `libhdf5` documentation for [`H5Pget_fapl_mpio`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_FAPL_MPIO32).
"""
function h5p_get_fapl_mpio32(fapl_id, comm, info)
    var"#status#" = ccall((:H5Pget_fapl_mpio, libhdf5), herr_t, (hid_t, Ptr{Hmpih32}, Ptr{Hmpih32}), fapl_id, comm, info)
    var"#status#" < 0 && error("Error getting MPIO properties")
    return nothing
end

"""
    h5p_get_fapl_mpio64(fapl_id::hid_t, comm::Ptr{Hmpih64}, info::Ptr{Hmpih64})

See `libhdf5` documentation for [`H5Pget_fapl_mpio`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_FAPL_MPIO64).
"""
function h5p_get_fapl_mpio64(fapl_id, comm, info)
    var"#status#" = ccall((:H5Pget_fapl_mpio, libhdf5), herr_t, (hid_t, Ptr{Hmpih64}, Ptr{Hmpih64}), fapl_id, comm, info)
    var"#status#" < 0 && error("Error getting MPIO properties")
    return nothing
end

"""
    h5p_get_fclose_degree(fapl_id::hid_t, fc_degree::Ref{Cint})

See `libhdf5` documentation for [`H5Pget_fclose_degree`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_FCLOSE_DEGREE).
"""
function h5p_get_fclose_degree(fapl_id, fc_degree)
    var"#status#" = ccall((:H5Pget_fclose_degree, libhdf5), herr_t, (hid_t, Ref{Cint}), fapl_id, fc_degree)
    var"#status#" < 0 && error("Error getting close degree")
    return nothing
end

"""
    h5p_get_filter_by_id(plist_id::hid_t, filter_id::H5Z_filter_t, flags::Ref{Cuint}, cd_nelmts::Ref{Csize_t}, cd_values::Ptr{Cuint}, namelen::Csize_t, name::Ptr{UInt8}, filter_config::Ptr{Cuint})

See `libhdf5` documentation for [`H5Pget_filter_by_id2`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_FILTER_BY_ID2).
"""
function h5p_get_filter_by_id(plist_id, filter_id, flags, cd_nelmts, cd_values, namelen, name, filter_config)
    var"#status#" = ccall((:H5Pget_filter_by_id2, libhdf5), herr_t, (hid_t, H5Z_filter_t, Ref{Cuint}, Ref{Csize_t}, Ptr{Cuint}, Csize_t, Ptr{UInt8}, Ptr{Cuint}), plist_id, filter_id, flags, cd_nelmts, cd_values, namelen, name, filter_config)
    var"#status#" < 0 && error("Error getting filter ID")
    return nothing
end

"""
    h5p_get_layout(plist_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Pget_layout`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_LAYOUT).
"""
function h5p_get_layout(plist_id)
    var"#status#" = ccall((:H5Pget_layout, libhdf5), Cint, (hid_t,), plist_id)
    var"#status#" < 0 && error("Error getting layout")
    return Int(var"#status#")
end

"""
    h5p_get_libver_bounds(fapl_id::hid_t, low::Ref{Cint}, high::Ref{Cint})

See `libhdf5` documentation for [`H5Pget_libver_bounds`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_LIBVER_BOUNDS).
"""
function h5p_get_libver_bounds(fapl_id, low, high)
    var"#status#" = ccall((:H5Pget_libver_bounds, libhdf5), herr_t, (hid_t, Ref{Cint}, Ref{Cint}), fapl_id, low, high)
    var"#status#" < 0 && error("Error getting library version bounds")
    return nothing
end

"""
    h5p_get_local_heap_size_hint(plist_id::hid_t, size_hint::Ref{Csize_t})

See `libhdf5` documentation for [`H5Pget_local_heap_size_hint`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_LOCAL_HEAP_SIZE_HINT).
"""
function h5p_get_local_heap_size_hint(plist_id, size_hint)
    var"#status#" = ccall((:H5Pget_local_heap_size_hint, libhdf5), herr_t, (hid_t, Ref{Csize_t}), plist_id, size_hint)
    var"#status#" < 0 && error("Error getting local heap size hint")
    return nothing
end

"""
    h5p_get_obj_track_times(plist_id::hid_t, track_times::Ref{UInt8})

See `libhdf5` documentation for [`H5Pget_obj_track_times`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_OBJ_TRACK_TIMES).
"""
function h5p_get_obj_track_times(plist_id, track_times)
    var"#status#" = ccall((:H5Pget_obj_track_times, libhdf5), herr_t, (hid_t, Ref{UInt8}), plist_id, track_times)
    var"#status#" < 0 && error("Error setting object time tracking")
    return nothing
end

"""
    h5p_get_userblock(plist_id::hid_t, len::Ptr{hsize_t})

See `libhdf5` documentation for [`H5Pget_userblock`](https://portal.hdfgroup.org/display/HDF5/H5P_GET_USERBLOCK).
"""
function h5p_get_userblock(plist_id, len)
    var"#status#" = ccall((:H5Pget_userblock, libhdf5), herr_t, (hid_t, Ptr{hsize_t}), plist_id, len)
    var"#status#" < 0 && error("Error getting userblock")
    return nothing
end

"""
    h5p_modify_filter(plist_id::hid_t, filter_id::H5Z_filter_t, flags::Cuint, cd_nelmts::Csize_t, cd_values::Ptr{Cuint})

See `libhdf5` documentation for [`H5Pmodify_filter`](https://portal.hdfgroup.org/display/HDF5/H5P_MODIFY_FILTER).
"""
function h5p_modify_filter(plist_id, filter_id, flags, cd_nelmts, cd_values)
    var"#status#" = ccall((:H5Pmodify_filter, libhdf5), herr_t, (hid_t, H5Z_filter_t, Cuint, Csize_t, Ptr{Cuint}), plist_id, filter_id, flags, cd_nelmts, cd_values)
    var"#status#" < 0 && error("Error modifying filter")
    return nothing
end

"""
    h5p_set_alignment(plist_id::hid_t, threshold::hsize_t, alignment::hsize_t)

See `libhdf5` documentation for [`H5Pset_alignment`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_ALIGNMENT).
"""
function h5p_set_alignment(plist_id, threshold, alignment)
    var"#status#" = ccall((:H5Pset_alignment, libhdf5), herr_t, (hid_t, hsize_t, hsize_t), plist_id, threshold, alignment)
    var"#status#" < 0 && error("Error setting alignment")
    return nothing
end

"""
    h5p_set_alloc_time(plist_id::hid_t, alloc_time::Cint)

See `libhdf5` documentation for [`H5Pset_alloc_time`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_ALLOC_TIME).
"""
function h5p_set_alloc_time(plist_id, alloc_time)
    var"#status#" = ccall((:H5Pset_alloc_time, libhdf5), herr_t, (hid_t, Cint), plist_id, alloc_time)
    var"#status#" < 0 && error("Error setting allocation timing")
    return nothing
end

"""
    h5p_set_char_encoding(plist_id::hid_t, encoding::Cint)

See `libhdf5` documentation for [`H5Pset_char_encoding`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_CHAR_ENCODING).
"""
function h5p_set_char_encoding(plist_id, encoding)
    var"#status#" = ccall((:H5Pset_char_encoding, libhdf5), herr_t, (hid_t, Cint), plist_id, encoding)
    var"#status#" < 0 && error("Error setting char encoding")
    return nothing
end

"""
    h5p_set_chunk(plist_id::hid_t, ndims::Cint, dims::Ptr{hsize_t})

See `libhdf5` documentation for [`H5Pset_chunk`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_CHUNK).
"""
function h5p_set_chunk(plist_id, ndims, dims)
    var"#status#" = ccall((:H5Pset_chunk, libhdf5), herr_t, (hid_t, Cint, Ptr{hsize_t}), plist_id, ndims, dims)
    var"#status#" < 0 && error("Error setting chunk size")
    return nothing
end

"""
    h5p_set_chunk_cache(dapl_id::hid_t, rdcc_nslots::Csize_t, rdcc_nbytes::Csize_t, rdcc_w0::Cdouble)

See `libhdf5` documentation for [`H5Pset_chunk_cache`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_CHUNK_CACHE).
"""
function h5p_set_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
    var"#status#" = ccall((:H5Pset_chunk_cache, libhdf5), herr_t, (hid_t, Csize_t, Csize_t, Cdouble), dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
    var"#status#" < 0 && error("Error setting chunk cache")
    return nothing
end

"""
    h5p_set_create_intermediate_group(plist_id::hid_t, setting::Cuint)

See `libhdf5` documentation for [`H5Pset_create_intermediate_group`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_CREATE_INTERMEDIATE_GROUP).
"""
function h5p_set_create_intermediate_group(plist_id, setting)
    var"#status#" = ccall((:H5Pset_create_intermediate_group, libhdf5), herr_t, (hid_t, Cuint), plist_id, setting)
    var"#status#" < 0 && error("Error setting create intermediate group")
    return nothing
end

"""
    h5p_set_deflate(plist_id::hid_t, setting::Cuint)

See `libhdf5` documentation for [`H5Pset_deflate`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_DEFLATE).
"""
function h5p_set_deflate(plist_id, setting)
    var"#status#" = ccall((:H5Pset_deflate, libhdf5), herr_t, (hid_t, Cuint), plist_id, setting)
    var"#status#" < 0 && error("Error setting compression method and level (deflate)")
    return nothing
end

"""
    h5p_set_dxpl_mpio(dxpl_id::hid_t, xfer_mode::Cint)

See `libhdf5` documentation for [`H5Pset_dxpl_mpio`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_DXPL_MPIO).
"""
function h5p_set_dxpl_mpio(dxpl_id, xfer_mode)
    var"#status#" = ccall((:H5Pset_dxpl_mpio, libhdf5), herr_t, (hid_t, Cint), dxpl_id, xfer_mode)
    var"#status#" < 0 && error("Error setting MPIO transfer mode")
    return nothing
end

"""
    h5p_set_external(plist_id::hid_t, name::Ptr{UInt8}, offset::Int, size::Csize_t)

See `libhdf5` documentation for [`H5Pset_external`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_EXTERNAL).
"""
function h5p_set_external(plist_id, name, offset, size)
    var"#status#" = ccall((:H5Pset_external, libhdf5), herr_t, (hid_t, Ptr{UInt8}, Int, Csize_t), plist_id, name, offset, size)
    var"#status#" < 0 && error("Error setting external property")
    return nothing
end

"""
    h5p_set_fapl_mpio32(fapl_id::hid_t, comm::Hmpih32, info::Hmpih32)

See `libhdf5` documentation for [`H5Pset_fapl_mpio`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_FAPL_MPIO32).
"""
function h5p_set_fapl_mpio32(fapl_id, comm, info)
    var"#status#" = ccall((:H5Pset_fapl_mpio, libhdf5), herr_t, (hid_t, Hmpih32, Hmpih32), fapl_id, comm, info)
    var"#status#" < 0 && error("Error setting MPIO properties")
    return nothing
end

"""
    h5p_set_fapl_mpio64(fapl_id::hid_t, comm::Hmpih64, info::Hmpih64)

See `libhdf5` documentation for [`H5Pset_fapl_mpio`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_FAPL_MPIO64).
"""
function h5p_set_fapl_mpio64(fapl_id, comm, info)
    var"#status#" = ccall((:H5Pset_fapl_mpio, libhdf5), herr_t, (hid_t, Hmpih64, Hmpih64), fapl_id, comm, info)
    var"#status#" < 0 && error("Error setting MPIO properties")
    return nothing
end

"""
    h5p_set_fclose_degree(plist_id::hid_t, fc_degree::Cint)

See `libhdf5` documentation for [`H5Pset_fclose_degree`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_FCLOSE_DEGREE).
"""
function h5p_set_fclose_degree(plist_id, fc_degree)
    var"#status#" = ccall((:H5Pset_fclose_degree, libhdf5), herr_t, (hid_t, Cint), plist_id, fc_degree)
    var"#status#" < 0 && error("Error setting close degree")
    return nothing
end

"""
    h5p_set_filter(plist_id::hid_t, filter_id::H5Z_filter_t, flags::Cuint, cd_nelmts::Csize_t, cd_values::Ptr{Cuint})

See `libhdf5` documentation for [`H5Pset_filter`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_FILTER).
"""
function h5p_set_filter(plist_id, filter_id, flags, cd_nelmts, cd_values)
    var"#status#" = ccall((:H5Pset_filter, libhdf5), herr_t, (hid_t, H5Z_filter_t, Cuint, Csize_t, Ptr{Cuint}), plist_id, filter_id, flags, cd_nelmts, cd_values)
    var"#status#" < 0 && error("Error setting filter")
    return nothing
end

"""
    h5p_set_layout(plist_id::hid_t, setting::Cint)

See `libhdf5` documentation for [`H5Pset_layout`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_LAYOUT).
"""
function h5p_set_layout(plist_id, setting)
    var"#status#" = ccall((:H5Pset_layout, libhdf5), herr_t, (hid_t, Cint), plist_id, setting)
    var"#status#" < 0 && error("Error setting layout")
    return nothing
end

"""
    h5p_set_libver_bounds(fapl_id::hid_t, low::Cint, high::Cint)

See `libhdf5` documentation for [`H5Pset_libver_bounds`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_LIBVER_BOUNDS).
"""
function h5p_set_libver_bounds(fapl_id, low, high)
    var"#status#" = ccall((:H5Pset_libver_bounds, libhdf5), herr_t, (hid_t, Cint, Cint), fapl_id, low, high)
    var"#status#" < 0 && error("Error setting library version bounds")
    return nothing
end

"""
    h5p_set_local_heap_size_hint(plist_id::hid_t, size_hint::Csize_t)

See `libhdf5` documentation for [`H5Pset_local_heap_size_hint`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_LOCAL_HEAP_SIZE_HINT).
"""
function h5p_set_local_heap_size_hint(plist_id, size_hint)
    var"#status#" = ccall((:H5Pset_local_heap_size_hint, libhdf5), herr_t, (hid_t, Csize_t), plist_id, size_hint)
    var"#status#" < 0 && error("Error setting local heap size hint")
    return nothing
end

"""
    h5p_set_obj_track_times(plist_id::hid_t, track_times::UInt8)

See `libhdf5` documentation for [`H5Pset_obj_track_times`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_OBJ_TRACK_TIMES).
"""
function h5p_set_obj_track_times(plist_id, track_times)
    var"#status#" = ccall((:H5Pset_obj_track_times, libhdf5), herr_t, (hid_t, UInt8), plist_id, track_times)
    var"#status#" < 0 && error("Error setting object time tracking")
    return nothing
end

"""
    h5p_set_shuffle(plist_id::hid_t)

See `libhdf5` documentation for [`H5Pset_shuffle`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_SHUFFLE).
"""
function h5p_set_shuffle(plist_id)
    var"#status#" = ccall((:H5Pset_shuffle, libhdf5), herr_t, (hid_t,), plist_id)
    var"#status#" < 0 && error("Error enabling shuffle filter")
    return nothing
end

"""
    h5p_set_userblock(plist_id::hid_t, len::hsize_t)

See `libhdf5` documentation for [`H5Pset_userblock`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_USERBLOCK).
"""
function h5p_set_userblock(plist_id, len)
    var"#status#" = ccall((:H5Pset_userblock, libhdf5), herr_t, (hid_t, hsize_t), plist_id, len)
    var"#status#" < 0 && error("Error setting userblock")
    return nothing
end

"""
    h5p_set_virtual(dcpl_id::hid_t, vspace_id::hid_t, src_file_name::Ptr{UInt8}, src_dset_name::Ptr{UInt8}, src_space_id::hid_t)

See `libhdf5` documentation for [`H5Pset_virtual`](https://portal.hdfgroup.org/display/HDF5/H5P_SET_VIRTUAL).
"""
function h5p_set_virtual(dcpl_id, vspace_id, src_file_name, src_dset_name, src_space_id)
    var"#status#" = ccall((:H5Pset_virtual, libhdf5), herr_t, (hid_t, hid_t, Ptr{UInt8}, Ptr{UInt8}, hid_t), dcpl_id, vspace_id, src_file_name, src_dset_name, src_space_id)
    var"#status#" < 0 && error("Error setting virtual")
    return nothing
end

"""
    h5r_create(ref::Ptr{Cvoid}, loc_id::hid_t, pathname::Ptr{UInt8}, ref_type::Cint, space_id::hid_t)

See `libhdf5` documentation for [`H5Rcreate`](https://portal.hdfgroup.org/display/HDF5/H5R_CREATE).
"""
function h5r_create(ref, loc_id, pathname, ref_type, space_id)
    var"#status#" = ccall((:H5Rcreate, libhdf5), herr_t, (Ptr{Cvoid}, hid_t, Ptr{UInt8}, Cint, hid_t), ref, loc_id, pathname, ref_type, space_id)
    var"#status#" < 0 && error("Error creating reference to object ", h5i_get_name(loc_id), "/", pathname)
    return nothing
end

"""
    h5r_dereference(obj_id::hid_t, oapl_id::hid_t, ref_type::Cint, ref::Ptr{Cvoid}) -> hid_t

See `libhdf5` documentation for [`H5Rdereference2`](https://portal.hdfgroup.org/display/HDF5/H5R_DEREFERENCE2).
"""
function h5r_dereference(obj_id, oapl_id, ref_type, ref)
    var"#status#" = ccall((:H5Rdereference2, libhdf5), hid_t, (hid_t, hid_t, Cint, Ptr{Cvoid}), obj_id, oapl_id, ref_type, ref)
    var"#status#" < 0 && error("Error dereferencing object")
    return var"#status#"
end

"""
    h5r_get_obj_type(loc_id::hid_t, ref_type::Cint, ref::Ptr{Cvoid}, obj_type::Ptr{Cint})

See `libhdf5` documentation for [`H5Rget_obj_type2`](https://portal.hdfgroup.org/display/HDF5/H5R_GET_OBJ_TYPE2).
"""
function h5r_get_obj_type(loc_id, ref_type, ref, obj_type)
    var"#status#" = ccall((:H5Rget_obj_type2, libhdf5), herr_t, (hid_t, Cint, Ptr{Cvoid}, Ptr{Cint}), loc_id, ref_type, ref, obj_type)
    var"#status#" < 0 && error("Error getting object type")
    return nothing
end

"""
    h5r_get_region(loc_id::hid_t, ref_type::Cint, ref::Ptr{Cvoid}) -> hid_t

See `libhdf5` documentation for [`H5Rget_region`](https://portal.hdfgroup.org/display/HDF5/H5R_GET_REGION).
"""
function h5r_get_region(loc_id, ref_type, ref)
    var"#status#" = ccall((:H5Rget_region, libhdf5), hid_t, (hid_t, Cint, Ptr{Cvoid}), loc_id, ref_type, ref)
    var"#status#" < 0 && error("Error getting region from reference")
    return var"#status#"
end

"""
    h5s_close(space_id::hid_t)

See `libhdf5` documentation for [`H5Sclose`](https://portal.hdfgroup.org/display/HDF5/H5S_CLOSE).
"""
function h5s_close(space_id)
    var"#status#" = ccall((:H5Sclose, libhdf5), herr_t, (hid_t,), space_id)
    var"#status#" < 0 && error("Error closing dataspace")
    return nothing
end

@static if v"1.10.7" ≤ _libhdf5_build_ver
    @doc """
        h5s_combine_select(space1_id::hid_t, op::Cint, space2_id::hid_t) -> hid_t

    See `libhdf5` documentation for [`H5Scombine_select`](https://portal.hdfgroup.org/display/HDF5/H5S_COMBINE_SELECT).
    """
    function h5s_combine_select(space1_id, op, space2_id)
        var"#status#" = ccall((:H5Scombine_select, libhdf5), hid_t, (hid_t, Cint, hid_t), space1_id, op, space2_id)
        var"#status#" < 0 && error("Error combining dataspaces")
        return var"#status#"
    end
end

"""
    h5s_copy(space_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Scopy`](https://portal.hdfgroup.org/display/HDF5/H5S_COPY).
"""
function h5s_copy(space_id)
    var"#status#" = ccall((:H5Scopy, libhdf5), hid_t, (hid_t,), space_id)
    var"#status#" < 0 && error("Error copying dataspace")
    return var"#status#"
end

"""
    h5s_create(class::Cint) -> hid_t

See `libhdf5` documentation for [`H5Screate`](https://portal.hdfgroup.org/display/HDF5/H5S_CREATE).
"""
function h5s_create(class)
    var"#status#" = ccall((:H5Screate, libhdf5), hid_t, (Cint,), class)
    var"#status#" < 0 && error("Error creating dataspace")
    return var"#status#"
end

"""
    h5s_create_simple(rank::Cint, current_dims::Ptr{hsize_t}, maximum_dims::Ptr{hsize_t}) -> hid_t

See `libhdf5` documentation for [`H5Screate_simple`](https://portal.hdfgroup.org/display/HDF5/H5S_CREATE_SIMPLE).
"""
function h5s_create_simple(rank, current_dims, maximum_dims)
    var"#status#" = ccall((:H5Screate_simple, libhdf5), hid_t, (Cint, Ptr{hsize_t}, Ptr{hsize_t}), rank, current_dims, maximum_dims)
    var"#status#" < 0 && error("Error creating simple dataspace")
    return var"#status#"
end

"""
    h5s_extent_equal(space1_id::hid_t, space2_id::hid_t) -> Bool

See `libhdf5` documentation for [`H5Sextent_equal`](https://portal.hdfgroup.org/display/HDF5/H5S_EXTENT_EQUAL).
"""
function h5s_extent_equal(space1_id, space2_id)
    var"#status#" = ccall((:H5Sextent_equal, libhdf5), htri_t, (hid_t, hid_t), space1_id, space2_id)
    var"#status#" < 0 && error("Error comparing dataspaces")
    return var"#status#" > 0
end

"""
    h5s_get_regular_hyperslab(space_id::hid_t, start::Ptr{hsize_t}, stride::Ptr{hsize_t}, count::Ptr{hsize_t}, block::Ptr{hsize_t})

See `libhdf5` documentation for [`H5Sget_regular_hyperslab`](https://portal.hdfgroup.org/display/HDF5/H5S_GET_REGULAR_HYPERSLAB).
"""
function h5s_get_regular_hyperslab(space_id, start, stride, count, block)
    var"#status#" = ccall((:H5Sget_regular_hyperslab, libhdf5), herr_t, (hid_t, Ptr{hsize_t}, Ptr{hsize_t}, Ptr{hsize_t}, Ptr{hsize_t}), space_id, start, stride, count, block)
    var"#status#" < 0 && error("Error getting regular hyperslab selection")
    return nothing
end

"""
    h5s_get_simple_extent_dims(space_id::hid_t, dims::Ptr{hsize_t}, maxdims::Ptr{hsize_t}) -> Int

See `libhdf5` documentation for [`H5Sget_simple_extent_dims`](https://portal.hdfgroup.org/display/HDF5/H5S_GET_SIMPLE_EXTENT_DIMS).
"""
function h5s_get_simple_extent_dims(space_id, dims, maxdims)
    var"#status#" = ccall((:H5Sget_simple_extent_dims, libhdf5), Cint, (hid_t, Ptr{hsize_t}, Ptr{hsize_t}), space_id, dims, maxdims)
    var"#status#" < 0 && error("Error getting the dimensions for a dataspace")
    return Int(var"#status#")
end

"""
    h5s_get_simple_extent_ndims(space_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Sget_simple_extent_ndims`](https://portal.hdfgroup.org/display/HDF5/H5S_GET_SIMPLE_EXTENT_NDIMS).
"""
function h5s_get_simple_extent_ndims(space_id)
    var"#status#" = ccall((:H5Sget_simple_extent_ndims, libhdf5), Cint, (hid_t,), space_id)
    var"#status#" < 0 && error("Error getting the number of dimensions for a dataspace")
    return Int(var"#status#")
end

"""
    h5s_get_simple_extent_type(space_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Sget_simple_extent_type`](https://portal.hdfgroup.org/display/HDF5/H5S_GET_SIMPLE_EXTENT_TYPE).
"""
function h5s_get_simple_extent_type(space_id)
    var"#status#" = ccall((:H5Sget_simple_extent_type, libhdf5), Cint, (hid_t,), space_id)
    var"#status#" < 0 && error("Error getting the dataspace type")
    return Int(var"#status#")
end

"""
    h5s_get_select_hyper_nblocks(space_id::hid_t) -> hssize_t

See `libhdf5` documentation for [`H5Sget_select_hyper_nblocks`](https://portal.hdfgroup.org/display/HDF5/H5S_GET_SELECT_HYPER_NBLOCKS).
"""
function h5s_get_select_hyper_nblocks(space_id)
    var"#status#" = ccall((:H5Sget_select_hyper_nblocks, libhdf5), hssize_t, (hid_t,), space_id)
    var"#status#" < 0 && error("Error getting number of selected blocks")
    return var"#status#"
end

"""
    h5s_get_select_npoints(space_id::hid_t) -> hsize_t

See `libhdf5` documentation for [`H5Sget_select_npoints`](https://portal.hdfgroup.org/display/HDF5/H5S_GET_SELECT_NPOINTS).
"""
function h5s_get_select_npoints(space_id)
    var"#status#" = ccall((:H5Sget_select_npoints, libhdf5), hsize_t, (hid_t,), space_id)
    var"#status#" == -1 % hsize_t && error("Error getting the number of selected points")
    return var"#status#"
end

"""
    h5s_get_select_type(space_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Sget_select_type`](https://portal.hdfgroup.org/display/HDF5/H5S_GET_SELECT_TYPE).
"""
function h5s_get_select_type(space_id)
    var"#status#" = ccall((:H5Sget_select_type, libhdf5), Cint, (hid_t,), space_id)
    var"#status#" < 0 && error("Error getting the selection type")
    return Int(var"#status#")
end

"""
    h5s_is_regular_hyperslab(space_id::hid_t) -> Bool

See `libhdf5` documentation for [`H5Sis_regular_hyperslab`](https://portal.hdfgroup.org/display/HDF5/H5S_IS_REGULAR_HYPERSLAB).
"""
function h5s_is_regular_hyperslab(space_id)
    var"#status#" = ccall((:H5Sis_regular_hyperslab, libhdf5), htri_t, (hid_t,), space_id)
    var"#status#" < 0 && error("Error determining whether datapace is regular hyperslab")
    return var"#status#" > 0
end

"""
    h5s_is_simple(space_id::hid_t) -> Bool

See `libhdf5` documentation for [`H5Sis_simple`](https://portal.hdfgroup.org/display/HDF5/H5S_IS_SIMPLE).
"""
function h5s_is_simple(space_id)
    var"#status#" = ccall((:H5Sis_simple, libhdf5), htri_t, (hid_t,), space_id)
    var"#status#" < 0 && error("Error determining whether dataspace is simple")
    return var"#status#" > 0
end

"""
    h5s_select_hyperslab(dspace_id::hid_t, seloper::Cint, start::Ptr{hsize_t}, stride::Ptr{hsize_t}, count::Ptr{hsize_t}, block::Ptr{hsize_t})

See `libhdf5` documentation for [`H5Sselect_hyperslab`](https://portal.hdfgroup.org/display/HDF5/H5S_SELECT_HYPERSLAB).
"""
function h5s_select_hyperslab(dspace_id, seloper, start, stride, count, block)
    var"#status#" = ccall((:H5Sselect_hyperslab, libhdf5), herr_t, (hid_t, Cint, Ptr{hsize_t}, Ptr{hsize_t}, Ptr{hsize_t}, Ptr{hsize_t}), dspace_id, seloper, start, stride, count, block)
    var"#status#" < 0 && error("Error selecting hyperslab")
    return nothing
end

"""
    h5s_set_extent_simple(dspace_id::hid_t, rank::Cint, current_size::Ptr{hsize_t}, maximum_size::Ptr{hsize_t})

See `libhdf5` documentation for [`H5Sset_extent_simple`](https://portal.hdfgroup.org/display/HDF5/H5S_SET_EXTENT_SIMPLE).
"""
function h5s_set_extent_simple(dspace_id, rank, current_size, maximum_size)
    var"#status#" = ccall((:H5Sset_extent_simple, libhdf5), herr_t, (hid_t, Cint, Ptr{hsize_t}, Ptr{hsize_t}), dspace_id, rank, current_size, maximum_size)
    var"#status#" < 0 && error("Error setting dataspace size")
    return nothing
end

"""
    h5t_array_create(basetype_id::hid_t, ndims::Cuint, sz::Ptr{hsize_t}) -> hid_t

See `libhdf5` documentation for [`H5Tarray_create2`](https://portal.hdfgroup.org/display/HDF5/H5T_ARRAY_CREATE2).
"""
function h5t_array_create(basetype_id, ndims, sz)
    var"#status#" = ccall((:H5Tarray_create2, libhdf5), hid_t, (hid_t, Cuint, Ptr{hsize_t}), basetype_id, ndims, sz)
    var"#status#" < 0 && error("Error creating H5T_ARRAY of id ", basetype_id, " and size ", sz)
    return var"#status#"
end

"""
    h5t_close(dtype_id::hid_t)

See `libhdf5` documentation for [`H5Tclose`](https://portal.hdfgroup.org/display/HDF5/H5T_CLOSE).
"""
function h5t_close(dtype_id)
    var"#status#" = ccall((:H5Tclose, libhdf5), herr_t, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error closing datatype")
    return nothing
end

"""
    h5t_committed(dtype_id::hid_t) -> Bool

See `libhdf5` documentation for [`H5Tcommitted`](https://portal.hdfgroup.org/display/HDF5/H5T_COMMITTED).
"""
function h5t_committed(dtype_id)
    var"#status#" = ccall((:H5Tcommitted, libhdf5), htri_t, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error determining whether datatype is committed")
    return var"#status#" > 0
end

"""
    h5t_commit(loc_id::hid_t, name::Ptr{UInt8}, dtype_id::hid_t, lcpl_id::hid_t, tcpl_id::hid_t, tapl_id::hid_t)

See `libhdf5` documentation for [`H5Tcommit2`](https://portal.hdfgroup.org/display/HDF5/H5T_COMMIT2).
"""
function h5t_commit(loc_id, name, dtype_id, lcpl_id, tcpl_id, tapl_id)
    var"#status#" = ccall((:H5Tcommit2, libhdf5), herr_t, (hid_t, Ptr{UInt8}, hid_t, hid_t, hid_t, hid_t), loc_id, name, dtype_id, lcpl_id, tcpl_id, tapl_id)
    var"#status#" < 0 && error("Error committing type")
    return nothing
end

"""
    h5t_copy(dtype_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Tcopy`](https://portal.hdfgroup.org/display/HDF5/H5T_COPY).
"""
function h5t_copy(dtype_id)
    var"#status#" = ccall((:H5Tcopy, libhdf5), hid_t, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error copying datatype")
    return var"#status#"
end

"""
    h5t_create(class_id::Cint, sz::Csize_t) -> hid_t

See `libhdf5` documentation for [`H5Tcreate`](https://portal.hdfgroup.org/display/HDF5/H5T_CREATE).
"""
function h5t_create(class_id, sz)
    var"#status#" = ccall((:H5Tcreate, libhdf5), hid_t, (Cint, Csize_t), class_id, sz)
    var"#status#" < 0 && error("Error creating datatype of id ", class_id)
    return var"#status#"
end

"""
    h5t_enum_insert(dtype_id::hid_t, name::Cstring, value::Ptr{Cvoid})

See `libhdf5` documentation for [`H5Tenum_insert`](https://portal.hdfgroup.org/display/HDF5/H5T_ENUM_INSERT).
"""
function h5t_enum_insert(dtype_id, name, value)
    var"#status#" = ccall((:H5Tenum_insert, libhdf5), herr_t, (hid_t, Cstring, Ptr{Cvoid}), dtype_id, name, value)
    var"#status#" < 0 && error("Error adding ", name, " to enum datatype")
    return nothing
end

"""
    h5t_equal(dtype_id1::hid_t, dtype_id2::hid_t) -> Bool

See `libhdf5` documentation for [`H5Tequal`](https://portal.hdfgroup.org/display/HDF5/H5T_EQUAL).
"""
function h5t_equal(dtype_id1, dtype_id2)
    var"#status#" = ccall((:H5Tequal, libhdf5), htri_t, (hid_t, hid_t), dtype_id1, dtype_id2)
    var"#status#" < 0 && error("Error checking datatype equality")
    return var"#status#" > 0
end

"""
    h5t_get_array_dims(dtype_id::hid_t, dims::Ptr{hsize_t}) -> Int

See `libhdf5` documentation for [`H5Tget_array_dims2`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_ARRAY_DIMS2).
"""
function h5t_get_array_dims(dtype_id, dims)
    var"#status#" = ccall((:H5Tget_array_dims2, libhdf5), Cint, (hid_t, Ptr{hsize_t}), dtype_id, dims)
    var"#status#" < 0 && error("Error getting dimensions of array")
    return Int(var"#status#")
end

"""
    h5t_get_array_ndims(dtype_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Tget_array_ndims`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_ARRAY_NDIMS).
"""
function h5t_get_array_ndims(dtype_id)
    var"#status#" = ccall((:H5Tget_array_ndims, libhdf5), Cint, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error getting ndims of array")
    return Int(var"#status#")
end

"""
    h5t_get_class(dtype_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Tget_class`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_CLASS).
"""
function h5t_get_class(dtype_id)
    var"#status#" = ccall((:H5Tget_class, libhdf5), Cint, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error getting class")
    return Int(var"#status#")
end

"""
    h5t_get_cset(dtype_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Tget_cset`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_CSET).
"""
function h5t_get_cset(dtype_id)
    var"#status#" = ccall((:H5Tget_cset, libhdf5), Cint, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error getting character set encoding")
    return Int(var"#status#")
end

"""
    h5t_get_ebias(dtype_id::hid_t) -> Csize_t

See `libhdf5` documentation for [`H5Tget_ebias`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_EBIAS).
"""
function h5t_get_ebias(dtype_id)
    var"#status#" = ccall((:H5Tget_ebias, libhdf5), Csize_t, (hid_t,), dtype_id)
    return var"#status#"
end

"""
    h5t_get_fields(dtype_id::hid_t, spos::Ref{Csize_t}, epos::Ref{Csize_t}, esize::Ref{Csize_t}, mpos::Ref{Csize_t}, msize::Ref{Csize_t})

See `libhdf5` documentation for [`H5Tget_fields`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_FIELDS).
"""
function h5t_get_fields(dtype_id, spos, epos, esize, mpos, msize)
    var"#status#" = ccall((:H5Tget_fields, libhdf5), herr_t, (hid_t, Ref{Csize_t}, Ref{Csize_t}, Ref{Csize_t}, Ref{Csize_t}, Ref{Csize_t}), dtype_id, spos, epos, esize, mpos, msize)
    var"#status#" < 0 && error("Error getting datatype floating point bit positions")
    return nothing
end

"""
    h5t_get_member_class(dtype_id::hid_t, index::Cuint) -> Int

See `libhdf5` documentation for [`H5Tget_member_class`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_MEMBER_CLASS).
"""
function h5t_get_member_class(dtype_id, index)
    var"#status#" = ccall((:H5Tget_member_class, libhdf5), Cint, (hid_t, Cuint), dtype_id, index)
    var"#status#" < 0 && error("Error getting class of compound datatype member #", index)
    return Int(var"#status#")
end

"""
    h5t_get_member_index(dtype_id::hid_t, membername::Ptr{UInt8}) -> Int

See `libhdf5` documentation for [`H5Tget_member_index`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_MEMBER_INDEX).
"""
function h5t_get_member_index(dtype_id, membername)
    var"#status#" = ccall((:H5Tget_member_index, libhdf5), Cint, (hid_t, Ptr{UInt8}), dtype_id, membername)
    var"#status#" < 0 && error("Error getting index of compound datatype member \"", membername, "\"")
    return Int(var"#status#")
end

"""
    h5t_get_member_offset(dtype_id::hid_t, index::Cuint) -> Csize_t

See `libhdf5` documentation for [`H5Tget_member_offset`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_MEMBER_OFFSET).
"""
function h5t_get_member_offset(dtype_id, index)
    var"#status#" = ccall((:H5Tget_member_offset, libhdf5), Csize_t, (hid_t, Cuint), dtype_id, index)
    return var"#status#"
end

"""
    h5t_get_member_type(dtype_id::hid_t, index::Cuint) -> hid_t

See `libhdf5` documentation for [`H5Tget_member_type`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_MEMBER_TYPE).
"""
function h5t_get_member_type(dtype_id, index)
    var"#status#" = ccall((:H5Tget_member_type, libhdf5), hid_t, (hid_t, Cuint), dtype_id, index)
    var"#status#" < 0 && error("Error getting type of compound datatype member #", index)
    return var"#status#"
end

"""
    h5t_get_native_type(dtype_id::hid_t, direction::Cint) -> hid_t

See `libhdf5` documentation for [`H5Tget_native_type`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_NATIVE_TYPE).
"""
function h5t_get_native_type(dtype_id, direction)
    var"#status#" = ccall((:H5Tget_native_type, libhdf5), hid_t, (hid_t, Cint), dtype_id, direction)
    var"#status#" < 0 && error("Error getting native type")
    return var"#status#"
end

"""
    h5t_get_nmembers(dtype_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Tget_nmembers`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_NMEMBERS).
"""
function h5t_get_nmembers(dtype_id)
    var"#status#" = ccall((:H5Tget_nmembers, libhdf5), Cint, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error getting the number of members")
    return Int(var"#status#")
end

"""
    h5t_get_sign(dtype_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Tget_sign`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_SIGN).
"""
function h5t_get_sign(dtype_id)
    var"#status#" = ccall((:H5Tget_sign, libhdf5), Cint, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error getting sign")
    return Int(var"#status#")
end

"""
    h5t_get_size(dtype_id::hid_t) -> Csize_t

See `libhdf5` documentation for [`H5Tget_size`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_SIZE).
"""
function h5t_get_size(dtype_id)
    var"#status#" = ccall((:H5Tget_size, libhdf5), Csize_t, (hid_t,), dtype_id)
    return var"#status#"
end

"""
    h5t_get_strpad(dtype_id::hid_t) -> Int

See `libhdf5` documentation for [`H5Tget_strpad`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_STRPAD).
"""
function h5t_get_strpad(dtype_id)
    var"#status#" = ccall((:H5Tget_strpad, libhdf5), Cint, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error getting string padding")
    return Int(var"#status#")
end

"""
    h5t_get_super(dtype_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Tget_super`](https://portal.hdfgroup.org/display/HDF5/H5T_GET_SUPER).
"""
function h5t_get_super(dtype_id)
    var"#status#" = ccall((:H5Tget_super, libhdf5), hid_t, (hid_t,), dtype_id)
    var"#status#" < 0 && error("Error getting super type")
    return var"#status#"
end

"""
    h5t_insert(dtype_id::hid_t, fieldname::Ptr{UInt8}, offset::Csize_t, field_id::hid_t)

See `libhdf5` documentation for [`H5Tinsert`](https://portal.hdfgroup.org/display/HDF5/H5T_INSERT).
"""
function h5t_insert(dtype_id, fieldname, offset, field_id)
    var"#status#" = ccall((:H5Tinsert, libhdf5), herr_t, (hid_t, Ptr{UInt8}, Csize_t, hid_t), dtype_id, fieldname, offset, field_id)
    var"#status#" < 0 && error("Error adding field ", fieldname, " to compound datatype")
    return nothing
end

"""
    h5t_is_variable_str(type_id::hid_t) -> Bool

See `libhdf5` documentation for [`H5Tis_variable_str`](https://portal.hdfgroup.org/display/HDF5/H5T_IS_VARIABLE_STR).
"""
function h5t_is_variable_str(type_id)
    var"#status#" = ccall((:H5Tis_variable_str, libhdf5), htri_t, (hid_t,), type_id)
    var"#status#" < 0 && error("Error determining whether string is of variable length")
    return var"#status#" > 0
end

"""
    h5t_lock(type_id::hid_t)

See `libhdf5` documentation for [`H5Tlock`](https://portal.hdfgroup.org/display/HDF5/H5T_LOCK).
"""
function h5t_lock(type_id)
    var"#status#" = ccall((:H5Tlock, libhdf5), herr_t, (hid_t,), type_id)
    var"#status#" < 0 && error("Error locking type")
    return nothing
end

"""
    h5t_open(loc_id::hid_t, name::Ptr{UInt8}, tapl_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Topen2`](https://portal.hdfgroup.org/display/HDF5/H5T_OPEN2).
"""
function h5t_open(loc_id, name, tapl_id)
    var"#status#" = ccall((:H5Topen2, libhdf5), hid_t, (hid_t, Ptr{UInt8}, hid_t), loc_id, name, tapl_id)
    var"#status#" < 0 && error("Error opening type ", h5i_get_name(loc_id), "/", name)
    return var"#status#"
end

"""
    h5t_set_cset(dtype_id::hid_t, cset::Cint)

See `libhdf5` documentation for [`H5Tset_cset`](https://portal.hdfgroup.org/display/HDF5/H5T_SET_CSET).
"""
function h5t_set_cset(dtype_id, cset)
    var"#status#" = ccall((:H5Tset_cset, libhdf5), herr_t, (hid_t, Cint), dtype_id, cset)
    var"#status#" < 0 && error("Error setting character set in datatype")
    return nothing
end

"""
    h5t_set_ebias(dtype_id::hid_t, ebias::Csize_t)

See `libhdf5` documentation for [`H5Tset_ebias`](https://portal.hdfgroup.org/display/HDF5/H5T_SET_EBIAS).
"""
function h5t_set_ebias(dtype_id, ebias)
    var"#status#" = ccall((:H5Tset_ebias, libhdf5), herr_t, (hid_t, Csize_t), dtype_id, ebias)
    var"#status#" < 0 && error("Error setting datatype floating point exponent bias")
    return nothing
end

"""
    h5t_set_fields(dtype_id::hid_t, spos::Csize_t, epos::Csize_t, esize::Csize_t, mpos::Csize_t, msize::Csize_t)

See `libhdf5` documentation for [`H5Tset_fields`](https://portal.hdfgroup.org/display/HDF5/H5T_SET_FIELDS).
"""
function h5t_set_fields(dtype_id, spos, epos, esize, mpos, msize)
    var"#status#" = ccall((:H5Tset_fields, libhdf5), herr_t, (hid_t, Csize_t, Csize_t, Csize_t, Csize_t, Csize_t), dtype_id, spos, epos, esize, mpos, msize)
    var"#status#" < 0 && error("Error setting datatype floating point bit positions")
    return nothing
end

"""
    h5t_set_precision(dtype_id::hid_t, sz::Csize_t)

See `libhdf5` documentation for [`H5Tset_precision`](https://portal.hdfgroup.org/display/HDF5/H5T_SET_PRECISION).
"""
function h5t_set_precision(dtype_id, sz)
    var"#status#" = ccall((:H5Tset_precision, libhdf5), herr_t, (hid_t, Csize_t), dtype_id, sz)
    var"#status#" < 0 && error("Error setting precision of datatype")
    return nothing
end

"""
    h5t_set_size(dtype_id::hid_t, sz::Csize_t)

See `libhdf5` documentation for [`H5Tset_size`](https://portal.hdfgroup.org/display/HDF5/H5T_SET_SIZE).
"""
function h5t_set_size(dtype_id, sz)
    var"#status#" = ccall((:H5Tset_size, libhdf5), herr_t, (hid_t, Csize_t), dtype_id, sz)
    var"#status#" < 0 && error("Error setting size of datatype")
    return nothing
end

"""
    h5t_set_strpad(dtype_id::hid_t, sz::Cint)

See `libhdf5` documentation for [`H5Tset_strpad`](https://portal.hdfgroup.org/display/HDF5/H5T_SET_STRPAD).
"""
function h5t_set_strpad(dtype_id, sz)
    var"#status#" = ccall((:H5Tset_strpad, libhdf5), herr_t, (hid_t, Cint), dtype_id, sz)
    var"#status#" < 0 && error("Error setting size of datatype")
    return nothing
end

"""
    h5t_set_tag(dtype_id::hid_t, tag::Cstring)

See `libhdf5` documentation for [`H5Tset_tag`](https://portal.hdfgroup.org/display/HDF5/H5T_SET_TAG).
"""
function h5t_set_tag(dtype_id, tag)
    var"#status#" = ccall((:H5Tset_tag, libhdf5), herr_t, (hid_t, Cstring), dtype_id, tag)
    var"#status#" < 0 && error("Error setting opaque tag")
    return nothing
end

"""
    h5t_vlen_create(base_type_id::hid_t) -> hid_t

See `libhdf5` documentation for [`H5Tvlen_create`](https://portal.hdfgroup.org/display/HDF5/H5T_VLEN_CREATE).
"""
function h5t_vlen_create(base_type_id)
    var"#status#" = ccall((:H5Tvlen_create, libhdf5), hid_t, (hid_t,), base_type_id)
    var"#status#" < 0 && error("Error creating vlen type")
    return var"#status#"
end

"""
    h5do_append(dset_id::hid_t, dxpl_id::hid_t, index::Cuint, num_elem::hsize_t, memtype::hid_t, buffer::Ptr{Cvoid})

See `libhdf5` documentation for [`H5DOappend`](https://portal.hdfgroup.org/display/HDF5/H5DO_APPEND).
"""
function h5do_append(dset_id, dxpl_id, index, num_elem, memtype, buffer)
    var"#status#" = ccall((:H5DOappend, libhdf5_hl), herr_t, (hid_t, hid_t, Cuint, hsize_t, hid_t, Ptr{Cvoid}), dset_id, dxpl_id, index, num_elem, memtype, buffer)
    var"#status#" < 0 && error("error appending")
    return nothing
end

"""
    h5do_write_chunk(dset_id::hid_t, dxpl_id::hid_t, filter_mask::Int32, offset::Ptr{hsize_t}, bufsize::Csize_t, buf::Ptr{Cvoid})

See `libhdf5` documentation for [`H5DOwrite_chunk`](https://portal.hdfgroup.org/display/HDF5/H5DO_WRITE_CHUNK).
"""
function h5do_write_chunk(dset_id, dxpl_id, filter_mask, offset, bufsize, buf)
    var"#status#" = ccall((:H5DOwrite_chunk, libhdf5_hl), herr_t, (hid_t, hid_t, Int32, Ptr{hsize_t}, Csize_t, Ptr{Cvoid}), dset_id, dxpl_id, filter_mask, offset, bufsize, buf)
    var"#status#" < 0 && error("Error writing chunk")
    return nothing
end

"""
    h5ds_attach_scale(did::hid_t, dsid::hid_t, idx::Cuint)

See `libhdf5` documentation for [`H5DSattach_scale`](https://portal.hdfgroup.org/display/HDF5/H5DS_ATTACH_SCALE).
"""
function h5ds_attach_scale(did, dsid, idx)
    var"#status#" = ccall((:H5DSattach_scale, libhdf5_hl), herr_t, (hid_t, hid_t, Cuint), did, dsid, idx)
    var"#status#" < 0 && error("Unable to attach scale")
    return nothing
end

"""
    h5ds_detach_scale(did::hid_t, dsid::hid_t, idx::Cuint)

See `libhdf5` documentation for [`H5DSdetach_scale`](https://portal.hdfgroup.org/display/HDF5/H5DS_DETACH_SCALE).
"""
function h5ds_detach_scale(did, dsid, idx)
    var"#status#" = ccall((:H5DSdetach_scale, libhdf5_hl), herr_t, (hid_t, hid_t, Cuint), did, dsid, idx)
    var"#status#" < 0 && error("Unable to detach scale")
    return nothing
end

"""
    h5ds_get_label(did::hid_t, idx::Cuint, label::Ptr{UInt8}, size::hsize_t)

See `libhdf5` documentation for [`H5DSget_label`](https://portal.hdfgroup.org/display/HDF5/H5DS_GET_LABEL).
"""
function h5ds_get_label(did, idx, label, size)
    var"#status#" = ccall((:H5DSget_label, libhdf5_hl), herr_t, (hid_t, Cuint, Ptr{UInt8}, hsize_t), did, idx, label, size)
    var"#status#" < 0 && error("Unable to get label")
    return nothing
end

"""
    h5ds_get_num_scales(did::hid_t, idx::Cuint) -> Int

See `libhdf5` documentation for [`H5DSget_num_scales`](https://portal.hdfgroup.org/display/HDF5/H5DS_GET_NUM_SCALES).
"""
function h5ds_get_num_scales(did, idx)
    var"#status#" = ccall((:H5DSget_num_scales, libhdf5_hl), Cint, (hid_t, Cuint), did, idx)
    var"#status#" < 0 && error("Error getting number of scales")
    return Int(var"#status#")
end

"""
    h5ds_get_scale_name(did::hid_t, name::Ptr{UInt8}, size::Csize_t) -> Cssize_t

See `libhdf5` documentation for [`H5DSget_scale_name`](https://portal.hdfgroup.org/display/HDF5/H5DS_GET_SCALE_NAME).
"""
function h5ds_get_scale_name(did, name, size)
    var"#status#" = ccall((:H5DSget_scale_name, libhdf5_hl), Cssize_t, (hid_t, Ptr{UInt8}, Csize_t), did, name, size)
    var"#status#" < 0 && error("Unable to get scale name")
    return var"#status#"
end

"""
    h5ds_is_attached(did::hid_t, dsid::hid_t, idx::Cuint) -> Bool

See `libhdf5` documentation for [`H5DSis_attached`](https://portal.hdfgroup.org/display/HDF5/H5DS_IS_ATTACHED).
"""
function h5ds_is_attached(did, dsid, idx)
    var"#status#" = ccall((:H5DSis_attached, libhdf5_hl), htri_t, (hid_t, hid_t, Cuint), did, dsid, idx)
    var"#status#" < 0 && error("Unable to check if dimension is attached")
    return var"#status#" > 0
end

"""
    h5ds_is_scale(did::hid_t) -> Bool

See `libhdf5` documentation for [`H5DSis_scale`](https://portal.hdfgroup.org/display/HDF5/H5DS_IS_SCALE).
"""
function h5ds_is_scale(did)
    var"#status#" = ccall((:H5DSis_scale, libhdf5_hl), htri_t, (hid_t,), did)
    var"#status#" < 0 && error("Unable to check if dataset is scale")
    return var"#status#" > 0
end

"""
    h5ds_set_label(did::hid_t, idx::Cuint, label::Ref{UInt8})

See `libhdf5` documentation for [`H5DSset_label`](https://portal.hdfgroup.org/display/HDF5/H5DS_SET_LABEL).
"""
function h5ds_set_label(did, idx, label)
    var"#status#" = ccall((:H5DSset_label, libhdf5_hl), herr_t, (hid_t, Cuint, Ref{UInt8}), did, idx, label)
    var"#status#" < 0 && error("Unable to set label")
    return nothing
end

"""
    h5ds_set_scale(dsid::hid_t, dimname::Ptr{UInt8})

See `libhdf5` documentation for [`H5DSset_scale`](https://portal.hdfgroup.org/display/HDF5/H5DS_SET_SCALE).
"""
function h5ds_set_scale(dsid, dimname)
    var"#status#" = ccall((:H5DSset_scale, libhdf5_hl), herr_t, (hid_t, Ptr{UInt8}), dsid, dimname)
    var"#status#" < 0 && error("Unable to set scale")
    return nothing
end

"""
    h5lt_dtype_to_text(datatype::hid_t, str::Ptr{UInt8}, lang_type::Cint, len::Ref{Csize_t})

See `libhdf5` documentation for [`H5LTdtype_to_text`](https://portal.hdfgroup.org/display/HDF5/H5LT_DTYPE_TO_TEXT).
"""
function h5lt_dtype_to_text(datatype, str, lang_type, len)
    var"#status#" = ccall((:H5LTdtype_to_text, libhdf5_hl), herr_t, (hid_t, Ptr{UInt8}, Cint, Ref{Csize_t}), datatype, str, lang_type, len)
    var"#status#" < 0 && error("Error getting datatype text representation")
    return nothing
end

"""
    h5tb_append_records(loc_id::hid_t, dset_name::Ptr{UInt8}, nrecords::hsize_t, type_size::Csize_t, field_offset::Ptr{Csize_t}, field_sizes::Ptr{Csize_t}, data::Ptr{Cvoid})

See `libhdf5` documentation for [`H5TBappend_records`](https://portal.hdfgroup.org/display/HDF5/H5TB_APPEND_RECORDS).
"""
function h5tb_append_records(loc_id, dset_name, nrecords, type_size, field_offset, field_sizes, data)
    var"#status#" = ccall((:H5TBappend_records, libhdf5_hl), herr_t, (hid_t, Ptr{UInt8}, hsize_t, Csize_t, Ptr{Csize_t}, Ptr{Csize_t}, Ptr{Cvoid}), loc_id, dset_name, nrecords, type_size, field_offset, field_sizes, data)
    var"#status#" < 0 && error("Error adding record to table")
    return nothing
end

"""
    h5tb_get_field_info(loc_id::hid_t, table_name::Ptr{UInt8}, field_names::Ptr{Ptr{UInt8}}, field_sizes::Ptr{Csize_t}, field_offsets::Ptr{Csize_t}, type_size::Ptr{Csize_t})

See `libhdf5` documentation for [`H5TBget_field_info`](https://portal.hdfgroup.org/display/HDF5/H5TB_GET_FIELD_INFO).
"""
function h5tb_get_field_info(loc_id, table_name, field_names, field_sizes, field_offsets, type_size)
    var"#status#" = ccall((:H5TBget_field_info, libhdf5_hl), herr_t, (hid_t, Ptr{UInt8}, Ptr{Ptr{UInt8}}, Ptr{Csize_t}, Ptr{Csize_t}, Ptr{Csize_t}), loc_id, table_name, field_names, field_sizes, field_offsets, type_size)
    var"#status#" < 0 && error("Error getting field information")
    return nothing
end

"""
    h5tb_get_table_info(loc_id::hid_t, table_name::Ptr{UInt8}, nfields::Ptr{hsize_t}, nrecords::Ptr{hsize_t})

See `libhdf5` documentation for [`H5TBget_table_info`](https://portal.hdfgroup.org/display/HDF5/H5TB_GET_TABLE_INFO).
"""
function h5tb_get_table_info(loc_id, table_name, nfields, nrecords)
    var"#status#" = ccall((:H5TBget_table_info, libhdf5_hl), herr_t, (hid_t, Ptr{UInt8}, Ptr{hsize_t}, Ptr{hsize_t}), loc_id, table_name, nfields, nrecords)
    var"#status#" < 0 && error("Error getting table information")
    return nothing
end

"""
    h5tb_make_table(table_title::Ptr{UInt8}, loc_id::hid_t, dset_name::Ptr{UInt8}, nfields::hsize_t, nrecords::hsize_t, type_size::Csize_t, field_names::Ptr{Ptr{UInt8}}, field_offset::Ptr{Csize_t}, field_types::Ptr{hid_t}, chunk_size::hsize_t, fill_data::Ptr{Cvoid}, compress::Cint, data::Ptr{Cvoid})

See `libhdf5` documentation for [`H5TBmake_table`](https://portal.hdfgroup.org/display/HDF5/H5TB_MAKE_TABLE).
"""
function h5tb_make_table(table_title, loc_id, dset_name, nfields, nrecords, type_size, field_names, field_offset, field_types, chunk_size, fill_data, compress, data)
    var"#status#" = ccall((:H5TBmake_table, libhdf5_hl), herr_t, (Ptr{UInt8}, hid_t, Ptr{UInt8}, hsize_t, hsize_t, Csize_t, Ptr{Ptr{UInt8}}, Ptr{Csize_t}, Ptr{hid_t}, hsize_t, Ptr{Cvoid}, Cint, Ptr{Cvoid}), table_title, loc_id, dset_name, nfields, nrecords, type_size, field_names, field_offset, field_types, chunk_size, fill_data, compress, data)
    var"#status#" < 0 && error("Error creating and writing dataset to table")
    return nothing
end

"""
    h5tb_read_records(loc_id::hid_t, table_name::Ptr{UInt8}, start::hsize_t, nrecords::hsize_t, type_size::Csize_t, field_offsets::Ptr{Csize_t}, dst_sizes::Ptr{Csize_t}, data::Ptr{Cvoid})

See `libhdf5` documentation for [`H5TBread_records`](https://portal.hdfgroup.org/display/HDF5/H5TB_READ_RECORDS).
"""
function h5tb_read_records(loc_id, table_name, start, nrecords, type_size, field_offsets, dst_sizes, data)
    var"#status#" = ccall((:H5TBread_records, libhdf5_hl), herr_t, (hid_t, Ptr{UInt8}, hsize_t, hsize_t, Csize_t, Ptr{Csize_t}, Ptr{Csize_t}, Ptr{Cvoid}), loc_id, table_name, start, nrecords, type_size, field_offsets, dst_sizes, data)
    var"#status#" < 0 && error("Error reading record from table")
    return nothing
end

"""
    h5tb_read_table(loc_id::hid_t, table_name::Ptr{UInt8}, dst_size::Csize_t, dst_offset::Ptr{Csize_t}, dst_sizes::Ptr{Csize_t}, dst_buf::Ptr{Cvoid})

See `libhdf5` documentation for [`H5TBread_table`](https://portal.hdfgroup.org/display/HDF5/H5TB_READ_TABLE).
"""
function h5tb_read_table(loc_id, table_name, dst_size, dst_offset, dst_sizes, dst_buf)
    var"#status#" = ccall((:H5TBread_table, libhdf5_hl), herr_t, (hid_t, Ptr{UInt8}, Csize_t, Ptr{Csize_t}, Ptr{Csize_t}, Ptr{Cvoid}), loc_id, table_name, dst_size, dst_offset, dst_sizes, dst_buf)
    var"#status#" < 0 && error("Error reading table")
    return nothing
end

"""
    h5tb_write_records(loc_id::hid_t, table_name::Ptr{UInt8}, start::hsize_t, nrecords::hsize_t, type_size::Csize_t, field_offsets::Ptr{UInt8}, field_sizes::Ptr{UInt8}, data::Ptr{Cvoid})

See `libhdf5` documentation for [`H5TBwrite_records`](https://portal.hdfgroup.org/display/HDF5/H5TB_WRITE_RECORDS).
"""
function h5tb_write_records(loc_id, table_name, start, nrecords, type_size, field_offsets, field_sizes, data)
    var"#status#" = ccall((:H5TBwrite_records, libhdf5_hl), herr_t, (hid_t, Ptr{UInt8}, hsize_t, hsize_t, Csize_t, Ptr{UInt8}, Ptr{UInt8}, Ptr{Cvoid}), loc_id, table_name, start, nrecords, type_size, field_offsets, field_sizes, data)
    var"#status#" < 0 && error("Error writing record to table")
    return nothing
end

"""
    h5z_register(filter_class::Ref{H5Z_class_t})

See `libhdf5` documentation for [`H5Zregister`](https://portal.hdfgroup.org/display/HDF5/H5Z_REGISTER).
"""
function h5z_register(filter_class)
    var"#status#" = ccall((:H5Zregister, libhdf5), herr_t, (Ref{H5Z_class_t},), filter_class)
    var"#status#" < 0 && error("Unable to register new filter")
    return nothing
end

