summaryrefslogtreecommitdiffstats
path: root/doxygen/dox
diff options
context:
space:
mode:
Diffstat (limited to 'doxygen/dox')
-rw-r--r--doxygen/dox/APIVersions.dox173
-rw-r--r--doxygen/dox/About.dox12
-rw-r--r--doxygen/dox/Cookbook.dox14
-rw-r--r--doxygen/dox/H5Acreate.dox9
-rw-r--r--doxygen/dox/H5Aiterate.dox9
-rw-r--r--doxygen/dox/H5Fget_info.dox44
-rw-r--r--doxygen/dox/H5Lget_info.dox17
-rw-r--r--doxygen/dox/H5Lget_info_by_idx.dox17
-rw-r--r--doxygen/dox/H5Literate.dox20
-rw-r--r--doxygen/dox/H5Literate_by_name.dox21
-rw-r--r--doxygen/dox/H5Lvisit.dox20
-rw-r--r--doxygen/dox/H5Lvisit_by_name.dox20
-rw-r--r--doxygen/dox/H5Oget_info.dox72
-rw-r--r--doxygen/dox/H5Oget_info_by_idx.dox55
-rw-r--r--doxygen/dox/H5Oget_info_by_name.dox58
-rw-r--r--doxygen/dox/H5Ovisit.dox55
-rw-r--r--doxygen/dox/H5Ovisit_by_name.dox54
-rw-r--r--doxygen/dox/H5Sencode.dox5
-rw-r--r--doxygen/dox/RFC.dox91
-rw-r--r--doxygen/dox/ReferenceManual.dox114
-rw-r--r--doxygen/dox/cookbook/Accessibility.c48
-rw-r--r--doxygen/dox/cookbook/Accessibility.dox39
-rw-r--r--doxygen/dox/cookbook/Attributes.c61
-rw-r--r--doxygen/dox/cookbook/Attributes.dox38
-rw-r--r--doxygen/dox/cookbook/Files.c87
-rw-r--r--doxygen/dox/cookbook/Files.dox71
-rw-r--r--doxygen/dox/cookbook/Performance.dox21
-rw-r--r--doxygen/dox/maybe_metadata_reads.dox68
-rw-r--r--doxygen/dox/rm-template.dox171
29 files changed, 852 insertions, 632 deletions
diff --git a/doxygen/dox/APIVersions.dox b/doxygen/dox/APIVersions.dox
new file mode 100644
index 0000000..3658f06
--- /dev/null
+++ b/doxygen/dox/APIVersions.dox
@@ -0,0 +1,173 @@
+/**
+ * \ingroup H5A
+ * \def H5Acreate
+ * \api_vers_2{H5Acreate,H5Acreate1,H5Acreate2}
+ */
+
+/**
+ * \ingroup H5A
+ * \def H5Aiterate
+ * \api_vers_2{H5Aiterate,H5Aiterate1,H5Aiterate2}
+ */
+
+/**
+ * \ingroup H5D
+ * \def H5Dcreate
+ * \api_vers_2{H5Dcreate,H5Dcreate1,H5Dcreate2}
+ */
+
+/**
+ * \ingroup H5E
+ * \def H5Eget_auto
+ * \api_vers_2{H5Eget_auto,H5Eget_auto1,H5Eget_auto2}
+ */
+
+/**
+ * \ingroup H5E
+ * \def H5Eprint
+ * \api_vers_2{H5Eprint,H5Eprint1,H5Eprint2}
+ */
+
+/**
+ * \ingroup H5E
+ * \def H5Epush
+ * \api_vers_2{H5Epush,H5Epush1,H5Epush2}
+ */
+
+/**
+ * \ingroup H5E
+ * \def H5Eset_auto
+ * \api_vers_2{H5Eset_auto,H5Eset_auto1,H5Eset_auto2}
+ */
+
+/**
+ * \ingroup H5E
+ * \def H5Ewalk
+ * \api_vers_2{H5Ewalk,H5Ewalk1,H5Ewalk2}
+ */
+
+/**
+ * \ingroup H5F
+ * \def H5Fget_info
+ * \api_vers_2{H5Fget_info,H5Fget_info1,H5Fget_info2}
+ */
+
+/**
+ * \ingroup H5G
+ * \def H5Gcreate
+ * \api_vers_2{H5Gcreate,H5Gcreate1,H5Gcreate2}
+ */
+
+/**
+ * \ingroup H5G
+ * \def H5Gopen
+ * \api_vers_2{H5Gopen,H5Gopen1,H5Gopen2}
+ */
+
+/**
+ * \ingroup H5L
+ * \def H5Lget_info
+ * \api_vers_2{H5Lget_info,H5Lget_info1,H5Lget_info2}
+ */
+
+/**
+ * \ingroup H5L
+ * \def H5Lget_info_by_idx
+ * \api_vers_2{H5Lget_info_by_idx,H5Lget_info_by_idx1,H5Lget_info_by_idx2}
+ */
+
+/**
+ * \ingroup TRAV
+ * \def H5Literate
+ * \api_vers_2{H5Literate,H5Literate1,H5Literate2}
+ */
+
+/**
+ * \ingroup TRAV
+ * \def H5Literate_by_name
+ * \api_vers_2{H5Literate_by_name,H5Literate_by_name1,H5Literate_by_name2}
+ */
+
+/**
+ * \ingroup TRAV
+ * \def H5Lvisit
+ * \api_vers_2{H5Lvisit,H5Lvisit1,H5Lvisit2}
+ */
+
+/**
+ * \ingroup TRAV
+ * \def H5Lvisit_by_name
+ * \api_vers_2{H5Lvisit_by_name,H5Lvisit_by_name1,H5Lvisit_by_name2}
+ */
+
+/**
+ * \ingroup H5O
+ * \def H5Oget_info
+ * \api_vers_3{H5Oget_info,H5Oget_info1,H5Oget_info2,H5Oget_info3}
+ */
+
+/**
+ * \ingroup H5O
+ * \def H5Oget_info_by_idx
+ * \api_vers_3{H5Oget_info_by_idx,H5Oget_info_by_idx1,H5Oget_info_by_idx2,H5Oget_info_by_idx3}
+ */
+
+/**
+ * \ingroup H5O
+ * \def H5Oget_info_by_name
+ * \api_vers_3{H5Oget_info_by_name,H5Oget_info_by_name1,H5Oget_info_by_name2,H5Oget_info_by_name3}
+ */
+
+/**
+ * \ingroup H5O
+ * \def H5Ovisit
+ * \api_vers_3{H5Ovisit,H5Ovisit1,H5Ovisit2,H5Ovisit3}
+ */
+
+/**
+ * \ingroup H5O
+ * \def H5Ovisit_by_name
+ * \api_vers_3{H5Ovisit_by_name,H5Ovisit_by_name1,H5Ovisit_by_name2,H5Ovisit_by_name3}
+ */
+
+/**
+ * \ingroup H5R
+ * \def H5Rdereference
+ * \api_vers_2{H5Rdereference,H5Rdereference1,H5Rdereference2}
+ */
+
+/**
+ * \ingroup H5R
+ * \def H5Rget_obj_type
+ * \api_vers_3{H5Rget_obj_type,H5Rget_obj_type1,H5Rget_obj_type2,H5R_get_obj_type3}
+ */
+
+/**
+ * \ingroup H5S
+ * \def H5Sencode
+ * \api_vers_2{H5Sencode,H5Sencode1,H5Sencode2}
+ */
+
+/**
+ * \ingroup H5T
+ * \def H5Tcommit
+ * \api_vers_2{H5Tcommit,H5Tcommit1,H5Tcommit2}
+ */
+
+/**
+ * \ingroup H5T
+ * \def H5Topen
+ * \api_vers_2{H5Topen,H5Topen1,H5Topen2}
+ */
+
+/**
+ * \ingroup ARRAY
+ * \def H5Tarray_create
+ * \api_vers_2{H5Tarray_create,H5Tarray_create1,H5Tarray_create2}
+ */
+
+/**
+ * \ingroup ARRAY
+ * \def H5Tget_array_dims
+ * \api_vers_2{H5Tget_array_dims,H5Tget_array_dims1,H5Tget_array_dims2}
+ */
diff --git a/doxygen/dox/About.dox b/doxygen/dox/About.dox
index 3be9202..32930a8 100644
--- a/doxygen/dox/About.dox
+++ b/doxygen/dox/About.dox
@@ -1,5 +1,7 @@
/** \page About About
+\section about_history History
+
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>
@@ -8,4 +10,14 @@ and the online version of their
Not only does Eigen set a standard as a piece of software, but also as an example
of <em>documentation done right</em>.
+\section about_documentation Documentation about Documentation
+
+\li \todo Describe how to add a reference or a new RFC
+\li \todo Describe how to add an example
+\li \todo Describe how to include plain HTML
+\li \todo Describe how to add an API macro
+\li \todo Describe the custom commands
+\li \todo Describe the S3 bucket layout and update routine
+\li \todo Link the RM template
+
*/ \ No newline at end of file
diff --git a/doxygen/dox/Cookbook.dox b/doxygen/dox/Cookbook.dox
index 4abc896..56523e2 100644
--- a/doxygen/dox/Cookbook.dox
+++ b/doxygen/dox/Cookbook.dox
@@ -2,4 +2,18 @@
Healthy, everyday recipes for every taste and budget...
+\ref Files
+\li \ref CB_FreeSpace
+\li \ref CB_RemoveUnusedSpace
+\li \ref CB_UserBlock
+
+\ref Attributes
+\li \ref CB_LargeAttributes
+
+\ref Accessibility
+\li \ref CB_MaintainCompat
+
+\ref Performance
+\li \ref CB_MDCPerf
+
*/ \ No newline at end of file
diff --git a/doxygen/dox/H5Acreate.dox b/doxygen/dox/H5Acreate.dox
deleted file mode 100644
index 18d648f..0000000
--- a/doxygen/dox/H5Acreate.dox
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * \ingroup H5A
- * \def H5Acreate()
- * H5Acreate() is a macro that is mapped to either H5Acreate1() or
- * H5Acreate2().
- *
- *
- * \todo Standardize the way we describe these macros!
- */
diff --git a/doxygen/dox/H5Aiterate.dox b/doxygen/dox/H5Aiterate.dox
deleted file mode 100644
index 46b9bb4..0000000
--- a/doxygen/dox/H5Aiterate.dox
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * \ingroup H5A
- * \def H5Aiterate()
- * H5Aiterate() is a macro that is mapped to either H5Aiterate1() or
- * H5Aiterate2().
- *
- *
- * \todo Standardize the way we describe these macros!
- */
diff --git a/doxygen/dox/H5Fget_info.dox b/doxygen/dox/H5Fget_info.dox
deleted file mode 100644
index 9b02752..0000000
--- a/doxygen/dox/H5Fget_info.dox
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * \ingroup H5F
- * \def H5Fget_info()
- * H5Fget_info() is a macro that is mapped to either H5Fget_info1()
- * or H5Fget_info2(), depending on the needs of the application.
- * Similarly, the macro for the \ref H5F_info_t struct is mapped to either
- * H5F_info1_t or H5F_info2_t.
- *
- * Such macros are provided to facilitate application compatibility.
- * Their use and mappings are fully described in \ref api-compat-macros.
- *
- * When both the HDF5 library and the application are built and installed with
- * no specific compatibility flags, H5Fget_info() is mapped to the most recent
- * version of the function, currently H5Fget_info2(). If the library and/or
- * application is compiled for Release 1.8 emulation, H5Fget_info() will be
- * mapped to H5Fget_info1(). Since there was no H5Fget_info() function in
- * Release 1.6, if the library and/or application is compiled for Release 1.6
- * emulation, H5Fget_info() will be mapped to the most recent version of the
- * function, currently H5Fget_info2(). Function-specific flags are available to
- * override these settings on a function-by-function basis when the application
- * is compiled.
- *
- * Specific compile-time compatibility flags and the resulting
- * mappings are as follows:
- *
- * \Bold{Global settings}\n
- * \li No compatibility flag: H5Fget_info2() and H5F_info2_t
- * \li Enable deprecated symbols: H5Fget_info2() and H5F_info2_t
- * \li Disable deprecated symbols: H5Fget_info2() and H5F_info2_t
- * \li Emulate Release 1.6 interface: H5Fget_info2() and H5F_info2_t
- * \li Emulate Release 1.8 interface: H5Fget_info1() and H5F_info1_t
- *
- * \Bold{Function- and struct-level macros}\n
- * \li \Code{H5Fget_info_vers=2}: H5Fget_info2()
- * \li \Code{H5Fget_info_vers=1}: H5Fget_info1()
- * \li \Code{H5F_info_t_vers=2}: H5F_info2_t
- * \li \Code{H5F_info_t_vers=1}: H5F_info1_t
- *
- * \version 1.10.0 The C function H5Fget_info() and H5F_info_t renamed to
- * H5Fget_info1() and H5F_info1_t, respectively, and deprecated
- * in this release. The C macro #H5Fget_info, the C function
- * H5Fget_info2(), and the struct H5F_info2_t introduced in this
- * release.
- */
diff --git a/doxygen/dox/H5Lget_info.dox b/doxygen/dox/H5Lget_info.dox
deleted file mode 100644
index 2c0971e..0000000
--- a/doxygen/dox/H5Lget_info.dox
+++ /dev/null
@@ -1,17 +0,0 @@
- /**
- * \ingroup LMGT
- * \def H5Lget_info()
- * H5Lget_info() is a macro that is mapped to either H5Lget_info1()
- * or H5Lget_info2() Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in \ref api-compat-macros.
- * If the library and/or application is compiled for Release
- * 1.12 emulation, H5Lget_info() will be mapped to H5Lget_info2() and
- * H5Lget_info1() is deprecated. With earlier versions, H5Lget_info() is mapped to
- * H5Lget_info1(). Specific compile-time compatibility flags and the resulting
- * mappings are as follows:
- * \li No compatibility flag: H5Lget_info2() (using 1.12 source) H5Lget_info1()
- * (using 1.10 or 1.8 source)
- * \li Emulate Release 1.12: H5Lget_info2()
- * \li Emulate Release 1.8 or 1.10 interface: H5Lget_info1()
- *
- */
diff --git a/doxygen/dox/H5Lget_info_by_idx.dox b/doxygen/dox/H5Lget_info_by_idx.dox
deleted file mode 100644
index bf76822..0000000
--- a/doxygen/dox/H5Lget_info_by_idx.dox
+++ /dev/null
@@ -1,17 +0,0 @@
- /**
- * \ingroup LMGT
- * \def H5Lget_info_by_idx()
- * H5Lget_info_by_idx() is a macro that is mapped to either H5Lget_info_by_idx1()
- * or H5Lget_info_by_idx2() Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in \ref api-compat-macros.
- * If the library and/or application is compiled for Release
- * 1.12 emulation, H5Lget_info_by_idx() will be mapped to H5Lget_info_by_idx2() and
- * H5Lget_info_by_idx1() is deprecated. With earlier versions, H5Lget_infoby_idx() is mapped to
- * H5Lget_info_by_idx1(). Specific compile-time compatibility flags and the resulting
- * mappings are as follows:
- * \li No compatibility flag: H5Lget_info_by_idx2() (using 1.12 source) H5Lget_info_by_idx1()
- * (using 1.10 or 1.8 source)
- * \li Emulate Release 1.12: H5Lget_info_by_idx2()
- * \li Emulate Release 1.8 or 1.10 interface: H5Lget_info_by_idx1()
- *
- */
diff --git a/doxygen/dox/H5Literate.dox b/doxygen/dox/H5Literate.dox
deleted file mode 100644
index eaaf2fe..0000000
--- a/doxygen/dox/H5Literate.dox
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * \ingroup TRAV
- * \def H5Literate()
- * H5Literate() is a macro that is mapped to either H5Literate1() or
- * H5Literate2() Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in
- * \ref api-compat-macros. If the library and/or application is
- * compiled for Release 1.12 emulation, H5Literate() will be mapped to
- * H5Literate2() and H5Literate1() is deprecated. With earlier versions,
- * H5Literate() is mapped to H5Literate1(). Specific compile-time compatibility
- * flags and the resulting mappings are as follows:
- * \li No compatibility flag: H5Literate2() (using 1.12 source) H5Literate1()
- * (using 1.10 or 1.8 source)
- * \li Emulate Release 1.12: H5Literate2()
- * \li Emulate Release 1.8 or 1.10 interface: H5Literate1()
- *
- * \version 1.12.0 The function H5Literate() was renamed to H5Literate1() and
- * deprecated in this release. The macro H5Literate() and the
- * function H5Literate2() were introduced in this release.
- */
diff --git a/doxygen/dox/H5Literate_by_name.dox b/doxygen/dox/H5Literate_by_name.dox
deleted file mode 100644
index 5ffd7c6..0000000
--- a/doxygen/dox/H5Literate_by_name.dox
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * \ingroup TRAV
- * \def H5Literate_by_name()
- * H5Literate_by_name() is a macro that is mapped to either
- * H5Literate_by_name1() or H5Literate_by_name2() Such macros are provided to
- * facilitate application compatibility. Their use and mappings are fully
- * described in \ref api-compat-macros. If the library and/or application is
- * compiled for Release 1.12 emulation, H5Literate_by_name() will be mapped to
- * H5Literate_by_name2() and H5Literate_by_name1() is deprecated. With earlier
- * versions, H5Literate_by_name() is mapped to H5Literate_by_name1().
- * Specific compile-time compatibility flags and the resulting mappings are as
- * follows:
- * \li No compatibility flag: H5Literate_by_name2() (using 1.12 source)
- * H5Literate_by_name1() (using 1.10 or 1.8 source)
- * \li Emulate Release 1.12: H5Literate_by_name2()
- * \li Emulate Release 1.8 or 1.10 interface: H5Literate_by_name1()
- *
- * \version 1.12.0 The function H5Literate_by_name() was renamed to H5Literate_by_name1() and
- * deprecated in this release. The macro H5Literate_by_name() and the
- * function H5Literate_by_name2() were introduced in this release.
- */
diff --git a/doxygen/dox/H5Lvisit.dox b/doxygen/dox/H5Lvisit.dox
deleted file mode 100644
index 2dc547f..0000000
--- a/doxygen/dox/H5Lvisit.dox
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * \ingroup TRAV
- * \def H5Lvisit()
- * H5Lvisit() is a macro that is mapped to either H5Lvisit1() or
- * H5Lvisit2() Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in
- * \ref api-compat-macros. If the library and/or application is
- * compiled for Release 1.12 emulation, H5Lvisit() will be mapped to
- * H5Lvisit2() and H5Lvisit1() is deprecated. With earlier versions,
- * H5Lvisit() is mapped to H5Lvisit1(). Specific compile-time compatibility
- * flags and the resulting mappings are as follows:
- * \li No compatibility flag: H5Lvisit2() (using 1.12 source) H5Lvisit1()
- * (using 1.10 or 1.8 source)
- * \li Emulate Release 1.12: H5Lvisit2()
- * \li Emulate Release 1.8 or 1.10 interface: H5Lvisit1()
- *
- * \version 1.12.0 The function H5Lvisit() was renamed to H5Lvisit1() and
- * deprecated in this release. The macro H5Lvisit() and the
- * function H5Lvisit2() were introduced in this release.
- */
diff --git a/doxygen/dox/H5Lvisit_by_name.dox b/doxygen/dox/H5Lvisit_by_name.dox
deleted file mode 100644
index 691787f..0000000
--- a/doxygen/dox/H5Lvisit_by_name.dox
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * \ingroup TRAV
- * \def H5Lvisit_by_name()
- * H5Lvisit_by_name() is a macro that is mapped to either H5Lvisit_by_name1() or
- * H5Lvisit_by_name2() Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in
- * \ref api-compat-macros. If the library and/or application is
- * compiled for Release 1.12 emulation, H5Lvisit_by_name() will be mapped to
- * H5Lvisit_by_name2() and H5Lvisit_by_name1() is deprecated. With earlier versions,
- * H5Lvisit_by_name() is mapped to H5Lvisit_by_name1(). Specific compile-time
- * compatibility flags and the resulting mappings are as follows:
- * \li No compatibility flag: H5Lvisit_by_name2() (using 1.12 source) H5Lvisit_by_name1()
- * (using 1.10 or 1.8 source)
- * \li Emulate Release 1.12: H5Lvisit_by_name2()
- * \li Emulate Release 1.8 or 1.10 interface: H5Lvisit_by_name1()
- *
- * \version 1.12.0 The function H5Lvisit_by_name() was renamed to H5Lvisit_by_name1() and
- * deprecated in this release. The macro H5Lvisit_by_name() and the
- * function H5Lvisit_by_name2() were introduced in this release.
- */
diff --git a/doxygen/dox/H5Oget_info.dox b/doxygen/dox/H5Oget_info.dox
deleted file mode 100644
index ee4cd1c..0000000
--- a/doxygen/dox/H5Oget_info.dox
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * \ingroup H5O
- * \def H5Oget_info
- *
- * #H5Oget_info is a macro that is mapped to:
- * \li #H5Oget_info3
- * \li #H5Oget_info1
- *
- * \details Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in
- * API Compatibility Macros in HDF5; we urge you to read that
- * document closely.
- *
- * In HDF5 versions 1.12 and after, #H5Oget_info is mapped to
- * #H5Oget_info3 and #H5Oget_info1 is deprecated.
- * In version 1.10 #H5Oget_info is identical to #H5Oget_info1.
- *
- * Specific compile-time compatibility flags and the resulting
- * mappings are as follows:
- * \par
- * <table>
- * <tr>
- * <th>Compatibility setting</th>
- * <th>H5Oget_info</th>
- * </tr>
- * <tr>
- * <td>No compatibility flag \n &nbsp;</td>
- * <td>#H5Oget_info3 (in release 1.12) \n
- * #H5Oget_info1 (in 1.8 or 1.10)</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.12</td>
- * <td>#H5Oget_info3</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.10/1.8 interface</td>
- * <td>#H5Oget_info1</td>
- * </tr>
- * </table>
- *
- * \note If you are iterating through a lot of different objects to
- * retrieve information via the #H5Oget_info family of routines,
- * you may see memory building up. This can be due to memory
- * allocation for metadata such as object headers and messages
- * when the iterated objects are put into the metadata cache.
- * \note
- * If the memory buildup is not desirable, you can configure a
- * smaller cache via #H5Fset_mdc_config or set the file access
- * property list via #H5Pset_mdc_config. A smaller sized cache
- * will force metadata entries to be evicted from the cache,
- * thus freeing the memory associated with the entries.
- *
- * \version 1.12.0 The macro #H5Oget_info and the function #H5Oget_info3
- * were added, and #H5Oget_info1 was deprecated.
- * \version 1.10.5 The macro #H5Oget_info was removed. The functions
- * #H5Oget_info1 and #H5Oget_info are identical
- * in this release. This change was added to restore the
- * broken API compatibility introduced in HDF5-1.10.3.
- * \version 1.10.3 The function #H5Oget_info was renamed
- * #H5Oget_info1. The macro #H5Oget_info and the function
- * #H5Oget_info2 were introduced in this release.
- * \version 1.8.15 Added a note about the valid values for the \c version field
- * in the H5O_hdr_info_t structure.
- * \version 1.8.11 Fortran subroutine introduced in this release.
- * \version 1.8.10 Added #H5O_type_t structure to the Description section.
- * Separated H5O_hdr_info_t structure from
- * #H5O_info_t in the Description section. Clarified the
- * definition and implementation of the time fields.
- *
- * \since 1.8.0
- *
- */
diff --git a/doxygen/dox/H5Oget_info_by_idx.dox b/doxygen/dox/H5Oget_info_by_idx.dox
deleted file mode 100644
index 49b8031..0000000
--- a/doxygen/dox/H5Oget_info_by_idx.dox
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * \ingroup H5O
- * \def H5Oget_info_by_idx
- *
- * #H5Oget_info_by_idx is a macro that is mapped to:
- * \li #H5Oget_info_by_idx3
- * \li #H5Oget_info_by_idx1
- *
- * \details Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in
- * API Compatibility Macros in HDF5; we urge you to read that
- * document closely.
- *
- * In HDF5 versions 1.12 and after, #H5Oget_info_by_idx is mapped to
- * #H5Oget_info_by_idx3 and #H5Oget_info_by_idx1 is deprecated.
- * In version 1.10 #H5Oget_info_by_idx is identical to #H5Oget_info_by_idx1.
- *
- * Specific compile-time compatibility flags and the resulting
- * mappings are as follows:
- *
- * \par
- * <table>
- * <tr>
- * <th>Compatibility setting</th>
- * <th>H5Oget_info_by_idx</th>
- * </tr>
- * <tr>
- * <td>No compatibility flag \n &nbsp;</td>
- * <td>#H5Oget_info_by_idx3 for 1.12 \n
- * #H5Oget_info_by_idx1 for 1.8/1.10</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.12</td>
- * <td>#H5Oget_info_by_idx3</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.10/1.8 interface</td>
- * <td>#H5Oget_info_by_idx1</td>
- * </tr>
- * </table>
- *
- * \version 1.12.0 The macro #H5Oget_info_by_idx and function #H5Oget_info_by_idx3 were added,
- * and #H5Oget_info_by_idx1 was deprecated.
- * \version 1.10.5 The macro #H5Oget_info_by_idx was removed. The functions
- * #H5Oget_info_by_idx and #H5Oget_info_by_idx1 are
- * identical in this release. This change was added to restore the
- * broken API compatibility introduced in HDF5-1.10.3.
- * \version 1.10.3 The function #H5Oget_info_by_idx was renamed #H5Oget_info_by_idx1.
- * The macro #H5Oget_info_by_idx and the function #H5Oget_info_by_idx2
- * were introduced in this release.
- * \version 1.8.11 Fortran subroutine introduced in this release.
- *
- * \since 1.8.0
- *
- */
diff --git a/doxygen/dox/H5Oget_info_by_name.dox b/doxygen/dox/H5Oget_info_by_name.dox
deleted file mode 100644
index 18f7d28..0000000
--- a/doxygen/dox/H5Oget_info_by_name.dox
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * \ingroup H5O
- * \def H5Oget_info_by_name
- *
- * #H5Oget_info_by_name is a macro that is mapped to:
- * \li #H5Oget_info_by_name3
- * \li #H5Oget_info_by_name1
- *
- * \details Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in
- * API Compatibility Macros in HDF5; we urge you to read that
- * document closely.
- *
- * In HDF5 versions 1.12 and after, #H5Oget_info_by_name is mapped to
- * #H5Oget_info_by_name3. In version 1.10 #H5Oget_info_by_name is
- * identical to #H5Oget_info_by_name1.
- *
- * Specific compile-time compatibility flags and the resulting
- * mappings are as follows:
- *
- * \par
- * <table>
- * <tr>
- * <th>Compatibility setting</th>
- * <th>H5Oget_info_by_name</th>
- * </tr>
- * <tr>
- * <td>No compatibility flag \n &nbsp;</td>
- * <td>#H5Oget_info_by_name3 for 1.12 and above \n
- * #H5Oget_info_by_name1 for 1.8 or 1.10</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.12</td>
- * <td>#H5Oget_info_by_name3</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.10 or 1.8 interface</td>
- * <td>#H5Oget_info_by_name1</td>
- * </tr>
- * </table>
- *
- * \version 1.12.0 The macro #H5Oget_info_by_name and function
- * #H5Oget_info_by_name3 were added and
- * #H5Oget_info_by_name1 was deprecated.
- * \version 1.10.5 The macro #H5Oget_info_by_name was removed. The functions
- * #H5Oget_info_by_name and #H5Oget_info_by_name1 are
- * identical in this release. This change was added to restore
- * the broken API compatibility introduced in HDF5-1.10.3.
- * \version 1.10.3 The function #H5Oget_info_by_name was renamed
- * to #H5Oget_info_by_name1. The macro #H5Oget_info_by_name
- * and the function #H5Oget_info_by_name2 were introduced
- * in this release.
- * \version 1.8.8 Fortran 2003 subroutine and \c h5o_info_t derived
- * type introduced in this release.</td>
- *
- * \since 1.8.0
- *
- */
diff --git a/doxygen/dox/H5Ovisit.dox b/doxygen/dox/H5Ovisit.dox
deleted file mode 100644
index 1e2a3ea..0000000
--- a/doxygen/dox/H5Ovisit.dox
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * \ingroup H5O
- * \def H5Ovisit
- *
- * #H5Ovisit is a macro that is mapped to one of the following:
- * \li #H5Ovisit3
- * \li #H5Ovisit1
- *
- * \details Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in
- * API Compatibility Macros in HDF5; we urge you to read that
- * document closely.
- *
- * In HDF5 versions 1.12 and after, #H5Ovisit is mapped to
- * #H5Ovisit3. In version 1.10, #H5Ovisit is identical
- * to #H5Ovisit1.
- *
- * Specific compile-time compatibility flags and the resulting
- * mappings are as follows:
- *
- * \par
- * <table>
- * <tr>
- * <th>Compatibility settings</th>
- * <th>H5Ovisit</th>
- * </tr>
- * <tr>
- * <td>No compatibility flag \n &nbsp;</td>
- * <td>#H5Ovisit3 in 1.12 or after \n
- * #H5Ovisit1 for 1.8 and 1.10</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.12</td>
- * <td>#H5Ovisit3</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.10 or 1.8 interface</td>
- * <td>#H5Ovisit1</td>
- * </tr>
- * </table>
- *
- * \version 1.12.0 The macro #H5Ovisit and function #H5Ovisit3 were added,
- * and #H5Ovisit1 was deprecated.
- * \version 1.10.5 The macro #H5Ovisit was removed. The functions
- * #H5Ovisit and #H5Ovisit1 are identical in this release.
- * This change was added to restore the broken API compatibility
- * introduced in HDF5-1.10.3.
- * \version 1.10.3 The function #H5Ovisit was renamed to #H5Ovisit1.
- * The macro #H5Ovisit and the function #H5Ovisit2 were
- * introduced in this release.
- * \version 1.8.8 Fortran subroutine and data structure added.
- *
- * \since 1.8.0
- *
- */
diff --git a/doxygen/dox/H5Ovisit_by_name.dox b/doxygen/dox/H5Ovisit_by_name.dox
deleted file mode 100644
index 2ba4846..0000000
--- a/doxygen/dox/H5Ovisit_by_name.dox
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * \ingroup H5O
- * \def H5Ovisit_by_name
- *
- * #H5Ovisit_by_name is a macro that is mapped to one of the following:
- * \li #H5Ovisit_by_name3
- * \li #H5Ovisit_by_name1
- *
- * \details Such macros are provided to facilitate application
- * compatibility. Their use and mappings are fully described in
- * API Compatibility Macros in HDF5; we urge you to read that
- * document closely.
- *
- * In HDF5 versions 1.12 and after, #H5Ovisit_by_name is mapped to
- * #H5Ovisit_by_name3. In version 1.10, #H5Ovisit_by_name
- * is identical to #H5Ovisit_by_name1.
- *
- * Specific compile-time compatibility flags and the resulting
- * mappings are as follows:
- *
- * \par
- * <table>
- * <tr>
- * <th>Compatibility settings</th>
- * <th>H5Ovisit_by_name</th>
- * </tr>
- * <tr>
- * <td>No compatibility flag \n &nbsp;</td>
- * <td>#H5Ovisit_by_name3 for 1.12 and above \n
- * #H5Ovisit_by_name1 for 1.10 or 1.8</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.12 interface</td>
- * <td>#H5Ovisit_by_name3</td>
- * </tr>
- * <tr>
- * <td>Emulate Release 1.10 or 1.8 interface</td>
- * <td>#H5Ovisit_by_name1</td>
- * </tr>
- * </table>
- *
- * \version 1.12.0 The macro #H5Ovisit_by_name and function #H5Ovisit_by_name3 were added.
- * \version 1.10.5 The macro #H5Ovisit_by_name was removed. The functions
- * #H5Ovisit_by_name and #H5Ovisit_by_name1 are identical
- * in this release. This change was added to restore the
- * broken API compatibility introduced in HDF5-1.10.3.
- * \version 1.10.3 The function #H5Ovisit_by_name was renamed to #H5Ovisit_by_name1.
- * The macro #H5Ovisit_by_name and the function #H5Ovisit_by_name2
- * were introduced in this release.
- * \version 1.8.8 Fortran subroutine introduced in this release.
- *
- * \since 1.8.0
- *
- */
diff --git a/doxygen/dox/H5Sencode.dox b/doxygen/dox/H5Sencode.dox
deleted file mode 100644
index fe0995c..0000000
--- a/doxygen/dox/H5Sencode.dox
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * \ingroup H5S
- * \def H5Sencode()
- * H5Sencode() is a macro that is mapped to either H5Sencode1() or H5Sencode2().
-*/
diff --git a/doxygen/dox/RFC.dox b/doxygen/dox/RFC.dox
new file mode 100644
index 0000000..c16dcea
--- /dev/null
+++ b/doxygen/dox/RFC.dox
@@ -0,0 +1,91 @@
+/** \page RFC RFCs
+
+<table>
+<tr><th>RFC ID</th><th>Title</th><th>Comments</th></tr>
+<tr> <td>2021-05-28</td> <td>\ref_rfc20210528</td> <td></td></tr>
+<tr> <td>2019-09-23</td> <td>\ref_rfc20190923</td> <td></td></tr>
+<tr> <td>2019-04-10</td> <td>\ref_rfc20190410</td> <td></td> </tr>
+<tr> <td>2018-12-31</td> <td>\ref_rfc20181231</td> <td></td> </tr>
+<tr> <td>2018-12-20</td> <td>\ref_rfc20181220</td> <td></td> </tr>
+<tr> <td>2018-06-20</td> <td>\ref_rfc20180620</td> <td></td> </tr>
+<tr> <td>2018-06-10</td> <td>\ref_rfc20180610</td> <td></td> </tr>
+<tr> <td>2018-03-21</td> <td>\ref_rfc20180321</td> <td></td> </tr>
+<tr> <td>2018-01-25</td> <td>\ref_rfc20180125</td> <td></td> </tr>
+<tr> <td>2017-07-07</td> <td>\ref_rfc20170707</td> <td></td> </tr>
+<tr> <td>2016-01-05</td> <td>\ref_rfc20160105</td> <td></td> </tr>
+<tr> <td>2015-09-15</td> <td>\ref_rfc20150915</td> <td></td> </tr>
+<tr> <td>2015-07-09</td> <td>\ref_rfc20150709</td> <td></td> </tr>
+<tr> <td>2015-06-15</td> <td>\ref_rfc20150615</td> <td></td> </tr>
+<tr> <td>2015-04-29</td> <td>\ref_rfc20150429</td> <td></td> </tr>
+<tr> <td>2015-04-24</td> <td>\ref_rfc20150424</td> <td></td> </tr>
+<tr> <td>2015-04-23</td> <td>\ref_rfc20150423</td> <td></td> </tr>
+<tr> <td>2015-03-01</td> <td>\ref_rfc20150301</td> <td></td> </tr>
+<tr> <td>2015-02-12</td> <td>\ref_rfc20150212</td> <td></td> </tr>
+<tr> <td>2015-02-05</td> <td>\ref_rfc20150205</td> <td></td> </tr>
+<tr> <td>2015-02-02</td> <td>\ref_rfc20150202</td> <td></td> </tr>
+<tr> <td>2014-12-10</td> <td>\ref_rfc20141210</td> <td></td> </tr>
+<tr> <td>2014-12-01</td> <td>\ref_rfc20141201</td> <td></td> </tr>
+<tr> <td>2014-09-16</td> <td>\ref_rfc20140916</td> <td></td> </tr>
+<tr> <td>2014-08-27</td> <td>\ref_rfc20140827</td> <td></td> </tr>
+<tr> <td>2014-07-29</td> <td>\ref_rfc20140729</td> <td></td> </tr>
+<tr> <td>2014-07-22</td> <td>\ref_rfc20140722</td> <td></td> </tr>
+<tr> <td>2014-07-17</td> <td>\ref_rfc20140717</td> <td></td> </tr>
+<tr> <td>2014-07-07</td> <td>\ref_rfc20140707</td> <td></td> </tr>
+<tr> <td>2014-05-24</td> <td>\ref_rfc20140524</td> <td></td> </tr>
+<tr> <td>2014-03-18</td> <td>\ref_rfc20140318</td> <td></td> </tr>
+<tr> <td>2014-03-13</td> <td>\ref_rfc20140313</td> <td></td> </tr>
+<tr> <td>2014-02-24</td> <td>\ref_rfc20140224</td> <td></td> </tr>
+<tr> <td>2013-12-11</td> <td>\ref_rfc20131211</td> <td></td> </tr>
+<tr> <td>2013-09-30</td> <td>\ref_rfc20130930</td> <td></td> </tr>
+<tr> <td>2013-09-19</td> <td>\ref_rfc20130919</td> <td></td> </tr>
+<tr> <td>2013-06-30</td> <td>\ref_rfc20130630</td> <td></td> </tr>
+<tr> <td>2013-03-16</td> <td>\ref_rfc20130316</td> <td></td> </tr>
+<tr> <td>2012-11-14</td> <td>\ref_rfc20121114</td> <td></td> </tr>
+<tr> <td>2012-10-24</td> <td>\ref_rfc20121024</td> <td></td> </tr>
+<tr> <td>2012-08-28</td> <td>\ref_rfc20120828</td> <td></td> </tr>
+<tr> <td>2012-05-23</td> <td>\ref_rfc20120523</td> <td></td> </tr>
+<tr> <td>2012-05-01</td> <td>\ref_rfc20120501</td> <td></td> </tr>
+<tr> <td>2012-03-05</td> <td>\ref_rfc20120305</td> <td></td> </tr>
+<tr> <td>2012-02-20</td> <td>\ref_rfc20120220</td> <td></td> </tr>
+<tr> <td>2012-01-20</td> <td>\ref_rfc20120120</td> <td></td> </tr>
+<tr> <td>2012-01-04</td> <td>\ref_rfc20120104</td> <td></td> </tr>
+<tr> <td>2011-11-19</td> <td>\ref_rfc20111119</td> <td></td> </tr>
+<tr> <td>2011-08-25</td> <td>\ref_rfc20110825</td> <td></td> </tr>
+<tr> <td>2011-08-11</td> <td>\ref_rfc20110811</td> <td></td> </tr>
+<tr> <td>2011-07-26</td> <td>\ref_rfc20110726</td> <td></td> </tr>
+<tr> <td>2011-06-14</td> <td>\ref_rfc20110614</td> <td></td> </tr>
+<tr> <td>2011-03-29</td> <td>\ref_rfc20110329</td> <td></td> </tr>
+<tr> <td>2011-01-18</td> <td>\ref_rfc20110118</td> <td></td> </tr>
+<tr> <td>2010-11-22</td> <td>\ref_rfc20101122</td> <td></td> </tr>
+<tr> <td>2010-11-04</td> <td>\ref_rfc20101104</td> <td></td> </tr>
+<tr> <td>2010-10-18</td> <td>\ref_rfc20101018</td> <td></td> </tr>
+<tr> <td>2010-09-02</td> <td>\ref_rfc20100902</td> <td></td> </tr>
+<tr> <td>2010-07-27</td> <td>\ref_rfc20100727</td> <td></td> </tr>
+<tr> <td>2010-07-26</td> <td>\ref_rfc20100726</td> <td></td> </tr>
+<tr> <td>2010-05-11</td> <td>\ref_rfc20100511</td> <td></td> </tr>
+<tr> <td>2010-04-22</td> <td>\ref_rfc20100422</td> <td></td> </tr>
+<tr> <td>2010-03-12</td> <td>\ref_rfc20100312</td> <td></td> </tr>
+<tr> <td>2009-12-18</td> <td>\ref_rfc20091218</td> <td></td> </tr>
+<tr> <td>2009-09-07</td> <td>\ref_rfc20090907</td> <td></td> </tr>
+<tr> <td>2009-06-12</td> <td>\ref_rfc20090612</td> <td></td> </tr>
+<tr> <td>2008-12-18</td> <td>\ref_rfc20081218</td> <td></td> </tr>
+<tr> <td>2008-09-15</td> <td>\ref_rfc20080915</td> <td></td> </tr>
+<tr> <td>2008-09-04</td> <td>\ref_rfc20080904</td> <td></td> </tr>
+<tr> <td>2008-03-01</td> <td>\ref_rfc20080301</td> <td></td> </tr>
+<tr> <td>2008-02-09</td> <td>\ref_rfc20080209</td> <td></td> </tr>
+<tr> <td>2008-02-06</td> <td>\ref_rfc20080206</td> <td></td> </tr>
+<tr> <td>2007-11-11</td> <td>\ref_rfc20071111</td> <td></td> </tr>
+<tr> <td>2007-10-18</td> <td>\ref_rfc20071018</td> <td></td> </tr>
+<tr> <td>2007-08-01</td> <td>\ref_rfc20070801</td> <td></td> </tr>
+<tr> <td>2007-04-13</td> <td>\ref_rfc20070413</td> <td></td> </tr>
+<tr> <td>2007-01-15</td> <td>\ref_rfc20070115</td> <td></td> </tr>
+<tr> <td>2006-06-23</td> <td>\ref_rfc20060623</td> <td></td> </tr>
+<tr> <td>2006-06-04</td> <td>\ref_rfc20060604</td> <td></td> </tr>
+<tr> <td>2006-05-05</td> <td>\ref_rfc20060505</td> <td></td> </tr>
+<tr> <td>2006-04-10</td> <td>\ref_rfc20060410</td> <td></td> </tr>
+<tr> <td>2006-03-17</td> <td>\ref_rfc20060317</td> <td></td> </tr>
+<tr> <td>2006-01-24</td> <td>\ref_rfc20060124</td> <td></td> </tr>
+<tr> <td>2004-08-11</td> <td>\ref_rfc20040811</td> <td></td> </tr>
+</table>
+
+*/ \ No newline at end of file
diff --git a/doxygen/dox/ReferenceManual.dox b/doxygen/dox/ReferenceManual.dox
index 596a224..cc0f99b 100644
--- a/doxygen/dox/ReferenceManual.dox
+++ b/doxygen/dox/ReferenceManual.dox
@@ -3,41 +3,87 @@
The functions provided by the HDF5 C-API are grouped into the following
\Emph{modules}:
-\li \ref H5A "Attributes" — Management of HDF5 attributes (\ref H5A)
-\li \ref H5D "Datasets" — Management of HDF5 datasets (\ref H5D)
-\li \ref H5S "Dataspaces" — Management of HDF5 dataspaces which describe the shape of datasets and attributes (\ref H5S)
-\li \ref H5T "Datatypes" — Management of datatypes which describe elements of datasets and attributes (\ref H5T)
-\li \ref H5E "Error Handling" — Functions for handling HDF5 errors (\ref H5E)
-\li \ref H5ES "Event Sets" — Functions for handling HDF5 event sets (\ref H5ES)
-\li \ref H5F "Files" — Management of HDF5 files (\ref H5F)
-\li \ref H5Z "Filters" — Configuration of filters that process data during I/O operation (\ref H5Z)
-\li \ref H5G "Groups" — Management of groups in HDF5 files (\ref H5G)
-\li \ref H5I "Identifiers" — Management of object identifiers and object names (\ref H5I)
-\li \ref H5 "Library" — General purpose library functions (\ref H5)
-\li \ref H5L "Links" — Management of links in HDF5 groups (\ref H5L)
-\li \ref H5M "Maps" — Management of HDF5 maps (\ref H5M)
-\li \ref H5O "Objects" — Management of objects in HDF5 files (\ref H5O)
-\li \ref H5PL "Plugins" — Programmatic control over dynamically loaded plugins (\ref H5PL)
-\li \ref H5P "Property Lists" — Management of property lists to control HDF5 library behavior (\ref H5P)
-\li \ref H5R "References" — Management of references to specific objects and data regions in an HDF5 file (\ref H5R)
-\li \ref H5VL "Virtual Object Layer" — Management of the Virtual Object Layer (\ref H5VL)
-
-\par Asynchronous Functions
- A subset of functions has \ref ASYNC "asynchronous variants".
-
-\par API Versioning
- See \ref api-compat-macros
-
-\par Deprecated Functions and Types
- A list of deprecated functions and types can be found
- <a href="./deprecated.html">here</a>.
-
-\par Etiquette
- Here are a few simple rules to follow:
- \li \Bold{Handle discipline:} If you acquire a handle (by creation or copy), \Emph{you own it!} (..., i.e., you have to close it.)
- \li \Bold{Dynamic memory allocation:} ...
- \li \Bold{Use of locations:} Identifier + name combo
+<table>
+<tr><th>Modules</th></tr>
+<tr valign="top">
+<td>
+
+<table>
+<tr><td style="border: none;">
+\li \ref H5A "Attributes (H5A)"
+\li \ref H5D "Datasets (H5D)"
+\li \ref H5S "Dataspaces (H5S)"
+\li \ref H5T "Datatypes (H5T)"
+\li \ref H5E "Error Handling (H5E)"
+\li \ref H5ES "Event Sets (H5ES)"
+\li \ref H5F "Files (H5F)"
+\li \ref H5Z "Filters (H5Z)"
+\li \ref H5G "Groups (H5G)"
+</td><td style="border: none;">
+\li \ref H5I "Identifiers (H5I)"
+\li \ref H5 "Library General (H5)"
+\li \ref H5L "Links (H5L)"
+\li \ref H5M "Maps (H5M)"
+\li \ref H5O "Objects (H5O)"
+\li \ref H5P "Property Lists (H5P)"
+\li \ref H5PL "Dynamically-loaded Plugins (H5PL)"
+\li \ref H5R "References (H5R)"
+\li \ref H5VL "Virtual Object Layer (H5VL)"
+</td><td style="border: none;vertical-align: top;">
+\li Functions with \ref ASYNC "asynchronous variants"
+\li \ref api-compat-macros
+\li <a href="./deprecated.html">Deprecated functions</a>
+\li High-level Extensions
+ <ul>
+ <li><a href="https://portal.hdfgroup.org/display/HDF5/Lite">\Bold{HDF5 Lite} (H5LT)</a></li>
+ <li><a href="https://portal.hdfgroup.org/display/HDF5/Images">\Bold{HDF5 Image} (H5IM)</a></li>
+ <li><a href="https://portal.hdfgroup.org/display/HDF5/Tables">\Bold{HDF5 Table} (H5TB)</a></li>
+ <li><a href="https://portal.hdfgroup.org/display/HDF5/Packet+Tables">\Bold{HDF5 Packet Table} (H5TB)</a></li>
+ <li><a href="https://portal.hdfgroup.org/display/HDF5/Dimension+Scales">\Bold{HDF5 Dimension Scale} (H5DS)</a></li>
+ </ul>
+</td></tr>
+<tr><td colspan="3" style="border: none;">
+\ref H5 \ref H5A \ref H5D \ref H5E \ref H5ES \ref H5F \ref H5G \ref H5I \ref H5L
+\ref H5M \ref H5O \ref H5P \ref H5PL \ref H5R \ref H5S \ref H5T \ref H5VL \ref H5Z
+</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.
+
*/ \ No newline at end of file
diff --git a/doxygen/dox/cookbook/Accessibility.c b/doxygen/dox/cookbook/Accessibility.c
new file mode 100644
index 0000000..f4cc905
--- /dev/null
+++ b/doxygen/dox/cookbook/Accessibility.c
@@ -0,0 +1,48 @@
+/* -*- c-file-style: "stroustrup" -*- */
+
+#include "hdf5.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(void)
+{
+ int ret_val = EXIT_SUCCESS;
+
+ //! <!-- [set_libver_bounds] -->
+ {
+ __label__ fail_fapl, fail_file;
+ hid_t fapl, file, aspace, attr;
+
+ if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_fapl;
+ }
+#if H5_VERSION_GE(1, 10, 0)
+ if (H5Pset_libver_bounds(fapl, H5F_LIBVER_V18, H5F_LIBVER_V18) < 0) {
+#elif H5_VERSION_GE(1, 8, 0)
+ if (H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) {
+#else
+#error Only HDF5 1.8.x and later supported.
+#endif
+ ret_val = EXIT_FAILURE;
+ goto fail_file;
+ }
+ if ((file = H5Fcreate("set_libver_bounds.h5", H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_file;
+ }
+
+ H5Fclose(file);
+fail_file:
+ H5Pclose(fapl);
+fail_fapl:;
+ }
+ //! <!-- [set_libver_bounds] -->
+
+ assert(ret_val == EXIT_SUCCESS);
+
+ return ret_val;
+}
diff --git a/doxygen/dox/cookbook/Accessibility.dox b/doxygen/dox/cookbook/Accessibility.dox
new file mode 100644
index 0000000..f100283
--- /dev/null
+++ b/doxygen/dox/cookbook/Accessibility.dox
@@ -0,0 +1,39 @@
+/** \page Accessibility
+
+\section Accessibility
+
+\subsection CB_MaintainCompat Maintaining Compatibility with other HDF5 Library Versions
+
+\par Problem
+You want to ensure that the HDF5 files you produce or modify are accessible by all
+releavnt tools and applications
+
+\par Solution
+For HDF5 items (objects, attributes, etc.) that you would like to
+create in new or existing HDF5 files, ascertain the supported range of HDF5
+library versions as lower and upper bounds. When creating new or opening
+existing HDF5 files, use a file access property list and configure the supported
+range via the H5Pset_libver_bounds() function.\n
+In the example below, we restrict HDF5 item creation to the HDF5 1.8.x family of
+library versions.
+\snippet{lineno} Accessibility.c set_libver_bounds
+
+\par Discussion
+See RFC \ref_rfc20160105 for a detailed and comprehensive account of HDF5
+versioning (library, file format spec., etc.) and the H5Pset_libver_bounds()
+function.\n
+The default range #H5F_LIBVER_EARLIEST (low) - #H5F_LIBVER_LATEST (high) offers the
+widest compatibility range, but may not be suitable for certain (feature-)use
+cases.\n
+The HDF5 library comes with a \Emph{forward-} and \Emph{backward-compatibility}
+guarantee: This means that the latest version of the library can always read
+HDF5 files created by a version realesed earlier (backward compatibility).
+It also means that a given release of the library can read the contents of
+HDF5 files created with later versions of the library as long as the files
+do not contain features introduced in later versions (forward compatibility).
+
+\par See Also
+See the recipe \ref CB_LargeAttributes for an example where we use HDF5
+compatibility settings to enable the creation of large HDF5 attributes.
+
+*/ \ No newline at end of file
diff --git a/doxygen/dox/cookbook/Attributes.c b/doxygen/dox/cookbook/Attributes.c
new file mode 100644
index 0000000..f4e894f
--- /dev/null
+++ b/doxygen/dox/cookbook/Attributes.c
@@ -0,0 +1,61 @@
+/* -*- c-file-style: "stroustrup" -*- */
+
+#include "hdf5.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(void)
+{
+ int ret_val = EXIT_SUCCESS;
+
+ //! <!-- [large_attribute] -->
+ {
+ __label__ fail_attr, fail_aspace, fail_fapl, fail_file;
+ hid_t fapl, file, aspace, attr;
+
+ if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_fapl;
+ }
+#if H5_VERSION_GE(1, 10, 0)
+ if (H5Pset_libver_bounds(fapl, H5F_LIBVER_V18, H5F_LIBVER_LATEST) < 0) {
+#elif H5_VERSION_GE(1, 8, 0)
+ if (H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) {
+#else
+#error Only HDF5 1.8.x and later supported.
+#endif
+ ret_val = EXIT_FAILURE;
+ goto fail_file;
+ }
+ if ((file = H5Fcreate("large_attribute.h5", H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_file;
+ }
+
+ if ((aspace = H5Screate_simple(1, (hsize_t[]){1024 * 1024}, NULL)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_aspace;
+ }
+ if ((attr = H5Acreate(file, "4MiB", H5T_IEEE_F32LE, aspace, H5P_DEFAULT, H5P_DEFAULT)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_attr;
+ }
+
+ H5Aclose(attr);
+fail_attr:
+ H5Sclose(aspace);
+fail_aspace:
+ H5Fclose(file);
+fail_file:
+ H5Pclose(fapl);
+fail_fapl:;
+ }
+ //! <!-- [large_attribute] -->
+
+ assert(ret_val == EXIT_SUCCESS);
+
+ return ret_val;
+}
diff --git a/doxygen/dox/cookbook/Attributes.dox b/doxygen/dox/cookbook/Attributes.dox
new file mode 100644
index 0000000..68fd159
--- /dev/null
+++ b/doxygen/dox/cookbook/Attributes.dox
@@ -0,0 +1,38 @@
+/** \page Attributes
+
+\section Attributes
+
+\subsection CB_LargeAttributes Creating "Large" HDF5 Attributes
+
+\par Problem
+You would like to use HDF5 attributes the size of whose values
+exceeds a few dozen kilobytes
+
+\par Solution
+A file format change in the HDF5 1.8.x family of library releases made it
+possible to have attributes larger than about 64 KiB. Ensure that the lower
+library version bound for new HDF5 item creation is at least 1.8.x, and create
+larger attributes as usual.\n
+In the example below, we create an attribute whose value occupies 4 MiB.
+
+\note This feature is only supported in HDF5 1.8.x+
+
+\snippet{lineno} Attributes.c large_attribute
+
+\par Discussion
+Large attributes are supported only in HDF5 versions 1.8.x and higher.
+This has implications for the accessibility of your HDF5 files and
+is your call.\n
+Since there are no size limitations for large attributes, it might
+seem tempting to mistake them for dataset stand-ins. This is not the
+case, for at least two reasons:
+1. Attributes decorate HDF5 objects, have their own local namespace,
+ and can't be link targets.
+2. Attribute I/O treats the attribute value as atomic, i.e., there
+ is no support for partial I/O. A large attribute will always be
+ read or written in its entirety.
+
+\par See Also
+See \ref CB_MaintainCompat for HDF5 compatibility implications.
+
+ */ \ No newline at end of file
diff --git a/doxygen/dox/cookbook/Files.c b/doxygen/dox/cookbook/Files.c
new file mode 100644
index 0000000..b824933
--- /dev/null
+++ b/doxygen/dox/cookbook/Files.c
@@ -0,0 +1,87 @@
+/* -*- c-file-style: "stroustrup" -*- */
+
+#include "hdf5.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(void)
+{
+ int ret_val = EXIT_SUCCESS;
+
+ //! <!-- [free_space] -->
+ {
+ __label__ fail_fcpl, fail_fapl, fail_file;
+ hid_t fcpl, fapl, file;
+
+ if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_fcpl;
+ }
+#if H5_VERSION_GE(1, 10, 1)
+ if (H5Pset_file_space_strategy(fcpl, H5F_FSPACE_STRATEGY_FSM_AGGR, 1, 4096) < 0) {
+#else
+#error HDF5 1.10.1+ required
+#endif
+ ret_val = EXIT_FAILURE;
+ goto fail_fapl;
+ }
+
+ if ((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_fapl;
+ }
+#if H5_VERSION_GE(1, 10, 1)
+ if (H5Pset_libver_bounds(fapl, H5F_LIBVER_V110, H5F_LIBVER_LATEST) < 0) {
+#else
+#error HDF5 1.10.x+ required
+#endif
+ ret_val = EXIT_FAILURE;
+ goto fail_file;
+ }
+
+ if ((file = H5Fcreate("free_space.h5", H5F_ACC_TRUNC, fcpl, fapl)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_file;
+ }
+ H5Fclose(file);
+
+fail_file:
+ H5Pclose(fapl);
+fail_fapl:
+ H5Pclose(fcpl);
+fail_fcpl:;
+ }
+ //! <!-- [free_space] -->
+
+ //! <!-- [user_block] -->
+ {
+ __label__ fail_fcpl, fail_file;
+ hid_t fcpl, file;
+
+ if ((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_fcpl;
+ }
+ if (H5Pset_userblock(fcpl, 8192 * 1024) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_file;
+ }
+ if ((file = H5Fcreate("userblock.h5", H5F_ACC_TRUNC, fcpl, H5P_DEFAULT)) < 0) {
+ ret_val = EXIT_FAILURE;
+ goto fail_file;
+ }
+ H5Fclose(file);
+
+fail_file:
+ H5Pclose(fcpl);
+fail_fcpl:;
+ }
+ //! <!-- [user_block] -->
+
+ assert(ret_val == EXIT_SUCCESS);
+
+ return ret_val;
+}
diff --git a/doxygen/dox/cookbook/Files.dox b/doxygen/dox/cookbook/Files.dox
new file mode 100644
index 0000000..169d638
--- /dev/null
+++ b/doxygen/dox/cookbook/Files.dox
@@ -0,0 +1,71 @@
+/** \page Files
+
+\section Files
+
+\subsection CB_FreeSpace Tracking Free Space in HDF5 Files
+
+\par Problem
+You sometimes delete objects in HDF5 files and don't have new content to use the
+free space, but would like to reuse it in the future.
+
+\par Solution
+At file creation time, set the file space management strategy and persistence of
+free space tracking information via H5Pset_file_space_strategy().
+
+\note This feature is only supported in HDF5 1.10.1+.
+
+\snippet{lineno} Files.c free_space
+
+\par Discussion
+Free space tracking is supported only in HDF5 versions 1.10.x and higher.
+This has implications for the accessibility of your HDF5 files and
+should be considered carefully. If compatibility with previous versions of
+HDF5 must be maintained, space reclamation via \Code{h5repack} might be an option.\n
+The file space strategy #H5F_FSPACE_STRATEGY_FSM_AGGR is not the only option
+that supports free-space tracking. #H5F_FSPACE_STRATEGY_PAGE is another option,
+which adds paged allocation and is used most effectively with page buffering.\n
+For an in-depth account of HDF5 file space management, paged-allocation, and
+page buffering, see the following documents:
+\li \ref_rfc20121024
+\li \ref_rfc20120523
+\li \ref_rfc20150709
+
+\par See Also
+See \ref CB_MaintainCompat for HDF5 compatibility implications.
+
+
+\subsection CB_RemoveUnusedSpace Removing Unused Space from HDF5 Files
+
+\par Problem
+Based on estimates or \Code{h5stat} output you know that a large portion
+of an HDF5 file consists of free or unaccounted space, and you would like
+to remove it.
+
+
+\subsection CB_UserBlock Creating an HDF5 File User Block
+
+\par Problem
+You would like to include certain ancillary, non-HDF5 content in an
+HDF5 file such that it can be accessed without the HDF5 library.
+
+\par Solution
+Use a file creation property list in which the user block size is set via
+H5Pset_userblock(). In the example below, we create an 8 MiB user block.
+\snippet{lineno} Files.c user_block
+
+\par Discussion
+The user block begins at offset 0 and must be at least 512 bytes and a power
+of 2. The HDF5 library ignores any content between the beginning of the
+file and the end of the user block.\n
+You can add or strip a user block to/from an existing HDF5 file with the
+\Code{h5jam}/\Code{h5unjam} tool, respectively.
+\warning
+If you try to embed content into the user block for use by other applications,
+pay close attention to how they handle space beyond the last used byte in the
+user block or the user block in general. In the worst case, applications might
+try to truncate the rest of the file and destroy the HDF5 portion of the file.
+
+\par See Also
+References to related recipes
+
+ */ \ No newline at end of file
diff --git a/doxygen/dox/cookbook/Performance.dox b/doxygen/dox/cookbook/Performance.dox
new file mode 100644
index 0000000..7ac3a18
--- /dev/null
+++ b/doxygen/dox/cookbook/Performance.dox
@@ -0,0 +1,21 @@
+/** \page Performance
+
+\section Performance
+
+\subsection CB_MDCPerf Assessing HDF5 Metadata Cache Performance
+
+\par Problem
+You are trying to diagnose and improve the I/O performance of an application
+and would like to understand if a simple metadata cache adjustment might
+yield substantial performance gains
+
+\par Solution
+The to-the-point solution, i.e., the solution w/o any background or explanation
+
+\par Discussion
+A discussion of the fine points and variants of the solution
+
+\par See Also
+References to related recipes
+
+ */ \ No newline at end of file
diff --git a/doxygen/dox/maybe_metadata_reads.dox b/doxygen/dox/maybe_metadata_reads.dox
index 25c905f..1bb53e0 100644
--- a/doxygen/dox/maybe_metadata_reads.dox
+++ b/doxygen/dox/maybe_metadata_reads.dox
@@ -13,62 +13,30 @@
* The following is a list of those functions in the HDF5 library. This list is
* integral to the discussion in the H5Pset_all_coll_metadata_ops() entry:
*
- * <pre>
- *
- * H5Awrite()
- * H5Aread()
- * H5Arename()
- * H5Aiterate2()
- * H5Adelete()
- * H5Aexists()
- *
- * H5Dget_space_status()
- * H5Dget_storage_size()
- * H5Dset_extent()
- * H5Ddebug()
- * H5Dclose()
- * H5Dget_create_plist()
- * H5Dget_space() (when dataset is a virtual dataset)
- *
- * H5Gget_create_plist()
- * H5Gget_info()
- * H5Gclose()
- *
- * H5Literate()
- * H5Lvisit()
- *
- * H5Rcreate()
- * H5Rdereference2() (when reference is an object reference)
- * H5Rget_region()
- * H5Rget_obj_type2()
- * H5Rget_name()
- *
- * H5Ocopy()
- * H5Oopen_by_addr()
- * H5Oincr_refcount()
- * H5Odecr_refcount()
- * H5Oget_info()
- * H5Oset_comment()
- * H5Ovisit()
- *
- * H5Fis_hdf5()
- * H5Fflush()
- * H5Fclose()
- * H5Fget_file_image()
- * H5Freopen()
- * H5Fget_freespace()
- * H5Fget_info2()
- * H5Fget_free_sections()
- * H5Fmount()
+ * H5Awrite(), H5Aread(), H5Arename(), H5Aiterate2(), H5Adelete(), H5Aexists()
+ *
+ * H5Dget_space_status(), H5Dget_storage_size(), H5Dset_extent(), H5Ddebug(),
+ * H5Dclose(), H5Dget_create_plist(), H5Dget_space() (for virtual datasets)
+ *
+ * H5Gget_create_plist(), H5Gget_info(), H5Gclose()
+ *
+ * H5Literate(), H5Lvisit()
+ *
+ * H5Rcreate(), H5Rdereference2() (for object references),
+ * H5Rget_region(), H5Rget_obj_type2(), H5Rget_name()
+ *
+ * H5Ocopy(), H5Oopen_by_addr(), H5Oincr_refcount(), H5Odecr_refcount(),
+ * H5Oget_info(), H5Oset_comment(), H5Ovisit()
+ *
+ * H5Fis_hdf5(), H5Fflush(), H5Fclose(), H5Fget_file_image(), H5Freopen(),
+ * H5Fget_freespace(), H5Fget_info2(), H5Fget_free_sections(), H5Fmount(),
* H5Funmount()
*
* H5Iget_name()
*
- * H5Tget_create_plist()
- * H5Tclose()
+ * H5Tget_create_plist(), H5Tclose()
*
* H5Zunregister()
- * </pre>
*
* In addition, \b most deprecated functions fall into this category.
*
diff --git a/doxygen/dox/rm-template.dox b/doxygen/dox/rm-template.dox
index 64e4770..ebf8aed 100644
--- a/doxygen/dox/rm-template.dox
+++ b/doxygen/dox/rm-template.dox
@@ -1,72 +1,99 @@
-/**\ingroup H5XYZ
- *
- * \brief A synopsis of what H5XYZgreat_function does
- *
- * \param[in] name1 Description of IN parameter \p name1
- * \param[out] name2 Description of OUT parameter \p name2
- * \param[in,out] name3 Description of INOUT parameter \p name3
- *
- * \return Returns what you always wanted
- *
- * \pre Describe preconditions for an entity. Can be repreated.
- *
- * \invariant Describe invariants for an entity. Can be repeated.
- *
- * \post Describe postconditions for an entity. Can be repreated.
- *
- * \deprecated This was my favorite function while it lasted.
- *
- * \details Describe the normal behavior flow of the function here. Try to be
- * helpful!
- *
- * Make reference to other functions like this: H5Fopen().
- *
- * Make reference to formal parameters like this: \p name1
- *
- * Make reference to macros like this: #H5P_DEFAULT.
- *
- * Make reference to enumeration constants like this: #H5F_CLOSE_WEAK.
- *
- * Include code snippets like this:
- * \snippet H5Zpublic.h H5Z_class2_t_snip
- *
- * Lists are supported:
- * - mouse events
- * -# mouse move event
- * -# mouse click event\n
- * More info about the click event.
- * -# mouse double click event
- * - keyboard events
- * 1. key down event
- * 2. key up event
- *
- * The distance between \f$(x_1,y_1)\f$ and \f$(x_2,y_2)\f$ is
- * \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$.\n
- * For tables, see
- * <a href="https://www.doxygen.nl/manual/tables.html">this example</a>.
- *
- * This is an example of how to use the H5XYZgreat_function().\n
- * The contents of the file hello_hdf5.c will be included.
- * \include hello_hdf5.c
- *
- * \note Dear reader, ...
- *
- * \attention Colorless green ideas sleep furiously.
- *
- * \warning Don't do this at home!
- *
- * \author This function was written by an esteemed author. Repeat this
- * command for multiple authors.
- *
- * \date Record the function's birthdate!
- *
- * \since 1.MAJOR.MINOR The 'since' command can also be used to record a
- * function's introduction (via its initial release
- * version).
- *
- * \version 1.MAJOR.MINOR An important event in the version history of this
- * function. There can be multiple such events.
- *
- * \see H5XYZanother_great_function(), H5XYZnot_so_great_a_function()
- *
- */
+/** \page RMT Reference Manual (RM) Page Template
+
+We treat documentation like code and use
+<a href="https://www.doxygen.nl/index.html">Doxygen</a> to
+<a href="https://github.com/HDFGroup/hdf5/blob/develop/src/H5Fpublic.h">markup
+comments in the code</a> or create
+<a href="https://github.com/HDFGroup/hdf5/blob/develop/doxygen/dox/Overview.dox">stand-alone pages</a>.
+
+Every RM entry consists of a subset of the elements listed below. Not every RM
+entry warrants the full set. More is better, and we can, perhaps, distinguish
+minimal, typical, and great RM entries.
+
+A minimal RM entry must include elements 1-3, 8, 11, and 7 if applicable.
+
+A \Emph{typical} RM entry is a minimal RM entry that in addition has elements
+9, 10, and 12.
+
+A \Bold{great} RM entry is a typical RM entry plus everything else.
+
+The current RM is a mixed bag. Take what's there with a pinch of salt and apply
+the <a href="https://www.oreilly.com/library/view/97-things-every/9780596809515/ch08.html">Scout Rule</a>!
+
+\par RM entry elements
+
+1. Module indication
+ - Indicate the HDF5 module in which the function will appear.
+ \verbatim
+ * \ingroup H5XYZ
+ \endverbatim
+2. Synopsis
+ - A phrase or sentence that summarizes the function's purpose
+ \verbatim
+ * \brief Simplifies your life
+ \endverbatim
+3. Prototype (parameters and return value)
+ - A description of the function parameters and return value
+ \verbatim
+ * \param[in] name1 Description of IN parameter \p name1
+ * \param[out] name2 Description of OUT parameter \p name2
+ * \param[in,out] name3 Description of INOUT parameter \p name3
+ * \return Returns what you always wanted
+ \endverbatim
+ - Clearly indicate the parameter direction as \c in, \c out, or
+ \Code{in,out}
+ - Make reference to other parameters using \Code{\\p}
+4. Preconditions
+ - A set of preconditions that must be met.
+ \verbatim
+ * \pre The argmument supplied in parameter \p name2 must be even.
+ \endverbatim
+5. Invariants
+ - A set of invariants.
+ \verbatim
+ * \invariant The mouse pointer will always be visible.
+ \endverbatim
+6. Postconditions
+ - What will be true when the function returns.
+ \verbatim
+ * \post On error, the output parameters will be unmodified.
+ \endverbatim
+7. Deprecation note
+ - If a function was deprecated, list the version in which the function was
+ deprecated (below), why it was deprecated, and which function(s) succeed it.
+ \verbatim
+ * \deprecated Deprecated in favor of another great function.
+ \endverbatim
+8. Details
+ - A detailed description of the function's behavior
+ \verbatim
+ * \details This is the heart of the matter. Try to be helpful!
+ \endverbatim
+9. Example
+ - The function in context and action, usually a (Doxygen) snippet.
+ \verbatim
+ * \par Example
+ * \snippet H5F_examples.c minimal
+ \endverbatim
+10. Instruction (attention, note, warning)
+ - Behaviors, features, side-effects, etc. the user should be aware of
+ \verbatim
+ * \note Dear reader, ...
+ *
+ * \attention Colorless green ideas sleep furiously.
+ *
+ * \warning Don't do this at home!
+ \endverbatim
+11. Since
+ - The HDF5 library version in which the function was introduced
+ \verbatim
+ * \since 1.MAJOR.MINOR
+ \endverbatim
+12. Version
+ - Use this element to record a deprecation version, a change in parameter
+ types, changes in behavior, etc.
+ \verbatim
+ * \version 1.MAJOR.MINOR Function was deprecated in this release
+ \endverbatim
+
+*/ \ No newline at end of file