Coding conventions:

Externally visible objects begin with "oski_"

Macros are all CAPS, except for oski_Malloc and related routines

Global variables begin with "g_"
	e.g., g_

Data type names end in "_t"

Function pointer type names end in "_t" for official interface
types (e.g., oski_errhandler_t)

Function names use mixed caps with beginning capital letter
	e.g., SetValueStatic
	e.g., oski_SetValueExternallyVisible

For matrix type modules for some type, [TYPE]:

	Create a "format.h" header file

	Create a matrix type-specific data structure named
		oski_mat[TYPE]_t

	Define the following mandatory externally visible routines:
		- oski_InitModule
		- oski_CloseModule
		- oski_GetShortDesc
		- oski_GetLongDesc
		(... TO DO: Complete this list ...)

	For each routine define in "format.h":
		- Function prototype named "oski_[NAME]"
		- Corresponding function pointer type "oski_[NAME]_funcpt"
		where, e.g., [NAME] = InitModule

	At the top of "format.h", create a name mangling section:

		#include <oski/matrix.h>
		#if defined(DO_NAME_MANGLING)
		/** \name Name mangling. */
		/*@{*/
		#define   oski_mat[TYPE]_t     MANGLE_(oski_mat[TYPE]_t)
		#define   oski_[NAME]          MANGLEMOD_(oski_[NAME])
		/* ... etc. ... */
		/*@}*/

	e.g., see the CSR implementation.

# eof
