ГОСТ Р ИСОГГС 10303-26—2015
Следующая функция показывает, как отобразить EXPRESS-схему на группу HDF5. Входными параметрами
данной функции являются: идентификатор файла HDF5: имя создаваемой группы HDF5; имя EXPRESS-схемы.
Последний параметр — ’ggroupjd’ является выходным параметром, который содержит идентификатор новой
создаваемой группы HDF5. Правила, использованные для реализации данного отображения, описаны в 6.5.
♦include
♦include
♦include
<strir.g.h>
"hdf5.h"
"examples.h"
herr_t create_schema_group(hid_t file_id, char *group_namef
char *schema_name, hid_t *ggroup_id)
<
herr_t rstat;
hid_t group_id;
hid_t attr_id;
hid_t string_tid;
hid_t scalar_tid;
rstac - -1;
*ggroup_id - -1;
group_id H5Gcreate<file_id, group_r.ame, H5P_D£FAULT, H5P_DEFAULT,
H5P_DEFAULT);
if<group_id > 0) |
*agroup_id - group_id;
string_tid - H5Tcopy(H5T_C_S1
) ;
H5Tset_size(strir.g_tid, strlen <schema_name)+1);
scalar_cid - H5Screate<H5S_SCALAR);
attr_id - H5Acreate (group_id, "iso_10303_26_schema", string_tid,
scalar_tid, H5P_DEFAULT, H5P_DEFAULT) ;
rstat - H5Awrite <attr_id,string_tid, 3chema_r.ame);
)
return(rstat);
I
Следующий фрагмент текста представляет распечатку результирующего файла HDF5, полученного после
выполнения представленной выше функции. Результирующий текстовый файл создан утилитой распечатки HDF5
(HDF5 dump). Он структурирован в соответствии с синтаксисом языка определения данных HDF5 (DDL).
HDF5 "example.h5" {
GROUP "/" (
GROUP "Geometry_encoding" (
ATTRIBUTE "iao_10303_26_schema" (
DATATYPE H5T_STRING {
STRSI2E 16;
STRPAD H5T_STR_KULLTKRM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
I
DATASPACE SCALAR
DATA (
(0): "Geometry_schema"
)
)
}
)
C.3 Представление содержимого данных, определенных на языке EXPRESS, в HDF5
Следующая функция демонстрирует создание группы HDF5. содержащей данные, определенные на языке
EXPRESS, из приведенной выше контекстной схемы. Правила, применяемые для выполнения данного отобра
жения. описаны в 6.3.3.
Необходимо учесть, что глобальная переменная ■defined_entity_names‘ инициализирована в главной про-
26