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
|
<!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: About</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.b166368</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('_about.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="PageDoc"><div class="header">
<div class="headertitle">
<div class="title">About </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="about_history"></a>
History</h1>
<p>The implementation of this documentation set is based on the fantastic work of the <a href="https://eigen.tuxfamily.org/index.php?title=Main_Page">Eigen project</a>. Please refer to their <a href="https://gitlab.com/libeigen/eigen">GitLab repository</a> and the online version of their <a href="http://eigen.tuxfamily.org/dox/">Doxygen-based documentation</a>. Not only does Eigen set a standard as a piece of software, but also as an example of <em>documentation done right</em>.</p>
<h1><a class="anchor" id="about_documentation"></a>
Documentation about Documentation</h1>
<p>In this section, we describe common documentation maintenance tasks.</p>
<h2><a class="anchor" id="plain_html"></a>
Including Plain HTML Pages</h2>
<p>The most common use case for this is the inclusion of older documentation. New documentation should, whenever possible, be created using Doxygen markdown!</p>
<p>Use Doxygen's <a href="https://www.doxygen.nl/manual/commands.html#cmdhtmlinclude"><code>htmlinclude</code></a> special command to include existing plain HTML pages.</p>
<p>An example from this documentation set can be seen <a href="https://github.com/HDFGroup/hdf5/blob/develop/doxygen/dox/FileFormatSpec.dox">here</a>.</p>
<h2><a class="anchor" id="new_rm_entry"></a>
Creating a New Reference Manual Entry</h2>
<p>Please refer to the <a class="el" href="_r_m_t.html">Reference Manual (RM) Page Template</a> for guidance on how to create a new reference manual entry.</p>
<h3><a class="anchor" id="new_example"></a>
Adding and Referencing API Examples</h3>
<p>For each HDF5 module, such as <code>H5F</code>, there is an examples source file called <code>H5*_examples.c</code>. For example, the <code>H5F</code> API examples are located in <a href="https://github.com/HDFGroup/hdf5/blob/develop/doxygen/examples/H5F_examples.c"><code>H5F_examples.c</code></a>. Examples are code blocks marked as Doxygen <a href="https://www.doxygen.nl/manual/commands.html#cmdsnippet">snippets</a>. For example, the source code for the <a class="el" href="group___h5_f.html#gae64b51ee9ac0781bc4ccc599d98387f4" title="Creates an HDF5 file.">H5Fcreate()</a> API sample is located between the </p><pre class="fragment">//! <!-- [create] -->
...
//! <!-- [create] -->
</pre><p> comments in <a href="https://github.com/HDFGroup/hdf5/blob/develop/doxygen/examples/H5F_examples.c"><code>H5F_examples.c</code></a>.</p>
<p>Add a new API example by adding a new code block enclosed between matching snippet tags. The name of the tag is usually the function name stripped of the module prefix.</p>
<p>The inclusion of such a block of code can then be triggered via Doxygen's <a href="https://www.doxygen.nl/manual/commands.html#cmdsnippet"><code>snippet</code></a> special command. For example, the following markup </p><pre class="fragment">* \snippet H5F_examples.c create
</pre><p> yields </p><div class="fragment"><div class="line"> {</div>
<div class="line"> __label__ fail_fapl, fail_fcpl, fail_file;</div>
<div class="line"> <a class="code" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> fcpl, fapl, file;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> ((fcpl = <a class="code" href="group___p_l_c_r.html#gaf1b11da01d4d45d788c45f8bc5f0cbfa">H5Pcreate</a>(<a class="code" href="_h5_ppublic_8h.html#a206f334f1e6c973e1215a3148b45b977">H5P_FILE_CREATE</a>)) == <a class="code" href="_h5_ipublic_8h.html#a01eab13dccc91afd6909d74dccb780ba">H5I_INVALID_HID</a>) {</div>
<div class="line"> ret_val = EXIT_FAILURE;</div>
<div class="line"> <span class="keywordflow">goto</span> fail_fcpl;</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> <span class="comment">// adjust the file creation properties</span></div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> ((fapl = <a class="code" href="group___p_l_c_r.html#gaf1b11da01d4d45d788c45f8bc5f0cbfa">H5Pcreate</a>(<a class="code" href="_h5_ppublic_8h.html#a60ec2d4334addfc0eda89614598ee38e">H5P_FILE_ACCESS</a>)) == <a class="code" href="_h5_ipublic_8h.html#a01eab13dccc91afd6909d74dccb780ba">H5I_INVALID_HID</a>) {</div>
<div class="line"> ret_val = EXIT_FAILURE;</div>
<div class="line"> <span class="keywordflow">goto</span> fail_fapl;</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> <span class="comment">// adjust the file access properties</span></div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">unsigned</span> mode = <a class="code" href="_h5_fpublic_8h.html#a7a47250dc1435705233dca7297ba3d90">H5F_ACC_EXCL</a>;</div>
<div class="line"> <span class="keywordtype">char</span> name[] = <span class="stringliteral">"f1.h5"</span>;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> ((file = <a class="code" href="group___h5_f.html#gae64b51ee9ac0781bc4ccc599d98387f4">H5Fcreate</a>(name, mode, fcpl, fapl)) == <a class="code" href="_h5_ipublic_8h.html#a01eab13dccc91afd6909d74dccb780ba">H5I_INVALID_HID</a>) {</div>
<div class="line"> ret_val = EXIT_FAILURE;</div>
<div class="line"> <span class="keywordflow">goto</span> fail_file;</div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// do something useful with FILE</span></div>
<div class="line"> </div>
<div class="line"> <a class="code" href="group___h5_f.html#gac55cd91d80822e4f8c2a7f04ea71b124">H5Fclose</a>(file);</div>
<div class="line">fail_file:</div>
<div class="line"> <a class="code" href="group___p_l_c_r.html#ga5dce61149211d3ef319452aa598887fb">H5Pclose</a>(fapl);</div>
<div class="line">fail_fapl:</div>
<div class="line"> <a class="code" href="group___p_l_c_r.html#ga5dce61149211d3ef319452aa598887fb">H5Pclose</a>(fcpl);</div>
<div class="line">fail_fcpl:;</div>
<div class="line"> }</div>
<div class="ttc" id="a_h5_fpublic_8h_html_a7a47250dc1435705233dca7297ba3d90"><div class="ttname"><a href="_h5_fpublic_8h.html#a7a47250dc1435705233dca7297ba3d90">H5F_ACC_EXCL</a></div><div class="ttdeci">#define H5F_ACC_EXCL</div><div class="ttdef"><b>Definition:</b> H5Fpublic.h:51</div></div>
<div class="ttc" id="a_h5_ipublic_8h_html_a0045db7ff9c22ad35db6ae91662e1943"><div class="ttname"><a href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a></div><div class="ttdeci">int64_t hid_t</div><div class="ttdef"><b>Definition:</b> H5Ipublic.h:60</div></div>
<div class="ttc" id="a_h5_ipublic_8h_html_a01eab13dccc91afd6909d74dccb780ba"><div class="ttname"><a href="_h5_ipublic_8h.html#a01eab13dccc91afd6909d74dccb780ba">H5I_INVALID_HID</a></div><div class="ttdeci">#define H5I_INVALID_HID</div><div class="ttdef"><b>Definition:</b> H5Ipublic.h:75</div></div>
<div class="ttc" id="a_h5_ppublic_8h_html_a206f334f1e6c973e1215a3148b45b977"><div class="ttname"><a href="_h5_ppublic_8h.html#a206f334f1e6c973e1215a3148b45b977">H5P_FILE_CREATE</a></div><div class="ttdeci">#define H5P_FILE_CREATE</div><div class="ttdef"><b>Definition:</b> H5Ppublic.h:51</div></div>
<div class="ttc" id="a_h5_ppublic_8h_html_a60ec2d4334addfc0eda89614598ee38e"><div class="ttname"><a href="_h5_ppublic_8h.html#a60ec2d4334addfc0eda89614598ee38e">H5P_FILE_ACCESS</a></div><div class="ttdeci">#define H5P_FILE_ACCESS</div><div class="ttdef"><b>Definition:</b> H5Ppublic.h:52</div></div>
<div class="ttc" id="agroup___h5_f_html_gac55cd91d80822e4f8c2a7f04ea71b124"><div class="ttname"><a href="group___h5_f.html#gac55cd91d80822e4f8c2a7f04ea71b124">H5Fclose</a></div><div class="ttdeci">herr_t H5Fclose(hid_t file_id)</div><div class="ttdoc">Terminates access to an HDF5 file.</div></div>
<div class="ttc" id="agroup___h5_f_html_gae64b51ee9ac0781bc4ccc599d98387f4"><div class="ttname"><a href="group___h5_f.html#gae64b51ee9ac0781bc4ccc599d98387f4">H5Fcreate</a></div><div class="ttdeci">hid_t H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id)</div><div class="ttdoc">Creates an HDF5 file.</div></div>
<div class="ttc" id="agroup___p_l_c_r_html_ga5dce61149211d3ef319452aa598887fb"><div class="ttname"><a href="group___p_l_c_r.html#ga5dce61149211d3ef319452aa598887fb">H5Pclose</a></div><div class="ttdeci">herr_t H5Pclose(hid_t plist_id)</div><div class="ttdoc">Terminates access to a property list.</div></div>
<div class="ttc" id="agroup___p_l_c_r_html_gaf1b11da01d4d45d788c45f8bc5f0cbfa"><div class="ttname"><a href="group___p_l_c_r.html#gaf1b11da01d4d45d788c45f8bc5f0cbfa">H5Pcreate</a></div><div class="ttdeci">hid_t H5Pcreate(hid_t cls_id)</div><div class="ttdoc">Creates a new property list as an instance of a property list class.</div></div>
</div><!-- fragment --> <h3><a class="anchor" id="api_macro"></a>
Adding an API Macro</h3>
<p>API macros are handled by the <code>api_vers_2, api_vers_3, api_vers_4</code> custom commands. The numbers indicate the number of potential API function mappings. For example, <a class="el" href="group___h5_a.html#ga4a76e4e5ab6eb0fd2aa7990d38d55f24">H5Acreate()</a> has two potential mappings, <a class="el" href="group___h5_a.html#gaa30f5f6c277d6c46f8aa31e89cdba085" title="Creates an attribute attached to a specified object.">H5Acreate1()</a> and <a class="el" href="group___h5_a.html#ga4f4e5248c09f689633079ed8afc0b308" title="Creates an attribute attached to a specified object.">H5Acreate2()</a>. To trigger the creation of a reference manual entry for <a class="el" href="group___h5_a.html#ga4a76e4e5ab6eb0fd2aa7990d38d55f24">H5Acreate()</a> use the following markup: </p><pre class="fragment">\api_vers_2{H5Acreate,H5Acreate1,H5Acreate2}
</pre><p> This yields:</p>
<p><a class="el" href="group___h5_a.html#ga4a76e4e5ab6eb0fd2aa7990d38d55f24">H5Acreate()</a> is a macro that is mapped to either <a class="el" href="group___h5_a.html#gaa30f5f6c277d6c46f8aa31e89cdba085" title="Creates an attribute attached to a specified object.">H5Acreate1()</a> or <a class="el" href="group___h5_a.html#ga4f4e5248c09f689633079ed8afc0b308" title="Creates an attribute attached to a specified object.">H5Acreate2()</a>.<br />
</p><dl class="section see"><dt>See also</dt><dd><a class="el" href="api-compat-macros.html">API Compatibility Macros</a></dd></dl>
<h2><a class="anchor" id="custom_commands"></a>
Creating Custom Commands</h2>
<p>See Doxygen's <a href="https://www.doxygen.nl/manual/custcmd.html">Custom Commands documentation</a> as a general reference.</p>
<p>All custom commands for this project are located in the <a href="https://github.com/HDFGroup/hdf5/blob/develop/doxygen/aliases"><code>aliases</code></a> file in the <a href="https://github.com/HDFGroup/hdf5/tree/develop/doxygen"><code>doxygen</code></a> subdirectory of the <a href="https://github.com/HDFGroup/hdf5">main HDF5 repo</a>.</p>
<p>The custom commands are grouped in sections. Find a suitable section for your command or ask for help if unsure!</p>
<h2><a class="anchor" id="new_rfc"></a>
Adding a New RFC or Referencing an Existing RFC</h2>
<p>For ease of reference, we define custom commands for each RFC in the <code>RFCs</code> section of the <a href="https://github.com/HDFGroup/hdf5/blob/develop/doxygen/aliases"><code>aliases</code></a> file. For example the custom command <code>ref_rfc20141210</code> can be used to insert a reference to "RFC: Virtual Object Layer". In other words, the markup </p><pre class="fragment">\ref_rfc20141210
</pre><p> yields a clickable link:</p>
<p><a href="https://docs.hdfgroup.org/hdf5/rfc/HDF5-VDS-requirements-use-cases-2014-12-10.pdf">HDF5 Virtual Dataset</a></p>
<p>To add a new RFC, add a custom command for the RFC to the <a href="https://github.com/HDFGroup/hdf5/blob/develop/doxygen/aliases"><code>aliases</code></a> file. The naming convention for the custom command is <code>ref_rfcYYYYMMDD</code>, where <code>YYYYMMDD</code> is the ID of the RFC. The URL is composed of the prefix </p><pre class="fragment">https://docs.hdfgroup.org/hdf5/rfc/
</pre><p> and the name of your RFC file, typically, a PDF file, i.e., the full URL would be </p><pre class="fragment">https://docs.hdfgroup.org/hdf5/rfc/my_great_rfc_name.pdf
</pre><h2><a class="anchor" id="hosting"></a>
How Do Updates and Changes Get Published?</h2>
<p>Currently, the files underlying this documentation website are stored in an bucket on AWS S3. The top-level bucket is </p><pre>s3://docs.hdfgroup.org/hdf5/</pre><p> There are folders for the <code>development</code> branch and all supported release version.</p>
<p>Talk to your friendly IT-team if you need write access, or you need someone to push an updated version for you! </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated 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>
|