Underneath any application frameworks are basic data structures, conversion utilities, and routines which are used throughout. In the case of the YAAF libraries, there are serveral different collections of support routines to help with everything from data format conversion to error processing. Some of these (the error processing classes) make use of other elements of the YAAF libraries to present the error dialogs; other parts (such as the cursor routines) are completely self-contained.

Some of the routines here implement the same functionality as that found in the C++ run-time library. They are implemented here for a couple of reasons. First, not all implementations of the C++ run-time library are complete. And second, on some platforms the cost of including the full C++ run-time library is excessive executable size. Of course as time goes by, these excuses won't hold quite so much water. When this happens, the underlying support routines will rely more and more on the C++ run-time library for support.

There are seven major groups of routines, classes and macros that are described here. They are:

Cross-Platform Macros

These macros provide a YAAF developer a way to know what target platform the YAAF tools are being compiled under.

Error Manager Classes

These classes extend the 'exception' class from the C++ runtime library to provide YAAF specific error handling.

Data Utilities

A series of macros and routines which help convert from big-endian to little-endian numbers, and for converting from C style strings to Pascal style strings.

Cursor Utilities

These routines provide access to the routines for setting and changing the current mouse pointer on the screen.

Support Classes

A series of classes which provide basic string, dynamic array, and memory handle support.

Preferences

A class which provides a standard way to read and write preferences from a Macintosh preferences file, the Windows registry and a Unix configuration file.

Threads

These classes encapsulate the functionality of the Macintosh Thread Manager, the Windows multi-threaded API and the UNIX Pthreads routines.