summaryrefslogtreecommitdiffstats
path: root/doxygen/dox/ReferenceManual.dox
blob: 790092530a9162a56c5b8db36ba01d49742319b1 (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
/** \page RM HDF5 Reference Manual

The functions provided by the HDF5 API are grouped into the following
\Emph{modules}:

<table>
<tr><th>Modules</th></tr>
<tr valign="top">
<td>
<table>
<tr valign="top"><td style="border: none;">
\include{doc} core_menu.md
</td>
</tr>
<tr valign="top"><td style="border: none;">
<!--  High-level library -->
\include{doc} high_level_menu.md
</td>
</tr>
<tr valign="top"><td style="border: none;">
<!--  Fortran library -->
\include{doc} fortran_menu.md
</td>
</tr>
<tr valign="top"><td style="border: none;">
<!--  Java library -->
\include{doc} java_menu.md
</td>
</tr>
<tr>
<td><a href="./deprecated.html">Deprecated functions</a></td>
<td>Functions with \ref ASYNC</td>
<td>\ref api-compat-macros</td>
</tr>
</table>

</td></tr>
<tr><th>Mind the gap</th></tr>
<tr><td>
Follow these simple rules and stay out of trouble:

\li \Bold{Handle discipline:} The HDF5 C-API is rife with handles or
    identifiers, which you typically obtain by creating new HDF5 items, copying
    items, or retrieving facets of items. \Emph{You acquire a handle, you own it!}
    (Colin Powell) In other words, you are responsible for releasing the underlying
    resources via the matching \Code{H5*close()} call, or deal with the consequences
    of resource leakage.
\li \Bold{Closed means closed:} Do not pass identifiers that were previously
    \Code{H5*close()}-d to other API functions! It will generate an error.
\li \Bold{Dynamic memory allocation:} The API contains a few functions in which the
    HDF5 library dynamically allocates memory on the caller's behalf. The caller owns
    this memory and eventually must free it by calling H5free_memory(). (\Bold{Not}
    the `free` function \Emph{du jour}!)
\li \Bold{Be careful with that saw:} Do not modify the underlying collection when an
    iteration is in progress!
\li \Bold{Use of locations:} Certain API functions, typically called \Code{H5***_by_name}
    use a combination of identifiers and path names to refer to HDF5 objects.
    If the identifier fully specifies the object in question, pass \Code{'.'} (a dot)
    for the name!

Break a leg!
</td>
</tr>
</table>

\cpp_c_api_note

\par Don't like what you see? - You can help to improve this Reference Manual
     Complete the survey linked near the top of this page!\n
     We treat documentation like code: Fork the
     <a href="https://github.com/HDFGroup/hdf5">HDF5 repo</a>, make changes, and create a
     <a href="https://github.com/HDFGroup/hdf5/pulls">pull request</a> !\n
     See the \ref RMT for general guidance.

*/