API Design

  • Austin C Bullock

The API is made available for use through the following statement:

use io_fortran_lib

which may be placed at the start of any compilation unit, immediately following the program, module, function, or subroutine statement, and before any implicit statement.

The functionality provided by the API is distributed via a handful of generic interfaces and a derived type String. The corresponding routines operate on numeric and string data, and take a minimal number of arguments with optional arguments to customize output for particular use cases. This ensures ease of use and flexibility for the end-user, without the need for any specific knowledge regarding the internal implementations. For advanced character handling, the String type provides extensive functionality through type-bound procedures. For convenience, a list of constants are also provided.

The design of io_fortran_lib is dualistic in nature. That is, for each operation represented by an interface, there exists a transpose operation with a corresponding interface, such as String ⇆ cast, str ⇆ cast, to_file ⇆ from_file, read_file ⇆ write_file, join ⇆ split, and so on. Each pair of interfaces are designed to mirror each other in their arguments and assumptions of optional arguments.

Note

All file I/O (both text and binary) is conducted via unformatted, stream-access reads and writes as introduced in Fortran 2003.