Максимальная длина имени объекта в HDF5?

Я читаю файл HDF5 на Фортране и не знаю имен объектов (групп) априори. Итак, я использую следующий фрагмент кода для извлечения этой информации:

CALL H5Gn_members_f(group_id, groupName, nlinks, error)
do ilink = 0, nlinks-1
  CALL H5Gget_obj_info_idx_f(group_id, groupName, ilink, objName, H5G_GROUP_F, error)
enddo

Вот, я определил

character(len=100) :: objName

с произвольной длиной 100. Однако у меня нет гарантии, что имя объекта составляет 100 символов или меньше. Итак, мой актуальный вопрос:

Существует ли максимальная длина имен объектов в HDF5?


person Eli Lansey    schedule 10.01.2017    source источник
comment
@francescalus Не совсем так. Мой вопрос касается не неопределенного размера строки, хранящейся в наборе данных, а самого имени набора данных.   -  person Eli Lansey    schedule 11.01.2017
comment
Теперь разбираю правильно, спасибо.   -  person francescalus    schedule 11.01.2017


Ответы (1)


В документации HDF5 не указан конкретный максимальный размер, за исключением максимального размера заголовка (заголовок содержит все метаданные об объекте HDF5).

Ограничение составляет 64 КБ, см. вопрос «Существует ли ограничение на заголовок объекта и как это влияет на HDF5?» на https://support.hdfgroup.org/HDF5/faq/limits.html

Таким образом, максимальная длина имени в принципе равна примерно этому значению.

Вы можете указать большую максимальную длину по умолчанию, как вы это сделали, и выполнить некоторую проверку ошибок. Я проверю исходный код HDF5, чтобы увидеть, есть ли определенные ограничения.

РЕДАКТИРОВАТЬ: функция H5Gget_obj_info_idx_f усекает имя до длины передаваемой символьной переменной. Впоследствии вы можете проверить с помощью обычного запроса имени, что имя допустимо.

РЕДАКТИРОВАТЬ 2: это сообщение списка рассылки от человека, работающего с группой HDF, подтверждает это по состоянию на 2010 год. 003662.html" rel="nofollow noreferrer">https://lists.hdfgroup.org/pipermail/hdf-forum_lists.hdfgroup.org/2010-September/003662.html

person Pierre de Buyl    schedule 10.01.2017