We favor the simple expression of the complex thought. ... We are for flat forms Because they destroy illusion and reveal truth.
—Le Tigre, “Slideshow at Free University”
Here is the common format for the typical library, in C or in any other language:
A small set of data structures that represent key aspects of the field the library addresses.
A set of functions (often referred to as interface functions) that manipulate those data structures.
An XML library, for example, would have a structure representing an XML document and perhaps views of the document, plus lots of functions for going between the data structure and the XML file on disk, querying the structure for elements, et cetera. A database library would have a structure representing the state of communications with the database, and perhaps structures representing tables, plus lots of functions for talking to the database and dissecting the data it sends.
This is an eminently sensible way to organize a program or a library. It is the means by which an author can represent concepts with nouns and verbs that are appropriate to the problem at hand.
The first fun exercise in object-oriented programming (OOP) is defining the term, and although I won’t waste time (and invite flame wars) by giving a precise definition, the preceding description of an object-oriented library should give you a feel for what we are going after: a few central data structures, each with a set of functions that ...