  Representing scientific data sets efficiently on external storage usually
involves converting them to a byte string representation using specialized
reader/writer routines. The resulting storage files are frequently difficult to
interpret without these specialized routines as they do not contain information
about the logical structure of the data. Avoiding such problems usually
involves heavy-weight data format libraries or data base systems. We present a
simple C++ library that allows to create and access data files that store
structured data. The structure of the data is described by a data type that can
be built from elementary data types (integer and floating-point numbers, byte
strings) and composite data types (arrays, structures, unions). An abstract
data access class presents the data to the application. Different actual data
file structures can be implemented under this layer. This method is
particularly suited to applications that require complex data structures, e.g.
molecular dynamics simulations. Extensions such as late type binding and object
persistence are discussed.
