There are many goals to achieve when deciding to write an API. The functions in the library should be reenterable, easy to include in an application, platform independent, and reasonably flexible with enough functionality to be usable. These goals can often be contradictory; however, they are achievable with enough forethought and planning.

This package is sufficiently abstracted so that the programmer will neither need to know or care how it is implemented; at least that is the goal I have striven to achieve while writing it.

Within this package is found the: source files written in C; make files for various platforms and compilers; a text script which sets the environment correctly when it runs the demo program created by the make utility; README, INSTALL, and HISTORY text files; Artistic License; and the documentation in LATEX2e form.

A short overview will follow, discussing the philosophy of how the package works including a rationale of the structure and type definition used in the package.

Then the library itself is broken into six groups: initialization, status and state, pointer manipulation, list update, search, and input/output.

(a) The initialization group handles the creation, initializing, and destruction of the link list.

(b) The status and state group returns various kinds of information about the status of the link list during its operation.

(c) The pointer manipulation group allows the positioning of the current pointer to the head, the tail, or an arbitrary node within the list.

(d) The list update group adds and deletes nodes.

(e) The search group returns the record information based on key data or on the absolute record position.

(f) The input/output group saves or retrieves record data to or from a disk file.

At this writing there are 29 functions in the library, each one of which is thoroughly explained and examples given when needed.

Carl J. Nobile 2007-06-24