summaryrefslogtreecommitdiffstats
path: root/examples/Attributes.txt
blob: 76f2aae8cd147011831e83a993d201b7d131bc75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
Attribute Examples: 

H5Acreate2 example: Show how to create an attribute for a dataset and a group
----------------
{
    hid_t file;
    hid_t group;
    hid_t dataset;
    hid_t attr;
    hid_t dataspace;
    int32 attr_data;
    int rank;
    size_t dimsf[2];

    /* Open the file */
    file=H5Fopen("example.h5", H5F_ACC_RDWR, H5P_DEFAULT);

    /* Describe the size of the array and create the data space */
    rank=2;
    dimsf[0] = H5S_UNLIMITED;
    dimsf[1] = H5S_UNLIMITED;
    dataspace = H5Screate_simple(rank, dimsf, NULL); 

    /* Create a dataset */
    dataset = H5Dcreate(file, "Dataset1", H5T_UINT8, dataspace, H5P_DEFAULT);

    <Write data to first dataset>

    /* Create an attribute for the dataset */
    attr = H5Acreate2(dataset, ".", "Attr1", H5T_INT32, H5S_SCALAR, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);

    /* Write attribute information */
    H5Awrite(attr, H5T_INT32, &attr_data);

    /* Close attribute */
    H5Aclose(attr);

    /* Close dataset */
    H5Dclose(dataset);

    /* Create a group */
    group = H5Gcreate2(file, "/Group One", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);

    /* Create an attribute for the dataset */
    attr = H5Acreate2(group, ".", "Attr1", H5T_INT32, H5S_SCALAR, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);

    /* Write attribute information */
    H5Awrite(attr, H5T_INT32, &attr_data);

    /* Close attribute */
    H5Aclose(attr);

    /* Close the group */
    H5Gclose(group);

    /* Close file */
    H5Fclose(file);
}


H5Aiterate example: Print all the names of attributes of a dataset, without
                        any buffers.
---------------------

herr_t print_names (hid_t loc_id, const char *name, void *opdata)
{
    puts (name);
    return 0;
}

{
    H5Aiterate (dataset_or_group_id, NULL, print_names, NULL);
}


H5Aread Example: Attach to an attribute of a dataset and read in attr. data
----------------
{
    hid_t file;
    hid_t dataset;
    hid_t attr;
    int32 attr_data;

    /* Open the file */
    file=H5Fopen("example.h5", H5F_ACC_RDWR, H5P_DEFAULT);

    /* Open the dataset */
    dataset=H5Dopen(file,"Dataset1");

    /* Get the OID of the attribute */
    attr=H5Aopen(dataset, ".", "Attr1", H5P_DEFAULT, H5P_DEFAULT);

    /* Read attribute */
    H5Aread(attr,H5T_INT32,attr_data);

    /* Close attribute dataset */
    H5Aclose(attr);

    /* Close first dataset */
    H5Dclose(dataset);

    /* Close file */
    H5Fclose(file);
}

H5Alink Example: Shows how to share an attribute between two datasets.
----------------
{
    hid_t file;
    hid_t dataset1, dataset2;
    hid_t attr;

    /* Open the file */
    file=H5Fopen("example.h5", H5F_ACC_RDWR, H5P_DEFAULT);

    /* Open the first dataset */
    dataset1=H5Dopen(file, "Dataset1");

    /* Open the first dataset */
    dataset2=H5Dopen(file, "Dataset2");

    /* Get the OID of the attribute */
    attr=H5Aopen(dataset1, ".", "Foo", H5P_DEFAULT, H5P_DEFAULT);

    /* 
     * Create an attribute in the second dataset to the attribute in dataset1,
     * changing the name of the attribute information in dataset2.
     */
    H5Alink(dataset2, attr, "Bar");

    /* Close attribute dataset */
    H5Aclose(attr);

    /* Close datasets */
    H5Dclose(dataset1);
    H5Dclose(dataset2);

    /* Close file */
    H5Fclose(file);
}