The purpose of VRR 's kernel is to store the main data structures containing geometric objects. It performs no geometric computations directly – that is done by the GEOMLIB routines. Is uses the GEOMLIB heavily. The other modules, on which kernel does not depend, can be informed about data structure changes via the hook mechanism.
It also provides an interface for exception handling: transactions. The VRR source code contains many error checks, especially in the GEOMLIB and the kernel. To minimize the number of return value checks, we have implemented an exception handling mechanism which takes care of memory deallocation and undoing of data structure changes using the transaction logs.
The kernel consists of the following parts, described in the further sections: