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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>HDF5: Advanced Link Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="hdf5doxy.css" rel="stylesheet" type="text/css">
<!-- <link href="hdf5doxy.css" rel="stylesheet" type="text/css"/>
-->
<script type="text/javascript" src="hdf5_navtree_hacks.js"></script>
</head>
<body>
<div style="background:#FFDDDD;font-size:120%;text-align:center;margin:0;padding:5px">Please, help us to better serve our user community by answering the following short survey: <a href="https://www.hdfgroup.org/website-survey/">https://www.hdfgroup.org/website-survey/</a></div>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="HDFG-logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname"><a href="https://www.hdfgroup.org">HDF5</a>
 <span id="projectnumber">1.15.0.8253ab9</span>
</div>
<div id="projectbrief">API Reference</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group___h5_l_a.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Advanced Link Functions<div class="ingroups"><a class="el" href="group___h5_l.html">Links (H5L)</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Collaboration diagram for Advanced Link Functions:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="group___h5_l_a.png" border="0" usemap="#agroup______h5__l__a" alt=""/></div>
<map name="agroup______h5__l__a" id="agroup______h5__l__a">
<area shape="rect" href="group___h5_l.html" title=" " alt="" coords="5,5,100,31"/>
<area shape="rect" title=" " alt="" coords="148,5,331,31"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga5073a814de9878bad53e1d3c900ea77f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_a.html#ga5073a814de9878bad53e1d3c900ea77f">H5Lregister</a> (const <a class="el" href="struct_h5_l__class__t.html">H5L_class_t</a> *cls)</td></tr>
<tr class="memdesc:ga5073a814de9878bad53e1d3c900ea77f"><td class="mdescLeft"> </td><td class="mdescRight">Registers a user-defined link class or changes behavior of an existing class. <a href="group___h5_l_a.html#ga5073a814de9878bad53e1d3c900ea77f">More...</a><br /></td></tr>
<tr class="separator:ga5073a814de9878bad53e1d3c900ea77f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga01ddc889d27306a96a7cd27b6084a5ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_a.html#ga01ddc889d27306a96a7cd27b6084a5ec">H5Lunregister</a> (<a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48">H5L_type_t</a> id)</td></tr>
<tr class="memdesc:ga01ddc889d27306a96a7cd27b6084a5ec"><td class="mdescLeft"> </td><td class="mdescRight">Unregisters a class of user-defined links. <a href="group___h5_l_a.html#ga01ddc889d27306a96a7cd27b6084a5ec">More...</a><br /></td></tr>
<tr class="separator:ga01ddc889d27306a96a7cd27b6084a5ec"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga02c1cf38efea97d18e5e2f65df3f08a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_h5public_8h.html#aa8f6c28736dbd0f18388c67911d38aca">htri_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_a.html#ga02c1cf38efea97d18e5e2f65df3f08a2">H5Lis_registered</a> (<a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48">H5L_type_t</a> id)</td></tr>
<tr class="memdesc:ga02c1cf38efea97d18e5e2f65df3f08a2"><td class="mdescLeft"> </td><td class="mdescRight">Determines whether a class of user-defined links is registered. <a href="group___h5_l_a.html#ga02c1cf38efea97d18e5e2f65df3f08a2">More...</a><br /></td></tr>
<tr class="separator:ga02c1cf38efea97d18e5e2f65df3f08a2"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga02c1cf38efea97d18e5e2f65df3f08a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga02c1cf38efea97d18e5e2f65df3f08a2">◆ </a></span>H5Lis_registered()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="_h5public_8h.html#aa8f6c28736dbd0f18388c67911d38aca">htri_t</a> H5Lis_registered </td>
<td>(</td>
<td class="paramtype"><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48">H5L_type_t</a> </td>
<td class="paramname"><em>id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines whether a class of user-defined links is registered. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>User-defined link class identifier</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns zero (false), a positive (true) or a negative (failure) value.</dd></dl>
<p><a class="el" href="group___h5_l_a.html#ga02c1cf38efea97d18e5e2f65df3f08a2" title="Determines whether a class of user-defined links is registered.">H5Lis_registered()</a> tests whether a user-defined link class is currently registered, either by the HDF5 library or by the user through the use of <a class="el" href="group___h5_l_a.html#ga5073a814de9878bad53e1d3c900ea77f" title="Registers a user-defined link class or changes behavior of an existing class.">H5Lregister()</a>.</p>
<dl class="section note"><dt>Note</dt><dd>A link class must be registered to create new links of that type or to traverse existing links of that type.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.8.0 </dd></dl>
</div>
</div>
<a id="ga5073a814de9878bad53e1d3c900ea77f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5073a814de9878bad53e1d3c900ea77f">◆ </a></span>H5Lregister()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5Lregister </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="struct_h5_l__class__t.html">H5L_class_t</a> * </td>
<td class="paramname"><em>cls</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Registers a user-defined link class or changes behavior of an existing class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">cls</td><td>Pointer to a buffer containing the struct describing the user-defined link class</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p><a class="el" href="group___h5_l_a.html#ga5073a814de9878bad53e1d3c900ea77f" title="Registers a user-defined link class or changes behavior of an existing class.">H5Lregister()</a> registers a class of user-defined links, or changes the behavior of an existing class.</p>
<p><code>cls</code> is a pointer to a buffer containing a copy of the <a class="el" href="struct_h5_l__class__t.html" title="Link prototype.">H5L_class_t</a> struct. This struct is defined in <a class="el" href="_h5_lpublic_8h.html">H5Lpublic.h</a> as follows: </p><div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"> <span class="keywordtype">int</span> version; </div>
<div class="line"> <a class="code" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48">H5L_type_t</a> id; </div>
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span> *comment; </div>
<div class="line"> <a class="code" href="_h5_ldevelop_8h.html#a35f5eeac9ed28bfcc94d5037cac5af4a">H5L_create_func_t</a> create_func; </div>
<div class="line"> <a class="code" href="_h5_ldevelop_8h.html#a923e0abe07eacf3101ba6e717665edf1">H5L_move_func_t</a> move_func; </div>
<div class="line"> <a class="code" href="_h5_ldevelop_8h.html#a5800df80f7709b30fa99dfc5166468e5">H5L_copy_func_t</a> copy_func; </div>
<div class="line"> <a class="code" href="_h5_ldevelop_8h.html#a7daba3925a1b3b28a1944788d2a88597">H5L_traverse_func_t</a> trav_func; </div>
<div class="line"> <a class="code" href="_h5_ldevelop_8h.html#a4ef5c91e382760e74fb95a480f0773ca">H5L_delete_func_t</a> del_func; </div>
<div class="line"> <a class="code" href="_h5_ldevelop_8h.html#a4ed3f3e89fe170d547cefd7d68549632">H5L_query_func_t</a> query_func; </div>
<div class="line">} <a class="code" href="struct_h5_l__class__t.html">H5L_class_t</a>;</div>
<div class="ttc" id="a_h5_ldevelop_8h_html_a35f5eeac9ed28bfcc94d5037cac5af4a"><div class="ttname"><a href="_h5_ldevelop_8h.html#a35f5eeac9ed28bfcc94d5037cac5af4a">H5L_create_func_t</a></div><div class="ttdeci">herr_t(* H5L_create_func_t)(const char *link_name, hid_t loc_group, const void *lnkdata, size_t lnkdata_size, hid_t lcpl_id)</div><div class="ttdoc">Link creation callback.</div><div class="ttdef"><b>Definition:</b> H5Ldevelop.h:55</div></div>
<div class="ttc" id="a_h5_ldevelop_8h_html_a4ed3f3e89fe170d547cefd7d68549632"><div class="ttname"><a href="_h5_ldevelop_8h.html#a4ed3f3e89fe170d547cefd7d68549632">H5L_query_func_t</a></div><div class="ttdeci">ssize_t(* H5L_query_func_t)(const char *link_name, const void *lnkdata, size_t lnkdata_size, void *buf, size_t buf_size)</div><div class="ttdoc">Callback for querying the link.</div><div class="ttdef"><b>Definition:</b> H5Ldevelop.h:82</div></div>
<div class="ttc" id="a_h5_ldevelop_8h_html_a4ef5c91e382760e74fb95a480f0773ca"><div class="ttname"><a href="_h5_ldevelop_8h.html#a4ef5c91e382760e74fb95a480f0773ca">H5L_delete_func_t</a></div><div class="ttdeci">herr_t(* H5L_delete_func_t)(const char *link_name, hid_t file, const void *lnkdata, size_t lnkdata_size)</div><div class="ttdoc">Callback for link deletion.</div><div class="ttdef"><b>Definition:</b> H5Ldevelop.h:75</div></div>
<div class="ttc" id="a_h5_ldevelop_8h_html_a5800df80f7709b30fa99dfc5166468e5"><div class="ttname"><a href="_h5_ldevelop_8h.html#a5800df80f7709b30fa99dfc5166468e5">H5L_copy_func_t</a></div><div class="ttdeci">herr_t(* H5L_copy_func_t)(const char *new_name, hid_t new_loc, const void *lnkdata, size_t lnkdata_size)</div><div class="ttdoc">Callback for link copy.</div><div class="ttdef"><b>Definition:</b> H5Ldevelop.h:65</div></div>
<div class="ttc" id="a_h5_ldevelop_8h_html_a7daba3925a1b3b28a1944788d2a88597"><div class="ttname"><a href="_h5_ldevelop_8h.html#a7daba3925a1b3b28a1944788d2a88597">H5L_traverse_func_t</a></div><div class="ttdeci">hid_t(* H5L_traverse_func_t)(const char *link_name, hid_t cur_group, const void *lnkdata, size_t lnkdata_size, hid_t lapl_id, hid_t dxpl_id)</div><div class="ttdoc">Callback during link traversal.</div><div class="ttdef"><b>Definition:</b> H5Ldevelop.h:70</div></div>
<div class="ttc" id="a_h5_ldevelop_8h_html_a923e0abe07eacf3101ba6e717665edf1"><div class="ttname"><a href="_h5_ldevelop_8h.html#a923e0abe07eacf3101ba6e717665edf1">H5L_move_func_t</a></div><div class="ttdeci">herr_t(* H5L_move_func_t)(const char *new_name, hid_t new_loc, const void *lnkdata, size_t lnkdata_size)</div><div class="ttdoc">Callback for link move.</div><div class="ttdef"><b>Definition:</b> H5Ldevelop.h:60</div></div>
<div class="ttc" id="a_h5_lpublic_8h_html_a1e3c5d37c60e7a59b0179e26a4094a48"><div class="ttname"><a href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48">H5L_type_t</a></div><div class="ttdeci">H5L_type_t</div><div class="ttdoc">Link class types.</div><div class="ttdef"><b>Definition:</b> H5Lpublic.h:63</div></div>
<div class="ttc" id="astruct_h5_l__class__t_html"><div class="ttname"><a href="struct_h5_l__class__t.html">H5L_class_t</a></div><div class="ttdoc">Link prototype.</div><div class="ttdef"><b>Definition:</b> H5Ldevelop.h:93</div></div>
</div><!-- fragment --><p> The class definition passed with <code>cls</code> must include at least the following: </p><ul>
<li>An <a class="el" href="struct_h5_l__class__t.html" title="Link prototype.">H5L_class_t</a> version (which should be <a class="el" href="_h5_ldevelop_8h.html#ac4ef431ffac7939c7d37a2e55e49cd63" title="Current version of the H5L_class_t struct.">H5L_LINK_CLASS_T_VERS</a>) </li>
<li>A link class identifier, <code>class_id</code> </li>
<li>A traversal function, <code>trav_func</code> </li>
</ul>
<p>Remaining <code>struct</code> members are optional and may be passed as NULL.</p>
<p>The link class passed in <code>class_id</code> must be in the user-definable range between <a class="el" href="_h5_lpublic_8h.html#afd6fe1db1c142b14a7f879b8d277aa3f" title="Link ids at or above this value are "user-defined" link types.">H5L_TYPE_UD_MIN</a> and <a class="el" href="_h5_lpublic_8h.html#a6f9109ae61b6bd1b6668237cce13c75f" title="Maximum link id value for "user-defined" link types.">H5L_TYPE_UD_MAX</a> (see the table below) and will override any existing link class with that identifier.</p>
<p>As distributed, valid values of <code>class_id</code> used in HDF5 include the following (defined in <a class="el" href="_h5_lpublic_8h.html">H5Lpublic.h</a>): </p><table class="doxtable">
<tr>
<td><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48ab90f13082490fcd293a228b2785489e3">H5L_TYPE_HARD</a></td><td>Hard link</td></tr>
<tr>
<td><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a38eb885df3f43f179b973f576fe996ed">H5L_TYPE_SOFT</a></td><td>Soft link</td></tr>
<tr>
<td><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a1b8b636539eab03587c22735ec84ea06">H5L_TYPE_EXTERNAL</a></td><td>External link</td></tr>
<tr>
<td><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a4a582d434de3ee2c583384c4d3a3273d">H5L_TYPE_ERROR</a></td><td>Error</td></tr>
</table>
<p>The hard and soft link class identifiers cannot be modified or reassigned, but the external link class is implemented as an example in the user-definable link class identifier range. <a class="el" href="group___h5_l_a.html#ga5073a814de9878bad53e1d3c900ea77f" title="Registers a user-defined link class or changes behavior of an existing class.">H5Lregister()</a> is used to register additional link classes. It could also be used to modify the behavior of the external link class, though that is not recommended.</p>
<p>The following table summarizes existing link types and values and the reserved and user-definable link class identifier value ranges. </p><table class="doxtable">
<tr>
<th>Link class identifier or Value range </th><th>Description </th><th>Link class or label </th></tr>
<tr>
<td>0 to 63 </td><td>Reserved range </td><td></td></tr>
<tr>
<td>64 to 255 </td><td>User-definable range </td><td></td></tr>
<tr>
<td>64 </td><td>Minimum user-defined value </td><td><a class="el" href="_h5_lpublic_8h.html#afd6fe1db1c142b14a7f879b8d277aa3f" title="Link ids at or above this value are "user-defined" link types.">H5L_TYPE_UD_MIN</a> </td></tr>
<tr>
<td>64 </td><td>External link </td><td><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a1b8b636539eab03587c22735ec84ea06">H5L_TYPE_EXTERNAL</a> </td></tr>
<tr>
<td>255 </td><td>Maximum user-defined value </td><td><a class="el" href="_h5_lpublic_8h.html#a6f9109ae61b6bd1b6668237cce13c75f" title="Maximum link id value for "user-defined" link types.">H5L_TYPE_UD_MAX</a> </td></tr>
<tr>
<td>255 </td><td>Maximum value </td><td><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a810ce4b5dddcd41521557af0273dd5cd">H5L_TYPE_MAX</a> </td></tr>
<tr>
<td>-1 </td><td>Error </td><td><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a4a582d434de3ee2c583384c4d3a3273d">H5L_TYPE_ERROR</a> </td></tr>
</table>
<p>Note that HDF5 internally registers user-defined link classes only by the numeric value of the link class identifier. An application, on the other hand, will generally use a name for a user-defined class, if for no other purpose than as a variable name. Assume, for example, that a complex link type is registered with the link class identifier 73 and that the code includes the following assignment: </p><div class="fragment"><div class="line">H5L_TYPE_COMPLEX_A = 73</div>
</div><!-- fragment --><p> The application can refer to the link class with a term, <code>H5L_TYPE_COMPLEX_A</code>, that conveys meaning to a human reviewing the code, while HDF5 recognizes it by the more cryptic numeric identifier, 73.</p>
<dl class="section attention"><dt>Attention</dt><dd>Important details and considerations include the following: <ul>
<li>If you plan to distribute files or software with a user-defined link class, please contact the Help Desk at The HDF Group to help prevent collisions between <code>class_id</code> values. See below. </li>
<li>As distributed with HDF5, the external link class is implemented as an example of a user-defined link class with <a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a1b8b636539eab03587c22735ec84ea06">H5L_TYPE_EXTERNAL</a> equal to <a class="el" href="_h5_lpublic_8h.html#afd6fe1db1c142b14a7f879b8d277aa3f" title="Link ids at or above this value are "user-defined" link types.">H5L_TYPE_UD_MIN</a>. <code>class_id</code> in the <a class="el" href="struct_h5_l__class__t.html" title="Link prototype.">H5L_class_t</a> <code>struct</code> must not equal <a class="el" href="_h5_lpublic_8h.html#afd6fe1db1c142b14a7f879b8d277aa3f" title="Link ids at or above this value are "user-defined" link types.">H5L_TYPE_UD_MIN</a> unless you intend to overwrite or modify the behavior of external links. </li>
<li><a class="el" href="group___h5_l_a.html#ga5073a814de9878bad53e1d3c900ea77f" title="Registers a user-defined link class or changes behavior of an existing class.">H5Lregister()</a> can be used only with link class identifiers in the user-definable range (see table above). </li>
<li>The hard and soft links defined by the HDF5 library, <a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48ab90f13082490fcd293a228b2785489e3">H5L_TYPE_HARD</a> and <a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a38eb885df3f43f179b973f576fe996ed">H5L_TYPE_SOFT</a>, reside in the reserved range below <a class="el" href="_h5_lpublic_8h.html#afd6fe1db1c142b14a7f879b8d277aa3f" title="Link ids at or above this value are "user-defined" link types.">H5L_TYPE_UD_MIN</a> and cannot be redefined or modified. </li>
<li><a class="el" href="group___h5_l_a.html#ga02c1cf38efea97d18e5e2f65df3f08a2" title="Determines whether a class of user-defined links is registered.">H5Lis_registered()</a> can be used to determine whether a desired link class identifier is available. <em>Note that this function will tell you only whether the link class identifier has been registered with the installed copy of HDF5; it cannot tell you whether the link class has been registered with The HDF Group.</em> </li>
<li><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a810ce4b5dddcd41521557af0273dd5cd">H5L_TYPE_MAX</a> is the maximum allowed value for a link type identifier. </li>
<li><a class="el" href="_h5_lpublic_8h.html#afd6fe1db1c142b14a7f879b8d277aa3f" title="Link ids at or above this value are "user-defined" link types.">H5L_TYPE_UD_MIN</a> equals <a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a1b8b636539eab03587c22735ec84ea06">H5L_TYPE_EXTERNAL</a>. </li>
<li><a class="el" href="_h5_lpublic_8h.html#a6f9109ae61b6bd1b6668237cce13c75f" title="Maximum link id value for "user-defined" link types.">H5L_TYPE_UD_MAX</a> equals <a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a810ce4b5dddcd41521557af0273dd5cd">H5L_TYPE_MAX</a>. </li>
<li><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48a4a582d434de3ee2c583384c4d3a3273d">H5L_TYPE_ERROR</a> indicates that an error has occurred.</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd><b>Registration with The HDF Group:</b><br />
There are sometimes reasons to take a broader approach to registering a user-defined link class than just invoking <a class="el" href="group___h5_l_a.html#ga5073a814de9878bad53e1d3c900ea77f" title="Registers a user-defined link class or changes behavior of an existing class.">H5Lregister()</a>. For example: <ul>
<li>A user-defined link class is intended for use across an organization, among collaborators, or across a community of users. </li>
<li>An application or library overlying HDF5 invokes a user-defined link class that must be shipped with the software. </li>
<li>Files are distributed that make use of a user-defined link class. </li>
<li>Or simply, a specific user-defined link class is thought to be widely useful.</li>
</ul>
In such cases, you are encouraged to register that link class with The HDF Group's Helpdesk. The HDF Group maintains a registry of known user-defined link classes and tracks the selected link class identifiers. This registry is intended to reduce the risk of collisions between <code>class_id</code> values and to help coordinate the use of specialized link classes.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.8.0 </dd></dl>
</div>
</div>
<a id="ga01ddc889d27306a96a7cd27b6084a5ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga01ddc889d27306a96a7cd27b6084a5ec">◆ </a></span>H5Lunregister()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5Lunregister </td>
<td>(</td>
<td class="paramtype"><a class="el" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48">H5L_type_t</a> </td>
<td class="paramname"><em>id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Unregisters a class of user-defined links. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>User-defined link class identifier</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p><a class="el" href="group___h5_l_a.html#ga01ddc889d27306a96a7cd27b6084a5ec" title="Unregisters a class of user-defined links.">H5Lunregister()</a> unregisters a class of user-defined links, preventing them from being traversed, queried, moved, etc.</p>
<dl class="section note"><dt>Note</dt><dd>A link class can be re-registered using <a class="el" href="group___h5_l_a.html#ga5073a814de9878bad53e1d3c900ea77f" title="Registers a user-defined link class or changes behavior of an existing class.">H5Lregister()</a>.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.8.0 </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Sep 6 2023 00:28:34 for HDF5 by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.9.1 </li>
</ul>
</div>
</body>
</html>
|