Skip to content

Commit d4c87b0

Browse files
committed
doc
1 parent 94de12a commit d4c87b0

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,14 @@ This easy-to-use, thin object-oriented modern Fortran library abstracts away the
3636
In distinction from other high-level HDF5 interfaces, h5fortran works to deduplicate code, using polymorphism wherever feasible and extensive test suite.
3737

3838
Polymorphic [API](./API.md) with read / write **dataset** types int32, int64, real32, real64, character (string) with rank scalar (0-D) through 7-D.
39+
Variable-length datasets "H5S_UNLIMITED" can also be read.
3940

4041
HDF5 **attributes** are also supported for read/write types int32, int64, real32, real64, character (string) with rank scalar (0-D) through 7-D.
4142

4243
For **character**, datasets and attributes are supported for fixed length and variable length strings.
4344
Character padding uses spaces as this is the default for Fortran.
4445
Space-padded, null-terminated and null-padded strings are also supported on read.
46+
UTF8 characters are passed through on read and write using the Fortran default character kind.
4547

4648
* **Array slicing on read and write** is supported, that is, reading or writing part of a disk HDF5 array into a variable matching the slice shape.
4749
* Mismatched datatypes are coerced as per standard Fortran rules. For example, reading a float HDF5 variable into an integer Fortran variable: 42.3 => 42
@@ -161,11 +163,15 @@ For detailed [examples](./example/) see [Examples.md](./Examples.md).
161163
* The first character of the filename should be a character, NOT whitespace to avoid file open/creation errors.
162164
* Polymorphic array rank is implemented.
163165

164-
### h5fortran: missing Fortran datatypes
166+
### h5fortran: missing HDF5 features
165167

166168
* arrays of rank > 7: prototyped in reader_nd.f90, writer_nd.f90. Fortran 2008 arrays are up to rank 15, but only recent compilers support.
167169
* complex64 / complex128: not natively handled in HDF5. There are performance impacts for compound datatypes. Many choose to write two datasets, one each for real and imaginary like `A_real` and `A_imag`
168-
* non-default character kind
170+
* non-default character kind -- we do pass-through UTF8
169171
* logical / boolean: not supported natively by HDF5. h5py implements as [enum](https://docs.h5py.org/en/stable/faq.html#what-datatypes-are-supported).
172+
* variable length dataset writing
173+
174+
We didn't use `type(c_ptr)` and `c_loc()` internally for datasets as we observed problems when the actual argument is sliced on read/write.
175+
The current h5fortran impementation (Fortran `select type` for H5Dwrite/H5Dread) does work with sliced actual arguments.
170176

171177
HDF5 Fortran 2003 [features](https://docs.hdfgroup.org/archive/support/HDF5/doc/fortran/NewFeatures_F2003.pdf)

0 commit comments

Comments
 (0)