# Libwww Modules and Documentation

A libwww module consists of the following:

- A module definition file, for example foo.c
- A module declaration file, for example foo.h
- A module description file, for example foo.html

Even though ANSI C doesn't support classes or objects, it is an advantage - especially when more and more people are going to contribute with modules that each module is a self-contained unit with a clearly defined interface to the rest of the world. It is important that you supply a lot of "methods" for accessing the data structures and only declare as little `PUBLIC` as possible of the internal structures.

Make sure that your file names are not longer than 8 characters as we support PCs as well. The declaration file is generated automatically from the description file using the Line Mode browser. This ensures that the description of a module is done at the same time as the declaration of the module. The generation of the declaration files is done at compile time using the Line Mode Browser, so be sure that you have a recent version of this.

All documentation is written in HTML so that we can use hypertext links. To prevent the low level documentation from getting out of sync with the code, the .h files are extracted from the .html files. While this is only effective for API function documentation, it is better than nothing.

The module header is the comment at the top of a definition file and description file. Please remember to fill it out carefully! The misterious line `@(#) $Id: ModuleHeader.html,v 1.8 1996/12/09 03:23:18 jigsaw Exp $` makes CVS add the version information automatically. Just write it as is and CVS will do the rest.

    /*
    **	FOO BAR MODULE
    **
    **	@(#) $Id: ModuleHeader.html,v 1.8 1996/12/09 03:23:18 jigsaw Exp $
    **
    **	This module can convert foos to bars
    **
    ** Authors:
    **	JB	J. Bloggs, ACME Widget Company, TX, USA
    **	JD	J. Doe, University of Tamahalahula, Samabaria
    **
    ** History:
    **	   Jan 1983	First wriiten as a widget sorter (JB)
    **	23 Nov 1986	Converted into mangle worzle sorter (JD)
    **	38 Dec 1992	Bug fix: Used to carsh on null worzles. (JD, JB)
    **
    */