SNOMAN is not perfect (although the authors like to think it comes close!); invariably the user will want to do more and then the only option is to write code and link it in. In this section we will describe how to do that, but before we start, it is necessary to briefly review the organisation of the code. The code is divided into Software Units (SUs). Most SUs have initialisation and termination routines and one or more execution routines. The SUs form layers, higher level ones depending on lower level ones. There are two types:-
SNOMAN has been deliberately designed in this modular way to allow it to be as flexible as possible. A system, called SU CONTROL, that is built into the framework of SNOMAN, knows about the SU interdependencies and ensures that only those SUs that are needed for the current task, are brought into play and that they are initialised in the correct order. A user could deal directly with the SNOlib library from which SNOMAN is built, combining SUs and private code in any suitable way. However, this is a risky strategy to follow unless the dependencies of the SUs are fully understood, both in the way that the higher level ones rely on the lower level ones and the way the processors couple through the data structure. So a better approach is to exploit a set of user routines that have been built into SNOMAN. These allow the user to build programs that have as much or as little of the functionality of SNOMAN as is required. They allow the casual user to concentrate on the task in hand without getting bogged down in the internal workings of SNOMAN.
There are three types of user routine:-